本文最后更新于 1 分钟前,文中所描述的信息可能已发生改变。
MySQL 主从复制是一种常见的数据复制技术,它允许数据从一个 MySQL 数据库服务器(主服务器)复制到一个或多个 MySQL 数据库服务器(从服务器)。本文将详细介绍如何配置 MySQL 主从复制。
环境准备
- 主服务器:MySQL 8.0
- 从服务器:MySQL 8.0
- 操作系统:Linux/Unix
主服务器配置
- 修改主服务器配置文件
my.cnf
:
ini
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
binlog_do_db = your_database_name
- 重启 MySQL 服务:
bash
sudo systemctl restart mysql
- 创建用于复制的用户:
sql
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
- 查看主服务器状态:
sql
SHOW MASTER STATUS;
记录下 File 和 Position 的值,这些将在配置从服务器时使用。
从服务器配置
- 修改从服务器配置文件
my.cnf
:
ini
[mysqld]
server-id = 2
relay-log = mysql-relay-bin
log_bin = mysql-bin
- 重启 MySQL 服务:
bash
sudo systemctl restart mysql
- 配置从服务器连接到主服务器:
sql
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=position;
- 启动从服务器复制:
sql
START SLAVE;
- 检查从服务器状态:
sql
SHOW SLAVE STATUS;
验证配置
- 在主服务器上创建测试数据:
sql
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');
- 在从服务器上验证数据是否同步:
sql
USE test_db;
SELECT * FROM test_table;
常见问题解决
如果从服务器状态显示错误,检查:
- 网络连接是否正常
- 主从服务器的 server-id 是否唯一
- 用户名和密码是否正确
- 主服务器的防火墙设置
如果需要重新配置从服务器:
sqlSTOP SLAVE; RESET SLAVE;
注意事项
- 确保主从服务器的 MySQL 版本兼容
- 定期监控主从复制状态
- 建议使用 GTID 模式进行复制
- 配置适当的备份策略
总结
MySQL 主从复制是一个强大的功能,可以用于:
- 数据备份
- 负载均衡
- 高可用性
- 数据分析
通过本文的配置步骤,您可以成功搭建 MySQL 主从复制环境。记得定期监控复制状态,确保数据同步正常。