MySql主從復制配置
主機配置
server-id=1
#開啟binlog日志
log-bin=mysql-bin
#忽略的庫
binlog-ignore-db=mysql
#復制的庫
binlog-do-db=test
#binlog格式:ROW(行模式,記錄所有變動的行,存入binlog,缺點:當遇到批量修改的sql時,容易導致日志sql過多)
# STATEMENT(記錄每條修改的SQL,存入binlog,缺點:當遇到now()這些函數時,會導致主從出現數據誤差)
# MIXED(實現ROW和STATMENT切換,缺點:無法識別@@的系統變量,比如@@hostname)
binlog-format=STATEMENT
從機配置
server-id = 2
#開啟relay log
relay-log = mysql-relay
重啟兩個MySQL
- systemctl restart mysql或者systemctl restart mysqld(根據具體安裝情況)
- systemctl status mysqld 查看是否重啟成功
登錄主庫,創建綁定賬號
- 登錄:mysql -uroot -p
- 創建主從復制賬號():GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';
- 如果上面異常則這樣分開執行:create user 'slave'@'%' IDENTIFIED BY '123456'; GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
- 查看主庫狀態:show master status;
![]()
-
記錄 File和Position的值
登錄從庫,配置主從綁定關系
- 登錄:mysql -uroot -p
- 復制下面的命令,整體執行;設置從庫讀取主庫的服務器配置,分別為:主機IP、賬號、密碼、MASTER_LOG_FILE是上面查詢的File,MASTER_LOG_POS是上面查詢的Position
CHANGE MASTER TO MASTER_HOST="192.168.12.223",
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=438;
- 啟動從庫復制:start slave;
- 查看從庫復制狀態:show slave status\G;
- 如下圖所示,證明啟動成功
![]()
其他操作命令:
-
停止主從復制:stop slave;
- 重置主機配置:reset master;
遇見的異常:
- 配置好my.conf啟動成功后登錄時異常:[ERROR] unknown variable 'server-id=1'
將新增的所有主從配置往上移就解決了
- 執行重啟命令systemctl restart mysqld;時異常:Failed to restart mysqld.service: Unit not found
MySQL在安裝時沒有創建名為mysqld的服務,cd /etc/init.d查看mysql映射的服務名。

我這里是mysql,所以修改重啟命令為:systemctl restart mysql
- 在從庫設置主庫配置時異常:ERROR 3021 (HY000): This operation cannot be performed with a running slave io thread; run STOP SLAVE IO_THREAD FOR CHANNEL '' first.
這是因為從庫已經啟動了主從復制,先執行STOP SLAVE;停止主從復制,再執行配置即可
-
MySQL8.0在從庫設置主庫配置時異常:Last_IO_Error: error connecting to master 'slave@111.11.11.111:3306' - retry-time: 60 retries: 18 message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.
修改主庫slave賬號的密碼加密方式:alter user 'slave'@'%' identified with mysql_native_password by '123456';



浙公網安備 33010602011771號