1- 兩個mysql服務器
主(master): 騰訊雲mysql version: 5.7.18
從(slave): 本地虛擬機mysql version: 5.7.21
2-配置master
1. 創建用戶:
CREATE USER '用戶名'@'%' IDENTIFIED BY '密碼';
2. 賦予權限:
GRANT REPLICATION SLAVE ON *.* TO '用戶名'@'%' identified by '密碼';
3 導出所有數據(該命令在不用進入mysql)
mysqldump -h ip -P 端口 -uroot -p'密碼' --set-gtid-purged=OFF --all-databases >文件名.sql
3-配置slave
1.數據導入從庫:
mysql -uroot -p‘密碼’ < 文件名.sql
2.從庫指向主庫:
CHANGE MASTER TO MASTER_HOST = '主庫IP', MASTER_USER = '同步用戶', MASTER_PASSWORD = '主庫密碼', MASTER_PORT = 主庫端口, MASTER_LOG_FILE='主庫binlog', MASTER_LOG_POS=主庫pos點;
注意: MASTER_LOG_FILE和MASTER_LOG_POS 的值在2-3導出的文件中查找,
或者: 執行完2-3命令, 在master數據庫, mysql的help_topic表中查找
3: 開啓從庫的GTID(注意順序):
set global gtid_mode='OFF_PERMISSIVE';
set global gtid_mode='ON_PERMISSIVE';
set global enforce_gtid_consistency=ON;
set global gtid_mode='ON'
6、啓動從庫
start slave;
4-查看主從狀態
master正常狀態:
slave正常狀態:
5-我在配置過程中出現的bug: Slave_IO_Running:NO, 查看slave的mysql錯誤日誌
1: Slave I/O for channel ‘’: The replication receiver thread cannot start because the master has GTID_MODE = ON and this server has GTID_MODE = OFF. Error_code: 1593
對slave進行操作:
執行:
show global variables like 'gtid_mode';
發現
gtid_mode = off
需要重新執行:
stop slave;
set global gtid_mode='OFF_PERMISSIVE';
set global gtid_mode='ON_PERMISSIVE';
set global gtid_mode='ON' ;
start slave;
2:緊接着又出現: Slave I/O for channel ‘’: Got fatal error 1236 from master when reading data from binary log: ‘Could not find first log file name in binary log index file’, Error_code: 1236
master上執行2個sql
flush logs;
show master status\G;
slave執行3個sql
stop slave;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=190; (這兩個變量的值來源於master)
start slave;