99网
您的当前位置:首页使用Docker搭建Mysql5.7主从复制,有手就行

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

来源:99网

搭建主数据库

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

cd /docker/mysql_master/conf
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

# 创建用户
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,则配置没生效,需要重新创建配置文件并重启

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

可以看到主数据库的ip为172.17.0.3

show slave status \G;

没有看到啥ERROR显示,表示连接主库成功

Navicat连接测试

使用navicat分别连接主数据库、从数据库(注意:如果使用云服务器,记得安全组那边开放端口)

因篇幅问题不能全部显示,请点此查看更多更全内容