mysql 5.7 docker 主從復制架構搭建,mysqldocker
環境版本:
MySQL : 5.7.13
Docker : 1.11.2
CentOS : 7.1
1.先在兩個物理機上分別安裝兩個MySQL.命令如下
docker pull mysql:5.7.13
docker run --name anuo-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qaz.00JK -d mysql:5.7.13
2.在主庫上創建一個復制賬戶
GRANT REPLICATION SLAVE ON *.* TO 'rep1'@'192.168.2.103' IDENTIFIED BY 'qaz.00JK';
復制賬戶為: rep1
指定從庫的IP必須為: 192.168.2.103
復制密碼為: qaz.00JK
3.修改主庫的配置文件 (麻煩,應該有更方便的修改方式)
3.1先從docker拷貝配置文件到主機/root 目錄:
docker cp anuo-mysql:/etc/mysql/my.cnf /root
3.2在主機打開 my.cnf , 在 [mysqld] 節點最後加上
log-bin=mysql-bin
server-id=1
3.3 再把此文件上傳到docker mysql 裡面覆蓋
docker cp /root/my.cnf anuo-mysql:/etc/mysql/my.cnf
3.4 重啟 mysql 的docker , 讓配置生效
docker restart anuo-mysql
4. 修改從庫的配置文件
跟第三步一樣, 唯一不同是
server-id=2
5. 開始備份, 在主庫執行以下命令, 讓主庫所有表置於只讀不能寫的狀態, 這樣達到主從庫數據一致性
FLUSH TABLES WITH READ LOCK;
6. 將主庫的數據庫備份在從庫還原
用navicat for mysql 很方便操作
7. 從庫還原後, 釋放主庫的讀鎖, 這樣主庫恢復寫權限
unlock tables;
8.配置從庫連接主庫, 在從庫上執行
CHANGE MASTER TO
MASTER_HOST='192.168.2.108',
MASTER_PORT=3306,
MASTER_USER='rep1',
MASTER_PASSWORD='qaz.00JK',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=898;
最後兩項
MASTER_LOG_FILE 和 MASTER_LOG_POS
在主庫執行 : SHOW MASTER STATUS; 命令可以取得
對應的字段是 File 和 Position
9. 在從庫啟動 slave 線程開始同步
START SLAVE;
10.在從庫 查看同步狀態
show slave status;
如果看到 Slave_Io_State 字段有 :
Waiting for master to send event ...
那就成功了 ! ! !