mysql容器的主从复制_docker 容器的mysql主从复制

一.

1.首先拉取docker镜像,我们这里使用5.7版本的mysql:

docker pull mysql:5.7

2.分别启动主从两个容器:

docker run -p 3339:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7(从)

docker run -p 3339:3306 --name mysqli -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7(主)

3.

此时可以使用Navicat等工具测试连接mysql

411e67418589b89b8df090dde7cb0c4b.png

Docker容器

一 .配置主容器(mysqli):

① 通过docker exec -it 627a2368c865 /bin/bash命令进入到Master容器内部

②    cd /etc/mysql切换到/etc/mysql目录下,然后vi my.cnf对my.cnf进行编辑。此时会报出bash: vi: command not found,需要我们在docker容器内部自行安装vim。使     用  , apt-get install vim命令安装vim

③ 会出现以下问题:

Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package vim

解决方式:执行apt-get update,然后再次执行apt-get install vim即可成功安装vim

④ 使用vim编辑my.cnf,在my.cnf中添加:

[mysqld]

## 同一局域网内注意要唯一

server-id=100## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

⑤.使用service mysql restart完成重启

需要docker start mysql-master启动容器

下一步在Master数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO'slave'@'%';

二.配置从数据库:

①  在my.cnf中添加相同配置(注意server-id改为101)

[mysqld]

## 同一局域网内注意要唯一

server-id=101## 开启二进制日志功能,可以随便取(关键)

log-bin=mysql-bin

②   重启mysql服务和docker容器,操作和配置Master(主)一致

③ 在mysqli(主容器)进入mysql,执行show master status

f94564f9fcc6531c7552c71e648fe8e1.png

④   通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip

1d8ca617a37bad3da6cda62f67e64419.png

⑤ 在mymysql(从容器)中进入 mysql,执行

(

//用户名 密码与 一(6中密码一致)

)

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;

可能报错

82206de8497f4d0ab89e163138f5db94.png

解决方式:停止从服务器

⑥ show slave status \G;

2a4836adfdbf17d5cc5d147f1fa67b7f.png

使用start slave开启主从复制过程,然后再次查询主从同步状态show slave status \G;。

240c05b75a8a7d35ed44303f070c701e.png

报错原因

网络不通

检查ip,端口

密码不对

检查是否创建用于同步的用户和用户密码是否正确

pos不对

检查Master的 Position

⑧ 使用start slave开启主从复制过程,然后再次查询主从同步状态show slave status \G;。

62f489d52079875b8b4ec20c2eb3efea.png

三. 在主服务器创建数据库,检查是否成功

9bfb92d4516f2b4bde5a16d6640f1f7f.png

091f56f306c94f3072beb6320969d14a.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值