Docker下搭建MySQL主从复制(一主一从)
实现Mycat读写分离
1、通过docker exec -it 627a2368c865 /bin/bash
命令进入到Master容器内部
2、cd /etc/mysql
切换到/etc/mysql目录下,然后vi my.cnf
对my.cnf进行编辑
此时会报出
bash: vi: command not found
,需要我们在docker容器内部自行安装vim。执行
apt-get update
,然后再次执行apt-get install vim
即可成功安装vim
3、使用vim编辑my.cnf,在my.cnf下添加如下配置:
[mysqld]
server-id=1 #主服务器唯一ID
log-bin=mysql-bin #启用二进制日志
binlog-ignore-db=mysql # 设置不要复制的数据库(可设置多个)
binlog-ignore-db=information_schema
binlog-do-db=testdb #设置需要复制的数据库
binlog_format=STATEMENT #设置logbin格式
4、同理,编辑slave从机的my.cnf文件,添加如下:
[mysqld]
server-id=2 #从服务器唯一ID
relay-log=mysql-relay #启用中继日志
5、注意,由于MySQL通过如下命令启动,所以可以直接在docker主机的/usr/local/docker/mysql/conf位置直接编写my.cnf文件同样生效,则不需要在容器内安装vim等;
docker run -p 3306:3306 --name mysql1 -v /usr/local/docker/mysql/conf1:/etc/mysql -v /usr/local/docker/mysql/logs1:/var/log/mysql -v /usr/local/docker/mysql/data1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
6、重启主从 mysql的容器,
7、验证主机从机都关闭防火墙
8、在主机上建立帐户并授权 slave
#在主机MySQL里执行授权命令
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';
# 查询master的状态
show master status;
9、查询主机状态,找到如下File和Position的值;
10、在从机上配置需要复制的主机
#复制主机的命令
CHANGE MASTER TO MASTER_HOST='主机的IP地址',
MASTER_USER='slave',
MASTER_PASSWORD='123123',
MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值;
#启动从服务器复制功能
start slave;
#查看从服务器状态
show slave status;
注意:如果需要停用slave,命令为:stop slave;
11、查看从机状态,如果这个两个参数为Yes,则表示配置成功。
12、然后在主机新建库、新建表、insert 记录,从机复制测试。
13、主从复制排错:
14、如何重新配置主从
stop slave;
reset master;
本文摘自 :https://www.cnblogs.com/