在CentOS上搭建MySQL主从复制环境,可以增强数据库的可用性、负载均衡和数据冗余,以下是一个详细的步骤指南,包括环境准备、主节点配置、从节点配置以及常见问题解答:
一、环境准备
1、操作系统:两台运行CentOS 7的服务器,确保它们在同一个局域网中,并且可以相互通信。
2、IP地址:为每台服务器分配唯一的IP地址,例如主节点(Master)为192.168.70.114
,从节点(Slave)为192.168.70.115
。
3、MySQL版本:建议在两台服务器上安装相同版本的MySQL,以避免兼容性问题,可以从MySQL官方网站下载YUM源并安装MySQL 5.7或更高版本。
二、主节点配置
1、修改配置文件:编辑主节点的MySQL配置文件/etc/my.cnf
,添加以下配置以启用二进制日志和设置服务器ID。
[mysqld] logbin=masterbin binlogformat=ROW serverid=1
保存并关闭文件。
2、重启MySQL服务:执行以下命令重启MySQL服务,使配置生效。
sudo systemctl restart mysqld
3、创建同步用户:登录MySQL控制台,创建一个用于从节点连接的同步用户,并授予必要的权限。
CREATE USER 'repl'@'%' IDENTIFIED BY 'strong_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;
4、查看主节点状态:执行以下命令获取主节点的二进制日志文件名和位置。
SHOW MASTER STATUS;
记下输出中的File
和Position
值,稍后在从节点配置中会用到。
三、从节点配置
1、修改配置文件:编辑从节点的MySQL配置文件/etc/my.cnf
,添加以下配置以启用二进制日志和设置服务器ID(确保与主节点不同)。
[mysqld] logbin=slavebin binlogformat=ROW serverid=2
保存并关闭文件。
2、重启MySQL服务:执行以下命令重启MySQL服务,使配置生效。
sudo systemctl restart mysqld
3、配置主从同步:登录从节点的MySQL控制台,执行以下命令连接到主节点,并指定要同步的日志文件和位置。
CHANGE MASTER TO MASTER_HOST='192.168.70.114', MASTER_USER='repl', MASTER_PASSWORD='strong_password', MASTER_LOG_FILE='masterbin.000002', MASTER_LOG_POS=154;
注意:将MASTER_HOST
、MASTER_USER
、MASTER_PASSWORD
、MASTER_LOG_FILE
和MASTER_LOG_POS
替换为实际的主节点信息。
4、启动从节点:执行以下命令启动从节点的复制进程。
START SLAVE;
5、查看从节点状态:执行以下命令查看从节点的复制状态。
SHOW SLAVE STATUS\G;
确认Slave_IO_Running
和Slave_SQL_Running
都显示为Yes
,表示复制已成功建立。
四、验证主从复制
1、在主节点上插入数据:在主节点的某个数据库中插入一条记录,
USE wyl; INSERT INTO test_table (id, name) VALUES (1, 'Test');
2、在从节点上查询数据:切换到从节点,查询相同的表,确认数据是否已同步。
USE wyl; SELECT * FROM test_table;
如果从节点能够查询到刚在主节点上插入的数据,说明主从复制配置成功。
五、常见问题及解决方案
Q1: 从节点无法连接到主节点怎么办?
A1: 检查以下几点:
确保主节点的防火墙允许从节点的IP地址访问MySQL端口(默认3306)。
确认主节点的MySQL服务正在运行,并且网络连接正常。
检查从节点上的CHANGE MASTER TO
语句中的参数是否正确。
Q2: 从节点复制延迟严重怎么办?
A2: 复制延迟可能由多种因素引起,包括但不限于网络延迟、主节点负载过高、从节点性能不足等,可以尝试以下方法优化:
提高从节点的硬件配置。
优化主节点的查询性能,减少锁等待时间。
调整MySQL的复制相关参数,如sync_binlog
、innodb_flush_log_at_trx_commit
等。
如果可能,考虑使用更高效的复制拓扑结构,如多源复制或GTID复制。
通过以上步骤,您可以在CentOS上成功搭建MySQL主从复制环境,并根据需要进行调整和优化。