使用Docker搭建Mysql5.7主从复制,有手就行

搭建主数据库

1、拉取镜像

docker pull mysql:5.7

2、运行主数据库

docker run -p 12345:3306 --name mysql_master \
-v /docker/mysql_master/conf:/etc/mysql/conf.d  \
-v /docker/mysql_master/logs:/logs \
-v /docker/mysql_master/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

3、查看mysql运行没有有报错

docker logs mysql_master

在这里插入图片描述4、创建my.cnf文件
去配置文件所在目录

cd /docker/mysql_master/conf

创建配置文件,因为这个目录映射到容器内的,所以说没必要进入容器配置,并且mysql容器并没有vim/vi编辑器,用的话还需要去安装,非常麻烦

vim my.cnf

粘贴以下内容

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

5、进入mysql容器

docker exec -it mysql_master bash

6、重启mysql服务,重启之后mysql容器会被停掉

service mysql restart

7、启动mysql容器

docker start mysql_master

8、校验mysql能否搭建为主从复制

# 进入mysql容器
 docker exec -it mysql_master bash
# 连接数据库
mysql -uroot -p123456
# 查看skip_networking状态
show variables like '%skip_networking%';

状态为OFF则ok
在这里插入图片描述9、创建一个普通用户,专门用来做数据同步操作

# 创建用户
CREATE USER 'repl'@'%' identified by '123456';
# 授权
GRANT REPLICATION SLAVE ON *.*  TO  'repl'@'%';

搭建从数据库

可以在别的机器搭建也可以在同一台机器搭建,我是在另一台服务器搭从数据库,操作基本和主数据库一样。
1、拉取镜像
2、运行镜像,端口 1024~65535之间 随便改,只要没被使用过就行

docker run -p 12345:3306 --name mysql_slave \
-v /docker/mysql_slave/conf:/etc/mysql/conf.d  \
-v /docker/mysql_slave/logs:/logs \
-v /docker/mysql_slave/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

3、创建配置文件

# 进入配置文件目录
cd /docker/mysql_slave/conf
# 创建配置文件
vim my.cnf

复制一下内容

[mysqld]
server-id=2

4、重启mysql容器,使配置生效

docker restart mysql_slave

5、配置主服务器信息

# 进入mysql容器
docker exec -it  mysql_slave bash
# 连接数据库
mysql -uroot -p123456
# 配置主数据的ip,用户名、密码,需要注意的是主数据库的端口号,如果发现端口写错了,只要stop slave,修改端口再运行这条指令
CHANGE MASTER TO MASTER_HOST='118.31.8.238', MASTER_PORT=12345,MASTER_USER='repl',MASTER_PASSWORD='123456';
# 启动salve
start slave;

出现下面画面表示成功,如果提示叫你指定服务id,则配置没生效,需要重新创建配置文件并重启
在这里插入图片描述如果是在同一台机器上搭建的话,需要查看主数据库的ip

docker inspect --format={{.NetworkSettings.IPAddress}}’ mysql_master 

可以看到主数据库的ip为172.17.0.3
在这里插入图片描述6、查看同步状态

show slave status \G;

没有看到啥ERROR显示,表示连接主库成功
在这里插入图片描述

Navicat连接测试

使用navicat分别连接主数据库、从数据库(注意:如果使用云服务器,记得安全组那边开放端口)
在这里插入图片描述
测试在主数据库创建数据库,从数据库会不会同步,可以看到同步成功
在这里插入图片描述
测试在主数据库删除数据库,同步成功
在这里插入图片描述
测试在主数据库表添加数据,同步成功
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值