摘要:
在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:在从库查抄数据同步
在从库查询测试表,验证数据是否已同步。
流程图:验证主从复制
内容汇总表格
章节命令说明主库设置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;
在从库查询测试表
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |