MySQL 主從複製實操

毛仔發表於2018-10-12

基礎資訊

主: 192.168.0.1 root pwd1
從: 192.168.0.2 root pwd2

備份

複製 兩臺伺服器的/etc/mysql/mysql.conf.d/mysqld.cnf 到 /etc/mysql/mysql.conf.d/mysqld.cnf.bak 便於資料恢復

主伺服器配置
# bind-address           = 127.0.0.1
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log

註釋掉bind-address到127.0.0.1,允許遠端連線,開啟server-id和log二進位制檔案的註釋

mysql> show master status;

獲取mysql-bin的file資訊和position資訊 例如: mysql-bin.000001 9937

grant replication slave on *.* to 'repl'@'192.168.0.2' identified by 'replpwd';

建立從庫的登入使用者,並且授予slave許可權

從伺服器配置
server-id               = 2

replicate-do-db=buildings

開啟server-id的註釋,手動修改不同於主伺服器
我要配置的是單資料庫的複製,所以我配置了一個我需要的 replicate-do-db

change master to master_host='192.168.0.1', master_user='repl', master_password='replpwd', master_log_file='mysql-bin.000001', master_log_pos=9937;
 mysql> show slave status \G;  Slave_IO_Running 和 Slave_SQL_Running 值 都為 Yes  說明就成功了

注意,配置中,可以設定只複製哪些庫,哪些表,也可以設定忽略哪些庫和哪些表,但是 replicate-do-db和replicate-ignore-db只能存在這一種,否則不會生效

常用命令
mysql>  stop slave; // 停止複製
mysql>  reset slave; // 重置複製
mysql>  start slave; // 開啟複製
mysql>  show master status; // 顯示主庫狀態 
mysql>  show slave status\G // 顯示從庫狀態 

參考文件

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章