拉取mysql鏡像mysql
docker pull mysql
準備兩個mysql配置文件sql
# 主庫配置文件my-master.cnf [mysqld] log-bin = mysql-bin server-id = 1 # 從庫配置文件my-slave.cnf [mysqld] server-id = 2
啓動兩個容器,端口配置
Host:3307,數據庫master:3306
Host:3308,數據庫slave:3306docker
docker run -d -e MYSQL_ROOT_PASSWORD=root \ --name mysql-master \ -v /root/mysql/my-master.cnf:/etc/mysql/my.cnf \ -p 3307:3306 mysql docker run -d -e MYSQL_ROOT_PASSWORD=root \ --name mysql-slave \ -v /root/mysql/my-slave.cnf:/etc/mysql/my.cnf \ -p 3308:3306 mysql
環境已準備好。shell
具體參數以下:數據庫
ipide
本機Host:172.18.134.10測試
master容器:172.17.0.2線程
slave容器:172.17.0.3code
登陸數據庫命令server
# 本機 -> master mysql -h172.18.134.10 -P3307 -uroot -proot # 本機 -> slave mysql -h172.18.134.10 -P3308 -uroot -proot
新建一個用戶專門用來同步master,
CREATE USER 'backup'@'%' IDENTIFIED BY '123456';
給backup用戶分配備份的權限
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
主庫配置完成。
查看主庫狀態:
show master status;
記住查詢結果,後面會用。
File: mysql-bin.000003
Position: 688
從庫經過IO線程鏈接master,因此須要指定master的信息,包括host, port, user, password
change master to master_host='172.17.0.2', master_port=3306, master_user='backup', master_password='123456', master_log_file='mysql-bin.000003', master_log_pos=688; start slave;
查看從庫狀態,
show slave status\G
若是輸出,
Slave_IO_State: Waiting for master to send event Master_Host: 172.17.0.2 Master_User: root Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 688 Relay_Log_File: 6b0f3668aa62-relay-bin.000002 Relay_Log_Pos: 913 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes
則說明鏈接成功。
在master上操做,更改都會顯示在slave上。