当前位置:首页 > Centos > 正文

CentOS 数据库读写分离实战指南(手把手教你搭建高可用 MySQL 主从架构)

在高并发、大数据量的 Web 应用中,数据库往往成为系统性能的瓶颈。为了提升数据库的读取性能和整体可用性,数据库读写分离是一种非常有效的解决方案。本文将围绕 CentOS 系统,以 MySQL 为例,详细讲解如何搭建主从复制实现读写分离,即使是刚入门的小白也能轻松上手。

什么是数据库读写分离?

简单来说,读写分离就是将数据库的写操作(INSERT、UPDATE、DELETE)发送到主库(Master),而读操作(SELECT)则分发到一个或多个从库(Slave)。这样可以有效减轻主库的压力,提高系统整体性能和稳定性。

CentOS 数据库读写分离实战指南(手把手教你搭建高可用 MySQL 主从架构) CentOS数据库读写分离 MySQL主从复制 MySQL配置 数据库高可用架构 第1张

准备工作

在开始之前,请确保你有以下环境:

  • 两台 CentOS 7/8 服务器(一台作为 Master,一台作为 Slave)
  • 已安装 MySQL 5.7 或 8.0(建议版本一致)
  • 两台服务器网络互通,防火墙开放 3306 端口
  • 具备 root 或 sudo 权限

第一步:配置主库(Master)

登录主库服务器,编辑 MySQL 配置文件:

sudo vim /etc/my.cnf

[mysqld] 段落下添加以下配置:

[mysqld]server-id=1log-bin=mysql-binbinlog-do-db=your_database_name  # 可选,指定同步的数据库binlog-ignore-db=mysql          # 可选,忽略同步的数据库

保存并重启 MySQL 服务:

sudo systemctl restart mysqld

接下来,创建用于主从同步的用户:

mysql -u root -p-- 在 MySQL 命令行中执行CREATE USER 'repl'@'%' IDENTIFIED BY 'StrongPassword123!';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';FLUSH PRIVILEGES;

记录当前 binlog 文件名和位置(后续从库配置需要):

SHOW MASTER STATUS;

输出类似如下:

+------------------+----------+--------------+------------------+| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 |      154 | your_db      | mysql            |+------------------+----------+--------------+------------------+

第二步:配置从库(Slave)

编辑从库的 MySQL 配置文件:

sudo vim /etc/my.cnf

添加以下配置(注意 server-id 必须唯一):

[mysqld]server-id=2relay-log=mysql-relay-binread_only=1

重启 MySQL:

sudo systemctl restart mysqld

登录 MySQL,配置主从连接:

CHANGE MASTER TO  MASTER_HOST='主库IP地址',  MASTER_USER='repl',  MASTER_PASSWORD='StrongPassword123!',  MASTER_LOG_FILE='mysql-bin.000001',  MASTER_LOG_POS=154;START SLAVE;

检查从库状态:

SHOW SLAVE STATUS\G

如果看到 Slave_IO_Running: YesSlave_SQL_Running: Yes,说明主从复制已成功启动!

第三步:应用程序实现读写分离

完成主从配置后,还需在应用层实现读写分离。常见做法包括:

  • 使用中间件如 MyCatShardingSphere
  • 在代码中手动区分读写连接(例如 PHP 的 PDO、Java 的 Spring DataSource)
  • 使用负载均衡器(如 HAProxy)配合健康检查自动分发读请求

至此,你已经成功在 CentOS 上搭建了基于 MySQL 主从复制 的读写分离架构。这种 数据库高可用架构 能显著提升系统性能和容灾能力。

常见问题排查

  • 从库无法连接主库:检查防火墙、网络连通性、主库是否允许远程连接
  • Slave_SQL_Running 为 No:查看错误日志,可能是 SQL 冲突或数据不一致
  • 主从延迟过大:优化主库写入压力,或升级从库硬件

通过本教程,相信你已经掌握了 CentOS数据库读写分离 的核心配置方法。赶紧动手试试吧!