当前位置:首页 > IT技术 > 数据库 > 正文

1.Docker下搭建MySQL主从复制(一主一从)
2022-08-29 23:52:07

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/