docker部署mysql AB复制-详细步骤

docker部署mysql AB复制-详细步骤

1、安装docker
参考链接:https://blog.csdn.net/qq_50263172/article/details/109640641?spm=1001.2014.3001.5501

2、这一步可执行也可已不执行
下载mysql镜像 ps(其实不下载也行,直接创建容器时,自动下载了)
[root@localhost ~]# docker pull mysql:5.7

3、创建mysql的容器
创建二个mysql的容器 一个为master节点 一个为slave节点
一、创建master节点
[root@localhost ~]# docker run -d -p 3366:3306 --name master --privileges=true -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker run 创建容器固定语句
-d 后台运行容器,并返回容器id
-p 映射主机端口3366到容器端口3306
–name 为容器指定名字,这里我命名的为’master’
–privileges=true 提升权限,让容器有管理员权限(如不在容器内下载软件,可以不用加这条命令)
-e 设置环境变量,这里是指定mysql 账号root密码为root
二、创建slave节点
[root@localhost ~]# docker run -d -p 3377:3306 --name slave --privileges=true -e MYSQL_ROOT_PASSWORD=root mysql:5.7
slave节点要更改映射端口,不能和master重复,容器指定名字为slave

4、配置master节点
进入master节点容器
[root@localhost ~]# docker exec -it master /bin/bash
一、修改/etc/mysql/my.cof文件
root@f51beedf751c:/# echo -e "[mysqld]\nserver-id=100\nlog-bin=mysql-bin" >> etc/mysql/my.cnf
由于容器内没有vi vim等命令,直接使用echo添加
root@f51beedf751c:/# cat /etc/mysql/my.cof
[mysqld]
server-id=100 同一局域网内注意要唯一
log-bin=mysql-bin 开启二进制日志功能
二、因为上面更修改了my.com文件所已要刷新mysql
root@f51beedf751c:/# service mysql restart
三、重启master容器时会退出,我们需要重新启动一次master容器
[root@localhost ~]# docker start master
四、再次进入master节点容器
[root@localhost ~]# docker exec -it master /bin/bash
五、在master节点上创建用户并授予用户slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
首先进入mysql
root@f51beedf751c:/# mysql -uroot -proot
mysql账号密码为创建容器时 -e参数设置
mysql> CREATE USER 'slave'@'%' IDENTIFIED BY 'root'; 创建一个用户为slave密码为root
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';设置slave用的的权限
mysql> flush privileges; 刷新数据库
六、查看master节点的binlog日志文件
mysql> show master status;
在这里插入图片描述
File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值也会变化。

5、配置slave节点
一、进入slave节点容器
[root@localhost ~]# docker exec -it slave /bin/bash
二、修改/etc/mysql/my.cof文件
root@f51beedf751c:/# echo -e "[mysqld]\nserver-id=101\nlog-bin=mysql-slave-bin\nrelay_log=edu-mysql-relay-bin" >> /etc/mysql/my.cnf
查看my.cof内容
root@f51beedf751c:/# cat /etc/mysql/my.cof
[mysqld]
server-id=101 唯一值
log-bin=mysql-slave-bin 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
relay_log=edu-mysql-relay-bin 开启中继日志

三、重启slave节点
root@f51beedf751c:/# service mysql restart
四、重启slave容器时会退出,我们需要重新启动一次slave容器
[root@localhost ~]# docker start slave
五、在次进入slave节点容器
[root@localhost ~]# docker exec -it slave /bin/bash
六、进入mysql连接master
root@f51beedf751c:/# mysql -uroot -proot
mysql> change master to master_host='172.17.0.2', master_user='slave', master_password='root', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 0, master_connect_retry=30;
ps:
master_host 是指Master的地址,指的是容器的独立ip,可以通过下面命令查看,注意下面这条命令不要在docker容器里查询,
[root@localhost ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master
master_port 容器的端口号,指的是容器内部运行mysql的端口号
master_user 是我们在master中配置的用户主从复制的用户名
master_log_file 是上一步中从master中查出File字段的值
master_log_pos 是复制起始点,如果为0,为从头复制
七、启动slave
mysql> start slave;
八、查看slave的主从状态
mysql> show slave status\G;
在这里插入图片描述
只要lo线程和sql线程显示为yes 就表示主从搭建成功了,后面自行测试。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值