CentOS系统下MySQL主从复制搭建全攻略

centos mysql主从搭建

时间:2025-06-29 08:08


CentOS下MySQL主从搭建全攻略 在当今的数据库管理系统中,主从复制(Master-Slave Replication)技术因其高可用性、负载均衡以及数据冗余等特性而被广泛应用

    本文将详细介绍如何在CentOS系统下搭建MySQL主从复制环境,确保每一步都清晰明了,帮助读者轻松实现MySQL数据库的高可用配置

     一、环境准备 在搭建MySQL主从复制之前,我们需要准备以下环境: 1.两台CentOS服务器:一台作为主库(Master),另一台作为从库(Slave)

     2.统一MySQL版本:建议选用MySQL 5.7及以上版本,以确保兼容性和稳定性

     3.网络互通:确保两台服务器之间网络互通,且3306端口(MySQL默认端口)开放

     二、安装MySQL数据库 首先,我们需要在两台服务器上分别安装MySQL数据库

    以下是详细的安装步骤: 1.下载MySQL安装包: 访问MySQL官方网站(如【MySQL下载页面】(https://cdn.mysql.com/archives/mysql-5.7/)),下载对应版本的MySQL安装包

    例如,MySQL5.7.38版本的RPM包集合

     2.上传安装包到服务器: 使用`scp`或`wget`命令将安装包上传到服务器上的指定目录,如`/home`目录

     3.安装MySQL: 执行以下命令来卸载系统自带的mariadb(如果存在),并安装MySQL: bash 卸载mariadb rpm -qa | grep mariadb rpm -e mariadb-libs --nodeps 进入安装包所在目录 cd /home 安装MySQL yum localinstall ./.rpm 4.启动MySQL服务: 使用`systemctl`命令启动MySQL服务,并设置开机自启: bash systemctl start mysqld systemctl enable mysqld systemctl status mysqld 5.设置root密码: 查看MySQL的初始root密码,并重新设置: bash 查看初始root密码 grep temporary password /var/log/mysqld.log 登录MySQL并设置新密码 mysql -u root -p mysql> ALTER USER root@localhost IDENTIFIED BY NewPassword; 请将`NewPassword`替换为你自己的密码

     6.允许远程登录: 修改MySQL配置文件,允许root用户从任何主机远程登录: sql mysql> USE mysql; mysql> UPDATE user SET host=% WHERE user=root; mysql> FLUSH PRIVILEGES; 三、配置主库(Master) 主库的配置主要包括修改MySQL配置文件、创建复制账号以及获取主库状态

     1.修改MySQL配置文件: 编辑`/etc/my.cnf`文件,添加或修改以下配置: ini 【mysqld】 server-id=1 log-bin=mysql-bin binlog-format=ROW expire_logs_days=7 其中,`server-id`是每个MySQL服务器的唯一标识符,必须不同;`log-bin`用于启用二进制日志;`binlog-format`设置日志格式为ROW,可以记录每一行的变化;`expire_logs_days`设置二进制日志的过期天数

     2.创建复制账号: 在主库上创建一个用于复制的用户,并授予REPLICATION SLAVE权限: sql CREATE USER repl@% IDENTIFIED BY ReplPassword; GRANT REPLICATION SLAVE ON. TO repl@%; FLUSH PRIVILEGES; 请将`ReplPassword`替换为你自己的密码

     3.获取主库状态: 执行以下命令获取主库的状态信息,记录下`File`和`Position`的值,这些值在配置从库时会用到: sql SHOW MASTER STATUS; 四、配置从库(Slave) 从库的配置主要包括修改MySQL配置文件、设置复制参数以及验证同步状态

     1.修改MySQL配置文件: 编辑`/etc/my.cnf`文件,添加或修改以下配置: ini 【mysqld】 server-id=2 relay-log=mysql-relay-bin read_only=1 其中,`server-id`必须不同于主库的`server-id`;`relay-log`用于指定中继日志的名称;`read_only`设置为1表示从库为只读模式

     2.设置复制参数: 在从库上执行以下命令,设置复制参数以连接到主库: sql CHANGE MASTER TO MASTER_HOST=主库IP, MASTER_USER=repl, MASTER_PASSWORD=ReplPassword, MASTER_LOG_FILE=mysql-bin.000001, MASTER_LOG_POS=123456; START SLAVE; 请将`主库IP`替换为主库的实际IP地址,`mysql-bin.000001`和`123456`替换为主库状态信息中的`File`和`Position`值

     3.验证同步状态: 执行以下命令验证从库的同步状态,确保`Slave_IO_Running`和`Slave_SQL_Running`都为`Yes`: sql SHOW SLAVE STATUSG; 五、测试主从复制 在主库上创建一个测试数据库或表,并插入一些数据,然后在从库上检查这些变化是否已同步过来

    如果同步成功,说明主从复制配置正确

     六、常见问题及解决方案 1.UUID重复问题: 如果两台服务器的UUID重复,可能会导致复制失败

    可以通过修改`/var/lib/mysql/auto.cnf`文件中的UUID值来解决

     2.防火墙问题: 确保两台服务器之间的3306端口已开放

    可以使用`firewall-cmd`命令来添加端口规则

     3.二进制日志位置错误: 如果在配置从库时指定的二进制日志位置不正确,会导致复制失败

    需要重新获取主库的状态信息,并更新从库的复制参数

     4.网络连接失败: 检查两台服务器之间的网络连接是否正常

    可以使用`ping`命令来测试网络连通性

     七、高级配置建议 1.半同步复制: 为了提高数据一致性,可以配置半同步复制

    在主库和从库上分别安装并启用半同步复制插件

     2.延迟监控: 使用`SHOW SLAVE STATUS`命令中的`Seconds_Behind_Master`字段来监控从库的复制延迟情况

     3.自动故障切换: 为了实现高可用性,可以使用Keepalived等工具实现VIP漂移,或者使用MHA等方案实现自动故障切换

     4.性能优化: 根据硬件配置调整MySQL的性能参数,如`innodb_buffer_pool_size`、`sync_binlog`和`innodb_flush_log_at_trx_commit`等

     八、总结 通过本文的详细介绍,读者应该能够轻松地在CentOS系统下搭建MySQL主从复制环境

    在实际应用中,还需要根据具体需求进行进一步的配置和优化

    希望本文能够对读者有所帮助,如有任何疑问或建议,请随时联系