基于Docker搭建MySQL实现主从复制

一、系统环境说明:

     两个同样配置环境的linux服务,每台服务器都安装有docker服务,并且通过docker 安装了mysql镜像。

    linux系统: centos7.2 64 位

    主master:192.168.239.130

    从slave :192.168.239.131

    关于docker 安装mysql,请直接参考: 《docker 安装mysql》

二、实现目标:

    在docker环境下,通过修改mysql配置,实现mysql的主从复制,即:mater上的数据变化后,会直接影slave的数据。

三、实现步骤:

  步骤1: 启动mysql , 两个服务器执行同样的操作。

    使用docker 启动mysql,同时开放防火墙的3306端口

docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d hub.c.163.com/library/mysql

  开放3306端口:

[root@VM_0_17_centos ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@VM_0_17_centos ~]# firewall-cmd --reload

  开启后,可以使用Navicat工具,检查是否连接成功。

  步骤二: 创建master的复制账号,在Navicat下执行

GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup';
show grants for 'backup'@'%';

  

步骤三: 修改mysql的配置,先从master开始

由于docker下没有vim工具,这里直接使用docker cp命令,将mysql配置文件copy到主机,进行修改后再进行替换。

[root@192 mysql]# docker cp mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/mysql/mysqld.cnf

在配置文件中最后增加:

log-bin=mysql-bin
server-id=1

(注意:server-id 一定不能和slave重复,确保每个mysql唯一)

修改后,将配置文件替换到docker中

[root@192 mysql]# docker cp /usr/local/mysql/mysqld.cnf mysql:/etc/mysql/mysql.conf.d/mysqld.cnf

 重启mysql服务,让配置生效:

docker restart mysql

 从服务器按照上述操作,也操作一遍,注意serverid 不要和master重复。

步骤四:配置主从复制

主从复制是实现slave复制master上的数据,所以配置是在slave服务器中进行。

使用Navicat连接slave后新建查询,执行以下SQL

CHANGE MASTER TO 
MASTER_HOST='192.168.239.130',
MASTER_PORT=3306,
MASTER_USER='backup',
MASTER_PASSWORD='backup';

START SLAVE;

MASTER_HOST 填Navicat连接配置中的ip应该就可以

MASTER_PORT 主容器的端口

MASTER_USER 同步账号的用户名

MASTER_PASSWORD 同步账号的密码

检查是否配置成功:

Navicat下执行:show slave status;

如果两个都是Yes,则基本配置完成。

如果遇到“slave have equal MySQL Server UUIDs”问题,则是由于master 和 slave 有同样的uuid, 除了上述的server-id不同之外,uuId也要求不同,所以操作就是更改slave的UUID。

[root@192 mysql]# docker cp mysql:/var/lib/mysql/auto.cnf  /usr/local/mysql/auto.cnf

更换UUID ,可以在navicat下执行:select uuid(),生产一个新的uuid,然后再替换。

[root@192 mysql]# docker cp /usr/local/mysql/auto.cnf mysql:/var/lib/mysql/auto.cnf

配置后,重启mysql:  docker restart mysql, 重启后再按照第四步再操作一次。

步骤五:测试主从复制

使用Navicat进行测试,在master中插入一条数据,则在slave中能够同样查看到该数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值