配置MySQL主从复制(Master-Slave Replication)是一个分步过程,涉及到主服务器(Master)和从服务器(Slave)的配置。以下是详细的配置步骤和示例代码。
1. 配置主服务器(Master)
1.1 修改主服务器的配置文件
编辑my.cnf
或my.ini
文件,根据系统的不同,文件可能位于:
- Linux:
/etc/mysql/my.cnf
或/etc/my.cnf
- Windows:
C:\ProgramData\MySQL\MySQL Server X.Y\my.ini
在 [mysqld]
部分添加以下配置:
[mysqld]
server-id = 1 # 主服务器的唯一ID, 必须是唯一的正整数
log-bin = mysql-bin # 启用二进制日志
binlog-format = row # 使用行格式的二进制日志
重启MySQL服务以应用配置变更:
sudo service mysql restart
1.2 创建复制用户
在主服务器上,创建一个用于复制的用户并授予权限:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
1.3 获取二进制日志位置
执行以下SQL命令以获取主服务器的二进制日志文件名和位置:
SHOW MASTER STATUS;
你将看到类似以下的输出:
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
记下File
和Position
,在配置从服务器时需要用到。
2. 配置从服务器(Slave)
2.1 修改从服务器的配置文件
编辑从服务器的my.cnf
或my.ini
文件:
[mysqld]
server-id = 2 # 从服务器的唯一ID, 必须是唯一的正整数
relay-log = mysql-relay-bin # 启用中继日志
重启MySQL服务以应用配置变更:
sudo service mysql restart
2.2 配置主从关系
在从服务器上执行以下SQL命令,将从服务器配置为从主服务器复制数据:
CHANGE MASTER TO
MASTER_HOST='主服务器IP', # 主服务器的IP地址
MASTER_USER='replicator', # 复制用户
MASTER_PASSWORD='password', # 复制用户的密码
MASTER_LOG_FILE='mysql-bin.000001',# 主服务器的二进制日志文件
MASTER_LOG_POS=154; # 二进制日志位置
2.3 启动复制
启动从服务器的复制线程:
START SLAVE;
2.4 检查复制状态
可以通过以下命令检查从服务器的复制状态:
SHOW SLAVE STATUS\G
输出中需要关注的关键字段如下:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
这两个字段都显示为Yes
表示复制正在正常进行。
3. 验证复制
在主服务器上创建一个测试数据库和表,并插入数据:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO test_table (name) VALUES ('test_name');
在从服务器上检查是否能看到这些数据:
USE test_db;
SELECT * FROM test_table;
你应该能够看到与主服务器上相同的数据。
小结
通过以上步骤,你已经成功配置了MySQL的主从复制。主从复制提高了数据的可用性和可靠性,支持负载均衡和数据备份。确保按步骤进行配置,并在生产环境中进行充分测试,以确保系统的稳定性和高效运行。