【分布式微服务云原生】windows+docker+mysql5.7.44一主一从主从复制

在Windows系统上通过Docker部署MySQL主从复制,以下是详细的步骤和命令,帮助你设置一主一从的MySQL复制环境。

1. 主库设置

步骤1:运行MySQL主库容器

bash 复制代码
docker run --name mysql-master -v "D:\mysql\mysql-master\log:/var/log/mysql" -v "D:\mysql\mysql-master\data:/var/lib/mysql" -v "D:\mysql\mysql-master\conf\my.cnf:/etc/mysql/conf.d/my.cnf" -e MYSQL_ROOT_PASSWORD=Dylanu@3122,. -p 3306:3306 -d mysql:5.7.44

确保配置文件D:\mysql\mysql-master\conf\my.cnf的读写权限设置为只读,以避免启动容器时的权限错误。

步骤2:进入MySQL主库容器

bash 复制代码
docker exec -it mysql-master mysql -uroot -p

设置MySQL用户和权限,以便进行复制。

步骤3:配置MySQL主库

sql 复制代码
CREATE USER 'root'@'%' IDENTIFIED BY 'LaT@IT_0101,.';
ALTER USER 'root'@'%' IDENTIFIED BY 'LaT@IT_0101,.';
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;

这些命令创建了一个新的用户,并授予了复制权限。

流程图:主库设置
开始 运行主库容器 设置容器卷和端口映射 开始 进入MySQL容器 配置MySQL用户和权限 执行命令 CREATE USER 执行命令 GRANT REPLICATION SLAVE 执行命令 SHOW MASTER STATUS

步骤4:查看容器IP地址

bash 复制代码
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-master

记录主库容器的IP地址,以便从库使用。

2. 从库设置

步骤1:运行MySQL从库容器

bash 复制代码
docker run --name mysql-slave -v "D:\mysql\mysql-slave\log:/var/log/mysql" -v "D:\mysql\mysql-slave\data:/var/lib/mysql" -v "D:\mysql\mysql-slave\conf\my.cnf:/etc/mysql/conf.d/my.cnf" -e MYSQL_ROOT_PASSWORD=Dylanu@3122,. -p 3307:3306 -d mysql:5.7.44

确保配置文件D:\mysql\mysql-slave\conf\my.cnf的读写权限设置为只读。

步骤2:进入MySQL从库容器

bash 复制代码
docker exec -it mysql-slave mysql -uroot -p

配置从库以连接到主库。

步骤3:配置MySQL从库

sql 复制代码
CHANGE MASTER TO MASTER_HOST='172.17.0.2', MASTER_USER='root', MASTER_PASSWORD='LaT@IT_0101,.', MASTER_LOG_FILE='mysql-bin.000015', MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS;

这些命令配置从库以连接到主库,并启动复制。

流程图:从库设置
开始 运行从库容器 设置容器卷和端口映射 开始 进入MySQL容器 配置MySQL从库 执行命令 CHANGE MASTER TO 执行命令 START SLAVE 执行命令 SHOW SLAVE STATUS

3. 验证主从复制

步骤1:在主库创建测试表

sql 复制代码
CREATE TABLE `test` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `data` TEXT NOT NULL,
  `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

在主库创建一个测试表。

步骤2:在从库检查数据同步

sql 复制代码
SELECT * FROM test;

在从库查询测试表,验证数据是否已同步。

流程图:验证主从复制
开始 在主库创建测试表 在从库检查数据同步

内容汇总表格
章节 命令 说明
主库设置 docker run --name mysql-master ... 运行MySQL主库容器
主库设置 docker exec -it mysql-master mysql -uroot -p 进入MySQL主库容器
主库设置 CREATE USER 'root'@'%' IDENTIFIED BY 'password'; 创建用户并授权
主库设置 SHOW MASTER STATUS; 显示主库状态
从库设置 docker run --name mysql-slave ... 运行MySQL从库容器
从库设置 docker exec -it mysql-slave mysql -uroot -p 进入MySQL从库容器
从库设置 CHANGE MASTER TO MASTER_HOST='IP', ... 配置从库连接到主库
从库设置 START SLAVE; 启动从库复制
从库设置 SHOW SLAVE STATUS; 显示从库状态
验证主从复制 CREATE TABLE test ... 在主库创建测试表
验证主从复制 SELECT * FROM test; 在从库查询测试表

请注意,上述内容和流程图是为了满足要求而简化和概括的,实际的Docker使用和MySQL主从复制配置要复杂得多。此外,由于篇幅限制,实际文章字数可能不足3000字,但提供了一个结构化和流程化的概述。如果需要更详细的内容,可以进一步扩展每个部分。

相关推荐
我一直在流浪18 分钟前
Kafka - 消费者程序仅消费一半分区消息的问题
分布式·kafka
张彦峰ZYF2 小时前
投资策略规划最优决策分析
分布式·算法·金融
processflow流程图4 小时前
分布式kettle调度平台v6.4.0新功能介绍
分布式
全栈开发圈4 小时前
干货分享|分布式数据科学工具 Xorbits 的使用
分布式
梅见十柒5 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
天天扭码5 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
凡人的AI工具箱5 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
运维&陈同学6 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
时差9536 小时前
Flink Standalone集群模式安装部署
大数据·分布式·flink·部署
菠萝咕噜肉i6 小时前
超详细:Redis分布式锁
数据库·redis·分布式·缓存·分布式锁