Windows 上设置 MySQL 的主从复制
- 一、前言
-
- [1. 环境准备](#1. 环境准备)
- [2. 主服务器配置](#2. 主服务器配置)
- [3. 从服务器配置](#3. 从服务器配置)
- [6. 测试复制](#6. 测试复制)
- [7. 注意事项](#7. 注意事项)
一、前言
MySQL 主从复制可以在程序中通过以下方式应用:
-
读写分离:将写操作(如插入、更新、删除)发送到主服务器,将读操作(如查询)发送到从服务器。这可以减轻主服务器的负担,并提高读性能。
-
数据备份:从服务器可以用于定期备份主服务器的数据。因为从服务器会持续同步主服务器的数据,备份从服务器比备份主服务器更轻松。
-
故障恢复:在主服务器出现故障时,可以将从服务器提升为新的主服务器,减少系统停机时间。
-
负载均衡:将负载分散到多个从服务器,提高整体系统的吞吐量和可靠性。
在程序中实现这些功能通常需要配置数据库连接池或ORM框架,支持读写分离。例如,在Spring Boot中,你可以通过配置多个数据源和相应的路由策略来实现。
1. 环境准备
-
安装 MySQL :
确保你在 Windows 上安装了 MySQL,并且能够访问 MySQL 命令行工具。
-
确定主从服务器 :
假设我们有两台机器:
- 主服务器(Master):
192.168.1.100
- 从服务器(Slave):
192.168.1.101
- 主服务器(Master):
2. 主服务器配置
-
编辑 MySQL 配置文件 :
找到
my.ini
文件,通常位于C:\ProgramData\MySQL\MySQL Server X.X\
(X.X为版本号)。添加或修改以下参数:ini[mysqld] server-id = 1 log-bin = mysql-bin binlog-do-db = your_database_name # 如果只想复制特定数据库
server-id
:主服务器的唯一标识符,必须是一个正整数。log-bin
:启用二进制日志,这对于复制是必需的。binlog-do-db
:可选,指定要复制的数据库。
-
重启 MySQL 服务 :
可以通过服务管理器或命令提示符重启 MySQL 服务。
-
创建复制用户 :
连接到 MySQL 命令行,执行以下命令:
sqlCREATE USER 'replica'@'%' IDENTIFIED BY 'replica_password'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES;
- 这个用户将用于从服务器连接到主服务器。
-
获取主服务器状态 :
在 MySQL 命令行中执行:
sqlSHOW MASTER STATUS;
记录结果中的
File
和Position
字段,以便在从服务器上使用。
3. 从服务器配置
-
编辑从服务器的 MySQL 配置文件 :
找到从服务器的
my.ini
文件,添加或修改以下参数:ini[mysqld] server-id = 2
server-id
:从服务器的唯一标识符,必须与主服务器不同。
-
重启从服务器的 MySQL 服务。
-
连接到从服务器 :
打开 MySQL 命令行,执行以下命令:
sqlCHANGE MASTER TO MASTER_HOST='192.168.1.100', MASTER_USER='replica', MASTER_PASSWORD='replica_password', MASTER_LOG_FILE='mysql-bin.000001', -- 使用从主服务器获取的 File MASTER_LOG_POS=12345; -- 使用从主服务器获取的 Position
- 替换
MASTER_LOG_FILE
和MASTER_LOG_POS
为你在主服务器上记录的值。
- 替换
-
启动复制 :
执行以下命令启动复制:
sqlSTART SLAVE;
-
检查复制状态 :
输入以下命令检查复制状态:
sqlSHOW SLAVE STATUS
- 确保
Slave_IO_Running
和Slave_SQL_Running
都显示为Yes
,这表示复制正在正常运行。
- 确保
6. 测试复制
-
在主服务器上创建一些数据:
sqlUSE your_database_name; CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50)); INSERT INTO test_table VALUES (1, 'test_name');
-
在从服务器上查询该表:
sqlUSE your_database_name; SELECT * FROM test_table;
你应该能看到在主服务器上插入的数据。
7. 注意事项
- 防火墙设置:确保主从服务器之间的网络连接正常,防火墙不会阻止 MySQL 的端口(默认是 3306)。
- 数据一致性:在配置复制之前,确保主从服务器的数据一致性。可以通过备份和恢复的方式来确保这一点。
- 监控复制状态:定期检查从服务器的复制状态,以确保没有错误发生。
通过以上步骤,你应该能够成功在 Windows 上设置 MySQL 的主从复制。如有问题,请查看 MySQL 错误日志以诊断问题。