docker搭建mysql主從複制
- 拉取mysql鏡像命令:docker pull mysql:5.7
1.啟動master,slave
- docker run -it -p 3306:3306 name master privileged=true -v /f/DockerServer/mysql3306/conf/conf.d:/etc/mysql/conf.d -v /f/DockerServer/mysql3306/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- docker run -it -p 3307:3306 name slave privileged=true -v /f/DockerServer/mysql3306/conf/conf.d:/etc/mysql/conf.d -v /f/DockerServer/mysql3307/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
2.進入到master修改配置
3.進入到slave修改配置
4.進入master容器
- 進入到mysql,mysql -u root -p
- show master status;
- 記錄File(mysql-bin.000001), Position(617)
5.退出到docker容器。
- 查詢master和slave的ip:
- docker inspect format=’{{.NetworkSettings.IPAddress}}’ master (127.0.0.2)
- docker inspect format=’{{.NetworkSettings.IPAddress}}’ slave (127.0.0.3)
6.進入slave容器
- 進入mysql,mysql -u root -p
- change master to master_host=‘172.17.0.2’, master_user=‘slave’, master_password=‘123456’, master_port=3306, master_log_file=‘mysql-bin.000001’, master_log_pos= 617, master_connect_retry=30;
- 字段說明
master_port:Master的端口號,指的是容器的端口號
master_user:用於數據同步的用戶
master_password:用於同步的用戶的密碼
master_log_file:指定 Slave 從哪個日志文件開始複制數據,即上文中提到的 File 字段的值
master_log_pos:從哪個 Position 開始讀,即上文中提到的 Position 字段的值
master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒
7.slave開啟主從複制
- 在Slave 中的mysql終端執行show slave status G;用於查看主從同步狀態
8.主從複制測試
- 在master創建一個test數據庫,在slave中也會生成一個test數據庫。