-
准备两台或多台联网的并部署了Docker的CentOS7虚拟机
这里暂且把图片里的192.168.0.101设为主服务器,192.168.0.102设为从服务器。主服务器对外暴露3307端口,从服务器对外暴露3308端口。另外一点,记得把虚拟机的防火墙都关咯! -
创建Mysql容器
# 主服务器执行这条命令
docker run -itd --name my1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# 从服务器执行这条命令
docker run -itd --name my2 -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- 修改主服务器的Mysql配置文件
Docker的mysql容器图
进入mysql容器
默认的配置文件在容器内的 /etc/mysql/my.cnf中
# 需要主动安装vim命令 先apt-get update 再 apt-get install vim
vim /etc/mysql/my.cnf
添加下面框选出来的三行,其中,server-id随便取,只要保证唯一性就好。
修改完配置文件要重启mysql
# 重启容器内的mysql
service restart mysql
# 再退出容器,重启docker中的容器
docker restart '你的mysql容器id'
登录mysql后执行sql命令
# 可以通过任何客户端连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
- 修改从服务器的Mysql配置文件
和第4步一样的步骤,注意修改my.cnf里的server-id - 配置主从复制
登录主服务器,执行命令show master status;
记下File与Position的值
再登录从服务器,执行下面一条sql命令
change master to
master_host='192.168.0.101', # 主服务器ip
master_user='root', # 主服务器的用户名
master_log_file='mysql-bin.000001', # 与上图的File值对应
master_log_pos=1365, # 与上图的Position值对应
master_port=3307, # 主服务器的对外暴露的mysql端口
master_password='123456'; # 主服务器的登录密码
再执行一条sql命令
# 开启slave
start slave;
最后检查主从复制是否开启成功,在从服务器中执行sql命令show slave status;
如果上面框选的两个属性的值都为yes,恭喜你,主从复制功能已成功开启。你可以去主服务器的mysql中新增数据库、表或记录。然后再去看看从服务器中mysql是否自动生成了新的记录。