文章目录
整体架构流程
1、你需要拉取一个mysql docker镜像
我这里拉取的是mysql8.0.20
docker pull mysql:8.0.20
2、创建一个名字为mysql 的dokcer网络
docker network create -d bridge mysql
如果不使用网络把两个容器连接到一块可能会导致容器间无法连接
3、生成master数据库和slave数据库
docker run -d --network=mysql --name=mysql-slave -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 -d mysql:8.0.20
docker run -d --network=mysql --name=mysql-master -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 -d mysql:8.0.20
4、需要修改两个容器的配置文件
进入容器中
docker ps
#进入容器
docker exec -it mysql-master bin/bash
#安装操作软件vim
apt-get update
apt-get install vim
修改mysql配置文件my.cnf
cd /etc/mysql
vim my.cnf
主数据库 mysql-server
[mysql]
## 同一局域网内注意要唯一
server-id=1
## 开启二进制日志功能,可以随便取(关键),同步的日志路径及文件名,一定注意这个目录要是 MySQL 有权限写入的
log-bin=mysql-bin
## 可选要同步的数据库名,不配置此参数代表所有的库
#binlog-do-db=
从数据库mysql-slave 跟上边一样操作
docker exec -it mysql-slave bin/bash
#安装操作软件vim
apt-get update
apt-get install vim
cd /etc/mysql
vim my.cnf
修改配置文件
[mysql]
## 同一局域网内注意要唯一
server-id=2
## 开启二进制日志功能,可以随便取(关键),同步的日志路径及文件名,一定注意这个目录要是 MySQL 有权限写入的
log-bin=mysql-slave-bin
#relay_log配置中继日志
relay_log=mysql-relay-bin
6、设置主数据库同步数据库的账号密码
#进入mysql
mysql -u root -p 回车,输入密码:123456
#创建用户名密码
CREATE USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123';
#刷新用户权限
FLUSH PRIVILEGES;
7、重启mysql-master容器
8、查看mysql-master的相关参数
#需要先进入到mysql中再执行命令
show master status;
记住现在的参数
9、进入从数据库的mysql中执行
change master to master_host='mysql-master',
master_user='slave',
master_password='123',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos= 156,
master_connect_retry=30;
- master_host 需要复制的主机名称,docker可以容器间通信就填成了容器名称,也可以填ip地址
- master_user 主数据库设置的名称
- master_port 主数据库设置的密码
- master_log_file 上个步骤的参数中的 File
- master_log_pos 上个步骤中的 Position
10、启动slave
start slave;
#查看状态
show slave status\G;
可以看到两个都是yes表明已经成功