目录
- 1. 主库设置
- 2. 从库设置
- 3. 验证主从复制
- 内容汇总表格
摘要:
在Windows系统上通过Docker部署MySQL主从复制,以下是详细的步骤和命令,帮助你设置一主一从的MySQL复制环境。
1. 主库设置
步骤1:运行MySQL主库容器
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=password@312
-p 3306:3306 -d mysql:5.7.44
注意:确保配置文件D:\mysql\mysql-master\conf\my.cnf
的读写权限设置为只读,以避免启动容器时的权限错误。
步骤2:进入MySQL主库容器
docker exec -it mysql-master mysql -uroot -p
设置MySQL用户和权限,以便进行复制。
步骤3:配置MySQL主库
CREATE USER 'root'@'%' IDENTIFIED BY 'password@312';
ALTER USER 'root'@'%' IDENTIFIED BY 'password@312';
GRANT REPLICATION SLAVE ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
这些命令创建了一个新的用户,并授予了复制权限。
流程图:主库设置
步骤4:查看容器IP地址
docker inspect
-f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-master
记录主库容器的IP地址,以便从库使用。
2. 从库设置
步骤1:运行MySQL从库容器
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=password@312
-p 3307:3306 -d mysql:5.7.44
与主库设置类似,但端口映射为3307。
**注意:**确保配置文件D:\mysql\mysql-slave\conf\my.cnf
的读写权限设置为只读。
步骤2:进入MySQL从库容器
docker exec -it mysql-slave mysql -uroot -p
与主库设置类似。配置从库以连接到主库。
步骤3:配置MySQL从库
CHANGE MASTER TO
MASTER_HOST='172.17.0.2',
MASTER_USER='root',
MASTER_PASSWORD='password@312',
MASTER_LOG_FILE='mysql-bin.000015',
MASTER_LOG_POS=154;
START SLAVE;
SHOW SLAVE STATUS;
这些命令配置从库以连接到主库,并启动复制。
流程图:从库设置
3. 验证主从复制
步骤1:在主库创建测试表
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:在从库检查数据同步
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; | 在从库查询测试表 |