Docker环境构建MySQL主从复制

前置条件:服务器已配置Docker环境

1.查询mysql镜像

docker search mysql;

 拉取镜像

docker pull mysql

 2.创建两个mysql容器

执行命令docker images; 查到到我们拉取的镜像

 执行命令创建主容器mysql-master

docker run -di --name=mysql-master -p 33308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

 创建从容器mysql-slave

docker run -di --name=mysql-slave -p 33309:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

 -p 代表端口映射,格式为 宿主机对外暴露的端口:容器运行端口 -e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码

33308与33309端口 是楼主在阿里云机器上对外暴露的端口

3.修改主容器配置

执行命令进入到Master容器内部 

docker exec -it mysql-master /bin/bash

docker容器是轻量级的嘛,所以有些操作命令是不支持的,我们还需要安装一下

yum install -y which

 查看mysql安装文件夹

which mysql

执行下面的命令查看配置文件my.cnf所在位置

/usr/bin/mysql --verbose --help|grep -A 1 'Default options'

 /etc/my.cnf是我们的配置文件 执行命令vi /etc/my.cnf (如果报错vi: command not found,执行yum install vi)

#保证唯一性
server-id=1 
#开启binlog日志并设置文件名字
log_bin=master-bin

 保存完 重启容器

docker stop mysql-master;
docker start mysql-master;

 4.修改从容器配置

进入容器

docker exec -it mysql-slave /bin/bash

修改配置文件 (假如报错vi: command not found 执行yum install vi)

vi /etc/my.cnf

把下面的配置粘贴进去

#保证唯一性
server-id=2
#开启relay日志并设置文件名字
relay_log=slave-relay

 保存 重启容器

docker stop mysql-slave;
docker start mysql-slave;

5.配置主从关系

进入主容器

docker exec -it mysql-master /bin/bash

然后执行命令 连接到mysql服务

mysql -uroot -p123456

执行命令查看master状态

show master status;

 可以看到binlog文件,还有文件中的索引位置。Binlog_Do_DB和Binlog_Ignore_DB这两个字段是表示需要记录binlog文件的库或者不需要记录binlog文件的库(即不需要同步的数据库)。暂时没有配置,就表示是针对全库记录日志。

然后在从容器中 连接到mysql服务 执行如下语句

change master to master_host='172.17.0.3',
master_user='root',
master_password='123456',
master_port=33308,
master_log_file='master-bin.000002',
master_log_pos= 154;

master_host :Master的地址

master_user master_password:用于同步数据时,用到的主库的用户、密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,根据你在主容器执行show master status;查询到什么,就配置什么。

master_log_pos:从哪个 Position 开始读,都是对应master中的值

 执行完毕后 启动slave就可以了

start slave;

  

查看从节点信息

show slave status \G;

 现在去主库建库、表,写数据,从库都会把数据同步过去了

参考博文

https://www.cnblogs.com/nijunyang/p/14990169.html

https://www.cnblogs.com/NIAN2011/p/16637719.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值