在Linux环境下搭建MySQL 5.7的一主多从架构,可以有效地提升数据库的读写性能和数据的可靠性。接下来,我们将详细介绍如何配置MySQL主从复制,包含所有必要的步骤和代码示例。
一、环境准备
首先,确保你已经安装了MySQL 5.7,并且对MySQL有基本的了解。本教程将使用两台服务器:一台作为主服务器(Master),另一台作为从服务器(Slave)。
二、主服务器配置
- 编辑MySQL配置文件
找到MySQL的配置文件,一般位于/etc/my.cnf
或/etc/mysql/my.cnf
,使用文本编辑器打开并进行以下设置:
ini
[mysqld]
server-id = 1 # 主服务器ID,必须是唯一的
log_bin = /var/log/mysql/mysql-bin.log # 开启二进制日志
bind-address = 0.0.0.0 # 允许外部连接
binlog-do-db = your_database # 需要复制的数据库
修改完后,保存并关闭文件。
- 重启MySQL服务
bash
sudo systemctl restart mysql
- 创建复制用户
登录MySQL,创建一个用于复制的用户,并授予REPLICATION SLAVE权限:
sql
mysql -u root -p
然后输入以下SQL命令:
sql
CREATE USER 'replica'@'%' IDENTIFIED BY 'your_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
FLUSH PRIVILEGES;
- 记录二进制日志位置
在主服务器上,执行以下命令来获取当前的二进制日志文件名和位置:
sql
FLUSH TABLES WITH READ LOCK; # 锁定表,确保数据一致性
SHOW MASTER STATUS; # 查看当前的二进制日志文件和位置
记下返回的File
和Position
,稍后在从服务器配置时需要用到。
- 解除表锁
sql
UNLOCK TABLES;
三、从服务器配置
- 编辑从服务器配置文件
在从服务器的MySQL配置文件中进行类似的设置:
ini
[mysqld]
server-id = 2 # 从服务器ID,不能与主服务器相同
同样重启MySQL服务:
bash
sudo systemctl restart mysql
- 设置主服务器信息
登录到从服务器的MySQL,执行以下命令以设置主服务器的信息:
sql
mysql -u root -p
然后输入:
sql
CHANGE MASTER TO
MASTER_HOST = '主服务器_IP',
MASTER_USER = 'replica',
MASTER_PASSWORD = 'your_password',
MASTER_LOG_FILE = '记录的File',
MASTER_LOG_POS = 记录的Position;
例如:
sql
CHANGE MASTER TO
MASTER_HOST = '192.168.1.100',
MASTER_USER = 'replica',
MASTER_PASSWORD = 'your_password',
MASTER_LOG_FILE = 'mysql-bin.000001',
MASTER_LOG_POS = 154;
- 启动复制进程
执行以下命令启动复制进程:
sql
START SLAVE;
- 检查复制状态
输入以下命令检查复制的状态:
sql
SHOW SLAVE STATUS\G;
如果Slave_IO_Running
和Slave_SQL_Running
都显示为Yes
,这表示复制配置成功。
四、验证主从复制
在主服务器上向数据库中插入一些数据,然后在从服务器上查询,看数据是否能够同步过来。这样,我们就完成了一主多从的MySQL配置。
结语
通过以上步骤,你已经成功地在Linux中配置了MySQL 5.7的一主多从架构。这种架构可以有效地提高系统的整体性能和数据安全性,适用于高并发的应用程序场景。根据业务需求,后续你还可以进行进一步的优化和监控。