环境配置概述
以下是搭建MySQL主从复制环境所需的系统和软件版本信息:
- Docker
- Windows 11操作系统
- MySQL数据库版本为9.1.0
搭建MySQL主从复制步骤
1. 主库设置
步骤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
步骤2:启动主库容器
使用Docker命令启动主库容器,命令如下:
docker run --name mysql-master --restart=unless-stopped -p 5300:3306 -e MYSQL_ROOT_PASSWORD=123456 -v C:\Users\Administrator\docker\MySql\replication\master\conf\master.cnf:/etc/mysql/conf.d/master.cnf:ro -v C:\Users\Administrator\docker\MySql\replication\master\data:/var/lib/mysql -d mysql
步骤3:登录MySQL
进入容器并登录MySQL数据库,命令如下:
docker exec -it mysql-master bash
mysql -u root -p
步骤4:创建复制用户
在MySQL中创建复制用户并授权,SQL命令如下:
CREATE USER 'repl'@'%' IDENTIFIED with caching_sha2_password BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
步骤5:退出MySQL
退出MySQL命令行,命令如下:
EXIT;
2. 从库设置
步骤1:配置从库
准备从库的配置文件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
步骤2:启动从库容器
使用Docker命令启动从库容器,命令如下:
docker run --name mysql-slave --restart=unless-stopped -p 5301:3306 -e MYSQL_ROOT_PASSWORD=123456 -v C:\Users\Administrator\docker\MySql\replication\slave\conf\slave.cnf:/etc/mysql/conf.d/slave.cnf:ro -v C:\Users\Administrator\docker\MySql\replication\slave\data:/var/lib/mysql -d mysql
步骤3:登录MySQL
进入容器并登录MySQL数据库,命令如下:
docker exec -it mysql-slave bash
mysql -u root -p
步骤4:设置克隆来源
允许从库克隆主库数据,SQL命令如下:
SET GLOBAL clone_valid_donor_list = '172.17.0.6:3306';
步骤5:执行克隆
从主库克隆数据到从库,SQL命令如下:
CLONE INSTANCE FROM 'root'@'172.17.0.6':3306 IDENTIFIED BY '123456';
步骤6:从库重启
克隆完成后,从库将自动重启。
步骤7:查看克隆状态
重新进入从库后,可以查看克隆状态,SQL命令如下:
select * from performance_schema.clone_status;
步骤8:开启主从复制
配置从库以开启主从复制,SQL命令如下:
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 STATUS\G;
验证主从复制
为了验证主从复制是否成功,可以在主库执行以下SQL命令,并检查从库是否同步了这些更改:
```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', '
相关文章
暂无评论...