MySQL主从配置可以通过以下步骤实现:
1. 环境准备
- 两台MySQL服务器:一台作为主服务器(Master),另一台作为从服务器(Slave)。
- MySQL版本要一致或兼容。
2. 主服务器配置
-
编辑MySQL配置文件(一般是
my.cnf
或my.ini
),添加以下配置:[mysqld] server-id=1 log-bin=mysql-bin binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema
server-id
:每个MySQL服务器的唯一标识,主从服务器的server-id
不能相同。log-bin
:启用二进制日志,指定日志文件的名称前缀。binlog-ignore-db
:忽略指定数据库的二进制日志记录,确保不会记录不必要的系统库。
-
重启MySQL服务:
sudo service mysql restart
-
创建用于复制的用户并授予权限:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES;
-
获取主服务器的二进制日志信息:
SHOW MASTER STATUS;
记下
File
和Position
,稍后在从服务器上使用。
3. 从服务器配置
-
编辑MySQL配置文件,添加以下配置:
[mysqld] server-id=2 relay-log=relay-log log-bin=mysql-bin binlog-ignore-db=mysql binlog-ignore-db=information_schema binlog-ignore-db=performance_schema
server-id
:从服务器的唯一标识。relay-log
:指定中继日志文件的名称前缀。
-
重启MySQL服务:
sudo service mysql restart
-
在从服务器上配置主服务器信息:
CHANGE MASTER TO MASTER_HOST='主服务器的IP地址', MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='主服务器的二进制日志文件名', MASTER_LOG_POS=主服务器的二进制日志位置;
-
启动复制线程:
START SLAVE;
-
检查从服务器状态:
SHOW SLAVE STATUS\G;
确认
Slave_IO_Running
和Slave_SQL_Running
都为Yes
,且没有错误。
4. 测试复制
在主服务器上创建一个测试数据库或表,插入一些数据,然后检查从服务器上是否同步了这些变化。
-- 主服务器
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table VALUES (1, 'Test Name');
-- 从服务器
USE test_db;
SELECT * FROM test_table;
如果从服务器上能看到主服务器插入的数据,说明主从复制配置成功。
5. 处理常见问题
- 如果在从服务器上看到
Slave_IO_Running
或Slave_SQL_Running
为No
,检查从服务器状态信息中的错误消息,并根据错误消息进行修复。 - 确保主从服务器之间的网络连接畅通。
- 确保主服务器上的二进制日志文件存在且从服务器能访问。
通过以上步骤,你可以成功配置MySQL主从复制。如果遇到特定问题,可以提供详细的错误信息,我可以进一步帮助你。