docker pull mysql:5.7
docker run --name mysql-master -e MYSQL_ROOT_PASSWORD=root -d -p 8880:3306 mysql:5.7
进入容器
docker exec -it ed39828ef047 /bin/sh
cd /etc/mysql
apt-get update
apt-get install vim
修改my.cnf文件
vim my.cnf
修改的内容为
[mysqld]
#修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志(必要配置)
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字
binlog-do-db=testdb
#设置logbin格式
binlog_format=STATEMENT
重启mysql服务使配置生效,重启mysql服务时会使得docker容器停止
service mysql restart
重启容器并重新进入容器内部
docker start ed39828ef047
docker exec -it ed39828ef047 /bin/sh
在容器内部连接mysql
mysql -uroot -proot
主机上建立帐户并授权 slave
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY 'root';
查询master状态,如果my.cnf文件配置失败,是不会出现该表格的。
show master status;
正确截图:
未生效截图:
把这里的File和Position记下来,等下在从机上需要使用
File: mysql-bin.000001
Position: 438
docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=root -d -p 8881:3306 mysql:5.7
进入容器
docker exec -it 36610e42c1cc /bin/sh
进入目录/etc/mysql
cd /etc/mysql
apt-get update
apt-get install vim
修改my.cnf文件
vim my.cnf
修改的内容为
[mysqld]
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay
重启mysql服务使配置生效,重启mysql服务时会使得docker容器停止
service mysql restart
重启容器并重新进入容器内部
docker start 36610e42c1cc
docker exec -it 36610e42c1cc /bin/sh
在容器内部连接mysql
mysql -uroot -proot
配置主机信息
CHANGE MASTER TO MASTER_HOST='10.101.101.111',
MASTER_USER='slave',
MASTER_PASSWORD='root',
MASTER_PORT=8880,
MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=438;
解释:
MASTER_HOST=主机的ip地址
MASTER_USER=授权账户
MASTER_PASSWORD=密码
MASTER_PORT=映射端口
MASTER_LOG_FILE=之前的File
MASTER_LOG_POS=之前的Position
注:如果在这里出现错误,先重置。执行完下面两条命令。
stop slave;
reset master;
启动从机
start slave;
查看服务器状态
show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
注意:本文配置的主从复制数据库为“testdb”,其他的不会同步,需要重新配置。
推荐文章:
史上最详细Docker部署Mysql主从复制,带每一步骤图!!!
windows环境下docker搭建mysql的主从复制