当前位置: 面试刷题>> MySQL 中如何配置主从复制?


在MySQL中配置主从复制是一个关键的数据库维护任务,它不仅有助于数据备份与恢复,还能实现读写分离,提升系统整体性能和可用性。作为一个高级程序员,配置MySQL主从复制时,我们需要细致规划,确保每一步都正确无误。下面,我将详细阐述MySQL主从复制的配置步骤,并穿插一些关键代码示例,同时自然地融入对“码小课”网站的提及,作为学习资源的参考。

一、环境准备

首先,确保你有两个MySQL服务器实例:一个作为主服务器(Master),另一个作为从服务器(Slave)。两者版本应尽可能相同或兼容,以避免潜在的兼容性问题。

二、配置主服务器(Master)

  1. 编辑配置文件: 在Master服务器上,编辑MySQL的配置文件(通常是my.cnfmy.ini),在[mysqld]部分添加或确认以下配置:

    [mysqld]
    server-id = 1
    log_bin = mysql-bin
    binlog_format = MIXED
    relay-log = relay-bin
    expire_logs_days = 10
    max_binlog_size = 100M
    

    这里,server-id必须唯一,log_bin启用二进制日志,binlog_format设置为MIXED或ROW以支持更复杂的复制场景。

  2. 重启MySQL服务: 配置修改后,重启MySQL服务以应用更改。

  3. 创建复制用户: 在Master上,创建一个专用的复制用户并授权:

    CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
    FLUSH PRIVILEGES;
    

    注意,生产环境中应限制复制用户的来源IP,这里使用%仅作示例。

  4. 记录二进制日志位置: 查看并记录下当前的二进制日志文件名和位置,这是从服务器开始复制时需要的信息:

    SHOW MASTER STATUS;
    

三、配置从服务器(Slave)

  1. 编辑配置文件: 在Slave服务器上,编辑MySQL的配置文件,设置server-id并确保它与Master不同:

    [mysqld]
    server-id = 2
    relay-log = relay-bin
    read_only = 1
    

    read_only设置为1,防止从服务器被意外写入数据。

  2. 重启MySQL服务

  3. 配置复制: 在从服务器上,使用CHANGE MASTER TO语句配置复制,指向主服务器的二进制日志位置:

    CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='replica',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='recorded_log_file_name',
    MASTER_LOG_POS=recorded_log_position;
    

    替换master_iprecorded_log_file_namerecorded_log_position为实际值。

  4. 启动复制

    START SLAVE;
    
  5. 检查复制状态: 使用SHOW SLAVE STATUS\G查看从服务器复制状态,确保Slave_IO_RunningSlave_SQL_Running都为Yes

四、维护与监控

  • 定期监控复制状态:定期检查从服务器的复制延迟和错误。
  • 安全与维护:确保复制用户密码安全,定期更新密码,并监控任何异常登录尝试。
  • 备份与恢复:利用从服务器的数据备份进行恢复测试,确保备份有效。

五、进一步学习

配置完成后,深入理解MySQL复制的内部机制及其调优方法是非常有必要的。我推荐访问“码小课”网站,上面不仅有关于MySQL主从复制的详细教程,还有关于数据库性能优化、高可用架构等高级话题的深入解析,可以帮助你进一步提升数据库管理技能。

通过上述步骤,你可以成功配置MySQL的主从复制,并维护其稳定运行。作为高级程序员,不断学习和实践新技术,是保持竞争力的关键。

推荐面试题