Docker实现mysql主从同步

服务器:centos7,docker19.03.8,root账户

1.下载MySQL镜像

docker pull mysql:5.7

如果镜像下载太慢

vim /etc/docker/daemon.json

按 “i” 键进入编辑模式

文件内容:

{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}

按 “Esc” 键退出编辑模式

输入 :wq 确定保存

systemctl restart docker

2.创建主服务器以及从服务器的容器

注意:把主从服务器搭在同一个服务器上只是为了测试

创建自定义网络

docker network create --subnet=172.10.0.0/24 docker-br0

创建一个shell脚本,内容如下:

主服务器创建脚本:

#!/bin/bash

docker run --name master-db \

--net docker-br0 \

--ip 172.10.0.2 \

-p 33061:3306 \

-e MYSQL_ROOT_PASSWORD="password" \

-d mysql:5.7.29 \

--log-bin=mysql-bin \

--server-id=1

从服务器创建脚本:

#!/bin/bash

docker run --name slave-db \

--net  docker-br0 \

--ip 172.10.0.3 \

-p 33062:3306 \

-e MYSQL_ROOT_PASSWORD="password" \

-d mysql:5.7.29 \

--log-bin=mysql-bin \

--server-id=2

运行脚本

chmod +x 脚本名称

./脚本名称

查看容器是否正常运作

docker  ps -a

3.MySQL主从配置

1.进入master-db容器,输入密码mysql进入到mysql环境

docker exec -it master-db bash

mysql -uroot -p

创建从服务器连接账户

mysql>GRANT REPLICATION SLAVE ON *.* to 'user'@'%' IDENTIFIED BY 'mysql';

查看主服务器数据库状态

mysql>show master status;

记录File 的值和Position的值

2.进入slave-db容器,输入密码mysql进入到mysql环境

docker exec -it slave-db bash

mysql -uroot -p

配置连接主服务器

mysql>change master to

master_host='172.10.0.2',         # 主服务器IP

master_user='user',            # 连接主服务器的账户名

master_log_file='mysql-bin.000003',         # 主服务器File的值 

master_log_pos=000,         # 主服务器Position的值

master_port=3306,         # 主服务器mysql服务的端口号

master_password='mysql';         # 连接主服务器的账户名所对应的密码

mysql> start slave;         #启动从服务器复制功能

如果在输入过程中不小心配置错,输入:

mysql> stop slave; 

然后重新录入一遍。

3.检查主从连接状态(在从服务器中输入命令)

mysql> show slave status\G

其中

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

说明连接成功,为 No 或 Connect 说明没有连接上

其中

Last_IO_Errno: 2003

Last_IO_Error: xxxxxx

可以确认大致原因

4.Docker搭建mycat读写分离

你可能感兴趣的:(Docker实现mysql主从同步)