MySql 9 in Docker 利用克隆插件搭建主从
https://www.518cn.com 发布时间:2025-03-18 22:33 作者:网络
摘要:环境说明 Docker Windows 11 MySql 9.1.0 搭建步骤 1. 准备主库 准备一个主库的配置文件 master.cnf [mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW gtid_mode=ON enforce-g
环境说明
- Docker
- Windows 11
- MySql 9.1.0
搭建步骤
1. 准备主库
- 准备一个主库的配置文件
master.cnf
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
gtid_mode=ON
enforce-gtid-consistency=ON
log_slave_updates=ON
read_only=OFF
plugin-load=clone=mysql_clone.so
- 执行 Docker run 启动主库容器
docker run --name mysql-master --restart=unless-stopped -p 5300:3306 -e MYSQL_ROOT_PASSWORD=123456 -v C:UsersAdministratordockerMySqlreplicationmasterconfmaster.cnf:/etc/mysql/conf.d/master.cnf:ro -v C:UsersAdministratordockerMySqlreplicationmasterdata:/var/lib/mysql -d mysql
- 进入容器并登陆mysql
docker exec -it mysql-master bash
mysql -u root -p
- 创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED with caching_sha2_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
- 退出
EXIT;
2. 准备从库
- 准备一个从库的配置文件
slave.cnf
[mysqld]
server-id=2
log-bin=mysql-bin
binlog-format=ROW
gtid_mode=ON
enforce-gtid-consistency=ON
read_only=ON
plugin-load=clone=mysql_clone.so
- 执行 Docker run
docker run --name mysql-slave --restart=unless-stopped -p 5301:3306 -e MYSQL_ROOT_PASSWORD=123456 -v C:UsersAdministratordockerMySqlreplicationslaveconfslave.cnf:/etc/mysql/conf.d/slave.cnf:ro -v C:UsersAdministratordockerMySqlreplicationslavedata:/var/lib/mysql -d mysql
- 进入容器并登陆mysql
docker exec -it mysql-slave bash
mysql -u root -p
- 允许克隆来源
SET GLOBAL clone_valid_donor_list = '172.17.0.6:3306';
- 执行克隆命令
CLONE INSTANCE FROM 'root'@'172.17.0.6':3306 IDENTIFIED BY '123456';
-
克隆完成,从库会自动重启
-
重新进入后可以查看克隆状态
select * from performance_schema.clone_status;
- 从库即可开启主从复制
CHANGE REPLICATION SOURCE TO
SOURCE_HOST='172.17.0.6',
SOURCE_PORT = 3306,
SOURCE_USER='repl',
SOURCE_PASSWORD='123456',
GET_SOURCE_PUBLIC_KEY=1,
SOURCE_AUTO_POSITION=1;
start REPLICA;
SHOW REPLICA STATUSG;
验证
- 主库执行下列SQL,完成后查看从库是否同步
CREATE DATABASE test_db2; -- 创建数据库
USE test_db2; -- 切换数据库
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
); -- 创建表
INSERT INTO users (name, email) VALUES ('tsj', 'tsj@example.com'); -- 插入数据
SELECT * FROM users; -- 查看数据
相关文章
- 优化GreatSQL日志文件空间占用 GreatSQL对于日志文件磁盘空间占用,做了一些优化,对于binlog、...03-18
- "数据约束条件" date: 2022-11-24T21:24:31 08:00 draft: false MySQL字段约束条件 无符号, 零填充...03-18
【GreatSQL优化器-16】INDEX_SKIP_SCAN
【GreatSQL优化器-16】INDEX_SKIP_SCAN 一、INDEX_SKIP_SCAN介绍 GreatSQL 优化器的索引跳跃扫描(Index Ski...03-18- MySQL 是一个非常流行的开源关系数据库管理系统,在各种应用场景中都得到了广泛的应用。随...03-18
- 🤖 DB-GPT 是一个开源的 AI 原生数据应用程序开发框架,具有 AWEL(代理工作流表达式语...03-18
GreatSQL 8.0.32-27 GA (2025-3-10)
GreatSQL 8.0.32-27 GA (2025-3-10) 版本信息 发布时间:2025年3月10日 版本号:8.0.32-27, Revision aa66a38591...03-18- 6. MySQL 索引的数据结构(详细说明) @目录6. MySQL 索引的数据结构(详细说明)1. 为什么使用索引2...03-18
- @Override @Transactional(rollbackFor = Exception.class) public void batchInsertDeviceData(IotMsgNotifyData iotMsgNotifyDa...03-18
- 个人Qt项目总结——数据库查询断言问题 问题: 当我使用MySQL数据库的查询操作时, 如果查询...03-18
- MySQL 是一种广泛使用的关系数据库管理系统,MySQL 8 是其最新的主要版本,结合了出色的性能和...03-18
最新评论