docker配置mysql主从

准备:一台装有docker的虚拟机或者服务器

1.拉取mysql镜像:docker pull mysql:5.7

2.查看镜像:docker images

3.启动两个mysql容器,分别设置一个宿主机对外和3306端口的映射端口,即外部访问内部容器mysql 3306时暴露的端口

主库:

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

从库:

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

docker ps -a 查看当前mysql容器

4.使用Navicat工具创建两个连接,分别为master和slave,这里端口就是之前对外暴露的端口

5.进入容器:docker exec -it 容器Id /bin/bash,再切目录:cd /etc/mysql

6.需要编辑该目录下的my.cnf文件,这里如果没有vim命令的话需要先安装vim命令(主从两个容器都需要这样安装)。

        a.安装vim命令:apt-get update

        

        b.更新完成后再次安装:apt-get install vim

7.完成之后,需要更改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  

需要重启一下mysql服务,service mysql restart,重启会使得docker容器停止,所以还需要重新启动docker容器,docker start 容器名或者容器id

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

        a.进入容器 docker exec -it 容器名或者id /bin/bash

        b.进入mysql mysql -uroot -p123456(密码这里和p之间不能有空格)

        c.创建用户并授权,允许从库服务连接主库的服务

        CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
        GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

        d.刷新一下,flush privileges;

9.查询主库File和Position,  show master status;

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

docker inspect --format='{{.NetworkSettings.IPAddress}} main_mysql

 11.进入从库Slave 中进入 mysql,执行
change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos= 617, master_connect_retry=30;

然后刷新一下

flush privileges;

12.使用show slave status \G 查看从库的状态

        a.如果显示Empty set (0.00 sec)的话,就要检查配置,重启主从库和容器

        b.如果显示Slave_IO_Running和Slave_SQL_Running都为No的话,

        

        是因为从库还未开启主从服务,需要在从库开启主从服务。命令:start slave;

        

13.测试,在主库中新建一个数据库,发现从库也有了

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值