MySQL 主从切换实战指南

作者:梅琳marlin2024.01.22 14:48浏览量:18

简介:本文将详细介绍MySQL主从切换的步骤,包括前期准备、配置、测试和切换等环节。通过本文,读者可以快速掌握MySQL主从切换的方法,提高数据库的可用性和可靠性。

MySQL 主从切换是在 MySQL 数据库中实现高可用性和数据备份的一种常用方法。通过配置一个主数据库和一个或多个从数据库,当主数据库出现故障时,可以快速地将从数据库提升为主数据库,以保证业务的连续性。以下是 MySQL 主从切换的详细步骤:
一、前期准备

  1. 确保主数据库和从数据库的硬件和操作系统环境一致,包括 CPU、内存、磁盘等。
  2. 确保主数据库和从数据库的 MySQL 版本一致。
  3. 在主数据库上创建一个专用的复制用户,并为其分配复制权限。例如:
    1. GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'password';
  4. 确保主数据库的二进制日志功能已启用并正确配置。可以通过以下命令检查:
    1. SHOW VARIABLES LIKE 'log_bin';
    如果未启用,可以通过以下命令启用:
    1. SET GLOBAL log_bin = 'mysql-bin';
  5. 在主数据库上查看二进制日志的位置和名称:
    1. SHOW MASTER STATUS;
    记录下 File 和 Position 的值,稍后在配置从数据库时需要用到。
    二、配置从数据库
  6. 在从数据库上创建一个与主数据库相同的数据库结构。可以使用主数据库的备份文件或使用 mysqldump 命令导出主数据库的结构。
  7. 修改从数据库的 my.cnf 配置文件,添加以下内容:
    1. [mysqld]
    2. server-id=2 # 从数据库的唯一标识符,不能与主数据库相同
    3. log_bin=mysql-bin # 启用二进制日志功能
    4. relay_log=mysql-relay-bin # 中继日志功能
    5. read_only=1 # 设置为只读模式,防止误操作修改数据
  8. 重启从数据库服务,使配置生效。
  9. 在从数据库上配置复制用户:
    1. GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'password';
  10. 在从数据库上执行以下命令,指定主数据库的地址、端口、用户名和密码:
    1. CHANGE MASTER TO MASTER_HOST='master_ip', MASTER_PORT=3306, MASTER_USER='repl_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='master_log_file', MASTER_LOG_POS=master_log_pos;
    master_ip 替换为主数据库的 IP 地址,3306 替换为主数据库的端口号,repl_userpassword 替换为之前创建的复制用户的用户名和密码,master_log_filemaster_log_pos 替换为主数据库的二进制日志文件名和位置。
  11. 在从数据库上执行以下命令开始复制:
    1. START SLAVE;
    三、测试复制功能
  12. 在主数据库上执行一些数据修改操作,例如插入、更新、删除等。观察从数据库是否同步了这些操作。可以使用工具如 mysqlbinlog 检查二进制日志来验证复制过程。例如:mysqlbinlog /path/to/mysql-bin.000001。查看是否有相应的 SQL 语句被写入到日志中。确认复制过程没有问题。如果有任何问题,检查网络连接、权限设置等可能的原因。2. 如果一切正常,那么现在你的从数据库已经可以接管主数据库了。你可以通过修改应用程序的连接字符串来将应用程序连接到这个从数据库。但是请注意,由于这个从库是只读的,所以不能进行写操作。3. 当主库恢复后,你可以将它重新配置为新的从库,然后再次进行测试。四、切换主从库在确认从库已经可以接管后,你就可以进行切换了。步骤如下:1. 在新的主库上设置一个不同的 server-id。这样就可以防止因为配置错误导致的双主问题。例如,你可以设置为 server-id=3。然后重启新主库使配置生效。2. 在新主库上执行 CHANGE MASTER TO 命令,指定原来的从