配置准备
两台机器
两台机器: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 statusG;
在主机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 statusG;
此文大部分配置与 Linux下Mysql数据库互为主从的配置过程 基本一致,只是本文是基于docker的配置,所以略作修改,如有细节问题不清楚,可参考 Linux下Mysql数据库互为主从的配置过程