MySQL 主从复制配置教程
在本教程中,我们将详细介绍如何配置 MySQL 主从复制,以实现数据的高可用性和负载均衡。我们将从主数据库(Master)和从数据库(Slave)的配置开始,逐步完成整个过程。
1. 环境准备
- 主数据库(Master): 192.168.1.10
- 从数据库(Slave): 192.168.1.100
- MySQL 版本: 5.7 或更高版本
2. 配置主数据库(Master)
2.1 编辑 MySQL 配置文件
在主数据库上编辑 MySQL 配置文件(通常是 /etc/my.cnf
或 /etc/mysql/my.cnf
),添加以下配置:
[mysqld]
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=your_database_name
server-id
: 主数据库的唯一标识,必须是一个唯一的正整数。log_bin
: 二进制日志文件的路径。binlog_do_db
: 指定需要复制的数据库名称。
2.2 重启 MySQL 服务
保存配置文件后,重启 MySQL 服务以应用更改:
sudo systemctl restart mysql
2.3 创建复制用户
在主数据库上创建一个用于复制的用户,并授予相应的权限:
CREATE USER 'user'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'user'@'%';
FLUSH PRIVILEGES;
2.4 获取二进制日志文件和位置
在主数据库上执行以下命令,获取当前的二进制日志文件和位置:
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
记录 File
和 Position
的值,稍后在从数据库上配置时会用到。
UNLOCK TABLES;
3. 配置从数据库(Slave)
3.1 编辑 MySQL 配置文件
在从数据库上编辑 MySQL 配置文件,添加以下配置:
[mysqld]
server-id=2
relay_log=/var/log/mysql/mysql-relay-bin.log
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=your_database_name
server-id
: 从数据库的唯一标识,必须是一个唯一的正整数。relay_log
: 中继日志文件的路径。log_bin
: 二进制日志文件的路径。binlog_do_db
: 指定需要复制的数据库名称。
3.2 重启 MySQL 服务
保存配置文件后,重启 MySQL 服务以应用更改:
sudo systemctl restart mysql
3.3 配置从数据库连接主数据库
在从数据库上执行以下命令,配置从数据库连接主数据库:
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='user',
MASTER_PASSWORD='your_password',
MASTER_LOG_FILE='mysql-bin.000011',
MASTER_LOG_POS=2397;
MASTER_HOST
: 主数据库的 IP 地址。MASTER_USER
: 用于复制的用户名。MASTER_PASSWORD
: 用于复制的用户密码。MASTER_LOG_FILE
: 主数据库的二进制日志文件名。MASTER_LOG_POS
: 主数据库的二进制日志位置。
3.4 启动从数据库复制
在从数据库上启动复制进程:
START SLAVE;
3.5 检查从数据库状态
在从数据库上执行以下命令,检查复制状态:
SHOW SLAVE STATUS\G
确保 Slave_IO_Running
和 Slave_SQL_Running
都为 Yes
,并且 Last_Error
为空。
4. 处理复制错误
如果在复制过程中遇到错误,可以使用以下命令跳过错误并继续复制:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
5. 验证复制
在主数据库上进行一些数据操作(如插入、更新、删除),然后在从数据库上检查数据是否同步。
评论 (0)