分享mysql 5.7 docker 主從複製架構搭建教程,供大家參考,具體內容如下
環境版本:
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';
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 ...
那就成功了 ! ! !
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。