欢迎光临
我们一直在努力

如何在Linux云服务器上配置数据库主从复制?

Linux云服务器数据库主从复制配置全攻略

在当今数据驱动的时代,数据库高可用性配置已成为企业IT基础设施的必备方案。本文将详细介绍在Linux云服务器上配置MySQL数据库主从复制的完整流程,帮助您构建可靠的数据备份和读写分离架构。

一、准备工作

在开始配置前,请确保您已准备好以下环境:

  • 两台Linux云服务器(建议使用相同发行版)
  • MySQL 5.7或以上版本已安装
  • 服务器间网络互通(建议配置内网连接)
  • root或具有sudo权限的用户

重要提示:生产环境建议使用专用网络通道,避免通过公网传输敏感数据。

二、主服务器配置

1. 修改MySQL配置文件

# 编辑my.cnf文件(路径可能因发行版而异)
sudo vi /etc/mysql/my.cnf

# 在[mysqld]段落下添加以下配置
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
binlog_do_db = 需要复制的数据库名
expire_logs_days = 10
max_binlog_size = 100M
    

2. 创建复制专用账户

mysql> CREATE USER 'replicator'@'从服务器IP' IDENTIFIED BY '强密码';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'从服务器IP';
mysql> FLUSH PRIVILEGES;
    

3. 锁定数据库并获取主库状态

mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
    

记录File和Position的值,从服务器配置时需要用到。

三、从服务器配置

1. 修改MySQL配置文件

server-id = 2  # 必须与主服务器不同
relay_log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
read_only = 1  # 从库设为只读
    

2. 配置复制链路

mysql> CHANGE MASTER TO
    MASTER_HOST='主服务器IP',
    MASTER_USER='replicator',
    MASTER_PASSWORD='密码',
    MASTER_LOG_FILE='主库记录的File值',
    MASTER_LOG_POS=主库记录的Position值;
    

3. 启动复制进程

mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
    

检查Slave_IO_Running和Slave_SQL_Running是否为Yes。

四、验证与监控

在主库创建测试数据,观察从库是否同步:

# 主库操作
mysql> CREATE DATABASE replication_test;
mysql> USE replication_test;
mysql> CREATE TABLE test_table(id INT);

# 从库验证
mysql> SHOW DATABASES;  # 应能看到replication_test
    

常用监控命令:

  • SHOW SLAVE STATUS\G – 查看复制状态
  • SHOW PROCESSLIST; – 查看数据库进程
  • SHOW MASTER STATUS; – 查看主库二进制日志状态

五、故障排除

常见问题及解决方案:

  1. Slave_IO_Running为Connecting:检查网络连接、防火墙设置和复制账户权限
  2. 复制位置错误:使用STOP SLAVE; RESET SLAVE; CHANGE MASTER TO...重新配置
  3. 数据不一致:考虑使用mysqldump重新初始化从库

建议设置定期监控脚本,自动检查复制状态并及时报警。

总结

通过本文的详细步骤,您已成功在Linux云服务器上配置了MySQL主从复制。这种架构不仅能提高数据安全性,还能通过读写分离提升系统整体性能。随着业务增长,您可以进一步考虑配置级联复制或使用GTID实现更灵活的拓扑结构。

记住定期检查复制状态,并考虑实现自动化监控方案,确保数据同步的可靠性。

赞(0)
未经允许不得转载:莱卡云 » 如何在Linux云服务器上配置数据库主从复制?