基于Docker的mysql主从复制

本文详细介绍了如何使用Docker拉取并启动mysql容器,配置master为从master切换到slave,并指导如何在master和slave上设置主从复制,包括配置文件编辑、用户权限设置和网络连接。
摘要由CSDN通过智能技术生成

目录

一、拉取mysql

 二、启动两个mysql容器

2.1 主master

2.2 从slave

三、配置master

3.1 进入master内部配置

 3.2 安装vim命令

3.3 重启mysql

3.4 创建数据同步用户(可不建,直接用root)

四、配置slave

4.1 编辑slave文件

 4.2 重启mysql

五、配置主从复制

5.1 查看master状态

5.2 配置slave 

5.3 启动或关闭主从复制


声明:已经实测通过

一、拉取mysql

docker pull mysql:5.7

 二、启动两个mysql容器

2.1 主master

docker run -p 3339:3306 --name mysql_master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

2.2 从slave

docker run -p 3340:3306 --name mysql_slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

三、配置master

3.1 进入master内部配置

通过`docker exec -it 627a2368c865 /bin/bash`命令,进入mysql内部,也可以通过`docker exec -it mysql_master /bin/bash`进入。

`cd /etc/mysql`到此目录下,然后编辑`vi my.cnf`,内容如下

[mysqld]
## 同一局域网内注意要唯一
server-id=100  
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

 3.2 安装vim命令

编辑my.cnf会遇到vi和vim命令不可用(因为容器内部没安装,需要自己手动安装),遇到如下情况就是需要安装vim的

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

3.3 重启mysql

重启mysql `service mysql restart`,重启时docker容器会关闭,需要重新启动docker容器`docker start mysql-master`

3.4 创建数据同步用户(可不建,直接用root)

进入master容器,执行如下命令

mysql -uroot -p123456
# 创建用户
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
# 授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

四、配置slave

4.1 编辑slave文件

参照3.1进入slave容器,`cd /etc/mysql`进入到此目录下,编辑`vi my.cnf`

[mysqld]
## 设置server_id,注意要唯一
server-id=101  
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin   
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin

 4.2 重启mysql

重启mysql `service mysql restart`,重启时docker容器会关闭,需要重新启动docker容器`docker start mysql_slave`

五、配置主从复制

5.1 查看master状态

根据3.1进入master容器

mysql -uroot -p123456
show master status;

查看到如下信息 

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      617 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

重点:记住File、Position内容,下文要用到 

5.2 配置slave 

mysql -u root -p
change master to master_host='129.78.272.8', master_user='slave', master_password='123456', master_port=3339, master_log_file='mysql-bin.000001', master_log_pos= 2830, master_connect_retry=30;

关键字说明

master_host:实际服务器地址

master_user:master 中 mysql 用户的账号

master_password:master 中 mysql 用户的密码

master_port:对外暴露的端口

master_log_file:5.1提到的file文件

master_log_pos:5.1提到的偏移量

此时查看slave状态Slave_IO_Running和Slave_SQL_Running都是No

show slave status \G

5.3 启动或关闭主从复制

进入slave的mysql容器内部,执行如下指令

mysql -uroot -p123456
# 开启
start slave;
# 关闭
stop slave;

此时再看slave状态,状态如下

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果不是,需要确认网络是否连通等情况

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值