运维随录实战(14)之docker搭建mysql主从集群(Replication))

1, 从官方景镜像中拉取mysql镜像:

docker pull mysql:8.0.24 --platform linux/x86_64

2, 创建master和slave容器:

在创建之前先设置网段

docker network create --subnet=172.20.0.0/24 soil_network

master:

docker run -d -p 3306:3306 --name mysql-master --net soil_network --ip 172.20.0.2 -e MYSQL_ROOT_PASSWORD=12345678 mysql:8.0.24 --platform linux/x86_64

slave:

docker run -d -p 3307:3306 --name mysql-slave --net soil_network --ip 172.20.0.3 -e MYSQL_ROOT_PASSWORD=12345678 mysql:8.0.24 --platform linux/x86_64

3, 编写master配置文件:

进入master容器内:

docker exec -it mysql-master /bin/bash

安装vim等相关命令:

apt-get update(如果执行报错,需要执行以下命令:

报错: Err:1 Index of /232905/apt/debian buster InRelease

执行: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 参照: W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: (签名失败)_bionic inrelease' is not signed.-CSDN博客)

apt-get install vim

编写my.cnf:

vim /etc/mysql/my.cnf

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

进入到master的mysql客户端:

mysql -u root -p 然后输入密码: 12345678

创建一个slave用户可供slave登录并操作的用户:

CREATE USER 'slave'@'%' IDENTIFIED WITH 'mysql_native_password' BY '12345678';
#给slave账号添加复制权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
#当MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令
FLUSH PRIVILEGES;

执行完成之后重启master容器,重启完成之后再次进入mysql客户端中查看master状态

docker exec -it mysql-master /bin/bash
mysql -u root -p
#查看master状态
show master status;

4, 编写slave的配置文件:

进入slave容器: docker exec -it mysql-slave /bin/bash

安装vim等相关命令:

apt-get update

(如果执行报错,需要执行以下命令:

报错: Err:1 Index of /232905/apt/debian buster InRelease

执行: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29 参照: W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: (签名失败)_bionic inrelease' is not signed.-CSDN博客)

apt-get install vim

编写my.cnf:

vim /etc/mysql/my.cnf

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

进入到mysql客户端开启主从复制:

#链接Master(主)和Slave(从)
change master to master_host='172.20.0.2',master_user='slave',master_password='12345678',master_port=3306, master_log_file='mysql-bin.000002', master_log_pos=156, master_connect_retry=30;
#开启主从复制
start slave;

重启一下slave容器,然后再次进入slave容器中的mysql客户端。在客户端中我们执行 show slave status \G; 查看主从同步状态。

最后就可以连接主从mysql了,在主库上新建一个库或表,从库也会自动更新.

参照:Docker搭建Mysql主从复制(单主单从) - 知乎

其他:

下载安装ping命令、ifconfig命令:

进入容器测试ifconfig  ping 没有-------->>很尴尬

apt-get install net-tools

###   ifconfig

apt-get install iputils-ping

###  ping

apt-get install iproute2

####  ip

如果出现Slave failed to initialize即 ERROR1872(HY000),

先 stop slave;然后reset slave;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱编程的Loren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值