Docker搭建MySQL双主复制详细教程
在此之前需要提前安装好Docker和 Docker Compose 。
一、创建目录
首先创建一个本地数据挂载目录。
mkdir -p master1-data master2-data
二、编写docker-compose.yml
version: '3.7'
services:
mysql-master1:
image: mysql:5.7.36
container_name: mysql-master1
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- ./master1-data:/var/lib/mysql
ports:
- "3306:3306"
command: --server-id=1 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON
mysql-master2:
image: mysql:5.7.36
container_name: mysql-master2
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
- ./master2-data:/var/lib/mysql
ports:
- "3307:3306"
command: --server-id=2 --log-bin=mysql-bin --gtid-mode=ON --enforce-gtid-consistency=ON
volumes:
master1-data:
master2-data:
三、拉取镜像
我是使用的mysql5.7.36版本的,如果不同,需要自行修改
docker pull mysql:5.7.36

四、启动 Docker Compose
docker-compose up -d

五、初始化双主复制
1、在第一个主数据库上配置复制用户
进入 mysql-master1 容器
docker exec -it mysql-master1 bash
登录 MySQL
mysql -u root -p
执行以下 SQL 命令
CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; SHOW MASTER STATUS;
记下 File 和 Position 的值。
2、在第二个主数据库上配置复制用户
进入 mysql-master2 容器
docker exec -it mysql-master2 bash
登录 MySQL
mysql -u root -p
执行以下 SQL 命令
CREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; SHOW MASTER STATUS;
记下 File 和 Position 的值。
3、在第一个主数据库上配置从第二个主数据库同步
进入 mysql-master1 容器
docker exec -it mysql-master1 bash
登录 MySQL
mysql -u root -p
执行以下 SQL 命令
CHANGE MASTER TO MASTER_HOST='mysql-master2', MASTER_USER='replica', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='mysql-bin.000001', -- 使用第二个主数据库的File值 MASTER_LOG_POS=154; -- 使用第二个主数据库的Position值 START SLAVE;
4、在第二个主数据库上配置从第一个主数据库同步:
进入 mysql-master2 容器
docker exec -it mysql-master2 bash
登录 MySQL:
mysql -u root -p
执行以下 SQL 命令
CHANGE MASTER TO MASTER_HOST='mysql-master1', MASTER_USER='replica', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='mysql-bin.000001', -- 使用第一个主数据库的File值 MASTER_LOG_POS=154; -- 使用第一个主数据库的Position值 START SLAVE;
六、验证主从复制
到这里,L双主复制就配置完成了,你可以尝试在一个主数据库上插入数据,并在另一个主数据库上检查数据,确定双主复制配置成功。正确的结果是,在一个数据库进行了新增、删除、修改等操作后的结果,在第二个数据库中会进行同步。
到此这篇关于Docker搭建MySQL双主复制详细教程的文章就介绍到这了,更多相关Docker MySQL双主复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用Docker配置redis sentinel哨兵的方法步骤
本文主要介绍了Docker配置redis sentinel哨兵的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-07-07
基于Docker+Selenium Grid的测试技术应用示例代码
Selenium Grid允许我们在多台计算机上并行运行测试,并集中管理不同的浏览器版本和浏览器配置。这篇文章给大家介绍基于Docker+Selenium Grid的测试技术应用示例代码,需要的朋友参考下吧2021-08-08


最新评论