Docker配置mysql互為主從
配置準備
兩臺機器
兩臺機器:A(193.168.10.101) B(193.168.10.102) 做好ssh免密登入
mysql大版本需要一致,小版本可忽略
並且兩臺機器已經安裝好了docker
yum install docker
下載mysql映象
docker pull mysql:5.6.31
mysql容器準備
兩臺機器分別啟動mysql容器
[root@bigdata101 ~]# docker run -di -p 33305:3306 --name mysql_101 -v /usr/local/mysql_docker/101/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.31 [root@bigdata102 ~]# docker run -di -p 33305:3306 --name mysql_102 -v /usr/local/mysql_docker/102/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.31
檢視容器是否啟動
[root@bigdata101 ~]# docker ps
分別進入兩個容器,安裝vim,並且修改配置檔案
[root@bigdata101 ~]# docker exec -it mysql_101 /bin/bash root@63485bfccaa1:/# apt-get update root@63485bfccaa1:/# apt-get install vim root@63485bfccaa1:/# vi /etc/mysql/my.cnf #在配置檔案最後新增 server-id=1 auto_increment_offset=1 auto_increment_increment=2 skip-slave-start log-slave-updates=true
[root@bigdata102 ~]# docker exec -it mysql_102 /bin/bash root@57ce31a494ad:/# apt-get update root@57ce31a494ad:/# apt-get install vim root@57ce31a494ad:/# vi /etc/mysql/my.cnf #在配置檔案最後新增 server-id=2 auto_increment_offset=2 auto_increment_increment=2 skip-slave-start log-slave-updates=true
分別重啟mysql容器
[root@bigdata101 ~]# docker restart mysql_101 [root@bigdata102 ~]# docker restart mysql_102
容器配置
A(193.168.10.101) 上的容器配置
給主機B 賦予mysql許可權
grant all on *.* to 'slave'@193.168.10.102 identified by '123456';
初始化bin-log日誌
reset master; show master status;
B(193.168.10.102) 上的容器配置
給主機A 賦予mysql許可權
grant all on *.* to 'slave'@193.168.10.101 identified by '123456';
初始化bin-log日誌
reset master; show master status;
容器同步配置
在主機A的容器上重新登入 mysql後執行:
change master to master_host='193.168.10.102',master_port=33305,master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
這裡的master_host是指主機B的ip地址,master_port是B上的mysql容器啟動時賦予的埠,master_uesr是執行同步操作的使用者名稱,master_password是執行同步的使用者密碼,master_log_file是主機B的bin-log日誌,master_log_pos是從bin-log日誌開始同步的位置。
然後開啟同步 執行:
start slave;
檢視是否成功:
show slave status\G;
在主機B的容器上重新登入 mysql執行:
change master to master_host='193.168.10.101',master_port=33305,master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=120;
start slave;
show slave status\G;