基於Docker的MYSQL 配置主從複製
基於Docker的MYSQL 配置主從複製
注意:主從複製是通過mysql的日誌實現的,這裡如果主庫中已經有了一部分資料在進行從庫配置的時候要先手動把這一部分舊的資料匯入進來
Master(主) 配置
master(主) 修改 /etc/mysql/my.cnf
[mysqld]
## 同一區域網內注意要唯一
server-id=100
## 開啟二進位制日誌功能,可以隨便取(關鍵)
log-bin=mysql-bin
master 新增 slave使用者,並授於REPLICATION SLAVE
許可權、REPLICATION CLIENT
許可權
CREATE USER 'slave'@'%' IDENTIFIED BY '1234'; GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
通過 docker restart <CONTAINER ID>
重啟master容器
進入master,使用show master status;
檢視File、Position 供下面從庫配置時使用
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 107 | | | +------------------+----------+--------------+------------------+
Slave(從) 配置
slave(從) 修改 /etc/mysql/my.cnf
server-id=101
## 開啟二進位制日誌功能,以備Slave作為其它Slave的Master時使用
log-bin=mysql-slave-bin
## relay_log配置中繼日誌
relay_log=edu-mysql-relay-bin
slave連線master相關的資訊,注意master庫先不做修改,否則File和Position的值會發送狀態變化,當master中的File和Position與master_log_file、master_log_pos不一致時修改一致就可
change master to master_host='172.17.0.3', master_user='slave', master_password='1234', master_port=3306, master_log_file='mysql-bin.000004', master_log_pos=107, master_connect_retry=30;
這個時候通過show slave status \G;
發現SlaveIORunning 和 SlaveSQLRunning 都是No。需要通過start slave
來開啟主從複製。如果開啟的過程中報錯可以先使用stop slave
來停止複製,再通過reset slave
來重置一下slave相關的配置,最後再通過start slave
來開啟主從複製。
核查:在master中通過show slave hosts;
來檢視從庫的節點
參考文章:
https://www.cnblogs.com/songwenjie/p/9371422.html
https://blog.csdn.net/lzj0470/article/details/42713463
https://blog.csdn.net/xiao90713/article/details/82563764