# 在一个服务器上,配置MySQL的主从复制环境以实现读写分离 #
1. 安装多个MySQL实例
-
安装MySQL:如果未安装,请先安装(安装完成默认端口为3306)。
-
配置多个实例:指定不同的端口来运行,此篇文章中以3307端口和3308端口为例。
2. 配置主服务器(Master)
-
寻找文件:找到MySQL数据存放位置(C:\ProgramData\MySQL)。
-
新建文件夹:新建 MySQLServer8.0_3307 和 MySQLServer8.0_3308 文件夹(名称中不要包含中文和空格)。
-
拷贝文件:打开文件夹 MySQL Server 8.0 ,复制除Data外的其它文件夹和文件,粘贴至3307和3308文件夹下。

-
编辑MySQL配置文件(my.ini):添加或修改以下配置,为实例设置唯一的服务器ID。
port=3307
datadir=C:/ProgramData/MySQL/MySQLServer8.0_3307/Data
server-id=1
# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQLServer8.0_3307/Uploads"
# The TCP/IP Port the MySQL Server X Protocol will listen on.
loose_mysqlx_port=33070
-
创建服务以及初始化数据
# 创建服务
mysqld install MySQL80_3307 --defaults-file="C:\ProgramData\MySQL\MySQLServer8.0_3307\my.ini"
# 初始化服务
mysqld --initialize --console --datadir=C:\ProgramData\MySQL\MySQLServer8.0_3307\Data --port=3307
-
启动服务
3. 配置从服务器(Slave)
-
编辑MySQL配置文件(my.ini):添加或修改以下配置,为实例设置唯一的服务器ID。
port=3308
datadir=C:/ProgramData/MySQL/MySQLServer8.0_3308/Data
server-id=2
relay-log="LAPTOP-H9QEHHCP-relay-bin"
# 设置为只读(可选,但推荐在测试环境中使用)
read_only=1
# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQLServer8.0_3308/Uploads"
# The TCP/IP Port the MySQL Server X Protocol will listen on.
loose_mysqlx_port=33080
-
创建服务以及初始化数据
# 创建服务
mysqld install MySQL80_3308 --defaults-file="C:\ProgramData\MySQL\MySQLServer8.0_3308\my.ini"
# 初始化服务
mysqld --initialize --console --datadir=C:\ProgramData\MySQL\MySQLServer8.0_3308\Data --port=3308
-
启动服务
4. 在主库上创建复制用户
-- 创建用户:为复制过程创建一个具有必要权限的用户。
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'replica_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
-- 锁定表并获取二进制日志位置:在进行快照或备份之前,锁定表并记录当前二进制日志的位置。
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
-- 记下输出的File和Position值,稍后将在从库上使用。
5. 备份并传输主库数据到从库
6. 配置从库以连接到主库
-- 设置复制源:使用之前在主库上获取的二进制日志文件和位置来配置从库。
CHANGE MASTER TO
MASTER_HOST='localhost',
MASTER_PORT=3307,
MASTER_USER='replica_user',
MASTER_PASSWORD='replica_password',
MASTER_LOG_FILE='记录的File值',
MASTER_LOG_POS=记录的Position值;
-- 启动复制线程:在从库上启动复制线程。
START SLAVE;
-- 检查复制状态。
SHOW SLAVE STATUS;
6173

被折叠的 条评论
为什么被折叠?



