MySQL主从复制 - 主从配置、复制延迟监控、故障切换

润信云 技术支持

MySQL 主从复制:配置、监控与故障切换

一、引言

MySQL 主从复制是一种常用的数据库架构,它将主数据库的数据变更同步到一个或多个从数据库,在读写分离、数据备份、高可用等方面有着广泛应用。本文将详细介绍 MySQL 主从复制的主从配置、复制延迟监控以及故障切换。

二、主从配置

(一)主库配置

  1. 编辑 MySQL 配置文件(通常为 my.cnfmy.ini),设置唯一的服务器 ID(server - id),如 server - id = 1
  2. 启用二进制日志功能,设置 log - bin = /path/to/mysql - bin.log,指定二进制日志文件的存储路径。
  3. 重启 MySQL 服务使配置生效。
  4. 创建用于主从复制的账号,例如:
    CREATE USER'repl_user'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO'repl_user'@'%';
    FLUSH PRIVILEGES;
  5. 执行 SHOW MASTER STATUS; 命令,记录下 FilePosition 的值,后续从库配置会用到。

(二)从库配置

  1. 同样编辑 MySQL 配置文件,设置唯一的服务器 ID,如 server - id = 2
  2. 重启 MySQL 服务。
  3. 配置从库连接主库信息:
    CHANGE MASTER TO
    MASTER_HOST='master_host_ip',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='master_log_file_name',
    MASTER_LOG_POS=master_log_position;

    其中,master_host_ip 是主库的 IP 地址,master_log_file_namemaster_log_position 分别是在主库上获取的 FilePosition 的值。

  4. 启动从库复制线程:START SLAVE;
  5. 使用 SHOW SLAVE STATUS\G; 命令检查从库状态,确保 Slave_IO_RunningSlave_SQL_Running 都为 Yes,并且 Seconds_Behind_Master 显示正常的延迟情况。

三、复制延迟监控

(一)使用 SHOW SLAVE STATUS

从库执行 SHOW SLAVE STATUS\G; 命令,其中 Seconds_Behind_Master 字段表示从库相对于主库的延迟时间(以秒为单位)。虽然它不是完全精确的,但能大致反映延迟情况。

(二)自定义脚本监控

可以编写脚本定期查询从库状态,获取 Seconds_Behind_Master 的值,并设置阈值。当延迟超过阈值时,发送警报通知运维人员。例如,使用 Python 结合 mysql - connector - python 库实现:

import mysql.connector

def check_slave_latency():
    cnx = mysql.connector.connect(user='user', password='password',
                                  host='slave_host', database='')
    cursor = cnx.cursor()
    cursor.execute("SHOW SLAVE STATUS\G")
    result = cursor.fetchall()
    for row in result:
        if 'Seconds_Behind_Master' in row[0]:
            latency = row[1]
            if latency > 10:  # 假设阈值为 10 秒
                print("Slave replication latency is high!")
    cursor.close()
    cnx.close()

if __name__ == "__main__":
    check_slave_latency()

四、故障切换

(一)手动故障切换

当主库出现故障时,可以手动将从库提升为主库。步骤如下:

  1. 在从库上停止复制线程:STOP SLAVE;
  2. 重置从库配置,使其成为主库:RESET MASTER;
  3. 更新应用程序的数据库连接配置,指向新的主库。

(二)自动故障切换

可以使用工具如 MHA(Master High Availability)来实现自动故障切换。MHA 会监控主库状态,当主库故障时,自动将一个从库提升为主库,并通知应用程序更新连接信息。

MySQL 主从复制的合理配置、有效监控和及时故障切换,能够为数据库系统提供可靠的高可用性和性能优化。

本文链接:https://blog.runxinyun.com/post/517.html 转载需授权!

分享到:
版权声明
网站名称: 润信云资讯网
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮件:7104314@qq.com
网站部分内容来源于网络,版权争议与本站无关。请在下载后的24小时内从您的设备中彻底删除上述内容。
如无特别声明本文即为原创文章仅代表个人观点,版权归《润信云资讯网》所有,欢迎转载,转载请保留原文链接。
0 65

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。