【docker下安装 mysql的主从复制】

系列文章目录

docker 安装mysql 的主从复制


一、下载对应的镜像,生成容器

示例:选择5.7版本,作为镜像下载

docker pull mysql:5.7

二、等待安装完成,用下载好的镜像,生成对应的容器

1.生成 主库 的容器

docker run -p 3339:3306 --name main_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
-p : 映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
-e : 置顶的环境参数
--name :  对容器命名 
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

出现如下提示,视为容器安装运行成功!
在这里插入图片描述

2.生成 从库 的容器

docker run -p 3340:3306 --name slave_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
-p : 映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
-e : 置顶的环境参数
--name :  对容器命名 
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

docker ps -a 查看当前mysql容器 ,可以看到容器的 ID
在这里插入图片描述

3.进入容器

1.docker exec -it 容器Id /bin/bash,再切换到目录:cd /etc/mysql。

2.需要安装 apt命令 和vim命令 方便编辑配置文件,apt-get update ,apt-get install vim。

记:如果安装apt 命令时,出现 apt-get: command not found ,可以换一种方法,使用 yum -y install vim 进行安装

3.安装成功后 修改配置文件 my.cnf (默认是没有的)

主库配置:
vim my.cnf
[mysqld]
## 同一局域网内注意要唯一
server-id=100
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin
从库配置:
[mysqld]
## 设置server_id,注意要唯一
server-id=101  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin

配置完成后,直接重启docker : docker restart 容器ID

4.在master数据库(主库)中创建同步用户授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。

1.进入主库容器 : docker exec -it 容器名或者id /bin/bash
2.进入主库mysql : mysql mysql -uroot -p123456
3.创建用户并授权,允许从库服务连接主库的服务
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';   'slave'@'%' : 容器名字
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
4.刷新一下 :flush privileges;

5.查询主库File和Position :show master status;

在这里插入图片描述

6.在容器外查询master_host 后面跟容器名字或者容器ID

docker inspect --format=172.17.0.2 main_mysql   IP,主库的名字,设置好之后,返回了IP

7.进入从库Slave 中进入 mysql,执行代码

change master to master_host='172.17.0.2', master_user='root', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos= 315, master_connect_retry=30; 
参数:主库的IP,主库的账号密码,映射的端口,主库的bin log文件名字,主库查询的pos,见 第五步 !

8.然后刷新一下 : flush privileges;

9.查看从库的状态 :show slave status \G;

在这里插入图片描述

这两个参数的值 为 No, 是因为从库还未开启主从服务,需要在从库开启主从服务。命令:start slave;


问题:

`Slave_SQL_Running:No  解决办法
1.程序可能在slave上进行了写操作。
2.也可能是slave机器重起后,事务回滚造成的。
一般是事务回滚造成的:
解决办法:
mysql> stop slave ;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave ; 


Slave_IO_Running:  No
1.检查 IP  POS  网管 是否正常匹配

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

付煜晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值