環境為centos 7.2+mysql 5.7,網上教程很多,原理也不複雜(深知自己踩的坑還不夠) 正常情況下,配置起來比較簡單。另外,根據個人感受,MySQL的複製感覺要比SQL Server的複製要清爽很多(儘管功能上可能有一些差異)。 master伺服器,首先是開啟了二進位日誌,同時設置ser ...
環境為centos 7.2+mysql 5.7,網上教程很多,原理也不複雜(深知自己踩的坑還不夠)
正常情況下,配置起來比較簡單。另外,根據個人感受,MySQL的複製感覺要比SQL Server的複製要清爽很多(儘管功能上可能有一些差異)。
master伺服器,首先是開啟了二進位日誌,同時設置server-id為一個具體的數值
1,創建複製用戶
GRANT REPLICATION SLAVE ON *.* to 'repl_test'@'120.77.147.***' identified by '123456';
2,記錄master日誌文件和日誌位置
show master status;
從庫上
1,設置主伺服器
CHANGE MASTER TO
MASTER_HOST='120.77.159.43',
MASTER_USER='repl_test',
MASTER_PASSWORD='123456',
MASTER_PORT = 8000,
MASTER_LOG_FILE='mysql-bin.000047',
MASTER_LOG_POS=3112;
2,啟動從伺服器上的複製
start slave;
show slave status 查看叢庫的狀態
數據同步測試
主伺服器上創建一個新的DB,隨即同步到從伺服器
主伺服器上創建一個表,寫入數據,也同步到從伺服器上(阿裡雲免費申請的兩台ECS雲伺服器,主從延遲很小,感覺不超過1秒)
中間遇到一點小問題,在show slave status的時候,發現Slave_IO_Running是正常啟動的,但是Slave_SQL_Running沒有啟動
Slave_IO_Running: Yes
Slave_SQL_Running: No
參考http://blog.csdn.net/jasontech/article/details/39435873這裡之後,解決
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;客戶端運行,用來跳過幾個事件,只有當同步進程出現錯誤而停止的時候才可以執行。
stop slave ;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave
行動可以改變思維方式