容器部署主mysql
docker run -p 3306:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 主数
据库。
修改my.cnf文件
Docker cp /当前文件 容器id:/路径 将宿主机的文件拷贝到容器里路径里
修改my.cnf文件:路径:/etc/mysql/my.cnf
添加内容
开启二进制日志功能
log-bin=mysql-bin
同一局域网内注意要唯一
server-id=100
修改完后 进行容器docker exec -it 容器id /bin/bash
命令重启mysql: service mysql restart
并且重启容器mysql:dokcer restart 容器id
创建用来同步的用户并添加俩个权限
进入容器id ,然后进入mysql执行命令台或使用工具界面连接mysql。
输入命令:
mysql> CREATE USER ‘slave’@’%’ IDENTIFIED BY ‘123456’;
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘slave’@’%’;
创建用来同步的用户,并且给用户添加俩个权限 用来主从库之间的同步。
记录file 与postion 内容
mysql> show master status; 查看 master的状态
File | Position
mysql-bin.000001 | 609
注意这个File下面的数字是会变的 重启后会改变,还有position也是会变的,每次显示是不一样的。
容器部署从mysql
docker run -p 3307:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 从数据库
开启二进制日志功能,以备Slave作为其它Slave的Master时使用log-bin=mysql-slave-bin
同一局域网内注意要唯一
server-id=101
relay_log配置中继日志
relay_log=edu-mysql-relay-bin
同样要重启mysql.
设置从主数据库的连接主的配置
进入从数据库
mysql> change master to master_host=‘master容器的ip’, master_user=‘master容器中创建的用于主从同步的用户’, master_password=‘账户的密码’, master_port=3306, master_log_file=‘master下查看的file’, master_log_pos= Position文件位置, master_connect_retry=30;
然后执行start slave;
Show slave status;查看这两个是否yes
Slave_IO_Running和Slave_SQL_Running都是YES
Stop slave; 没有显示yes,就先停止,再检查原因,可以看一下日志 docker logs 容器 -f