当前位置: 首页 > news >正文

mysql主从复制是什么

一、主从复制原理

  1. 二进制日志(Binary Log)
    主服务器(Master)将所有写操作(如INSERT、UPDATE、DELETE)记录到二进制日志中,作为数据变更的唯一来源。日志按事务顺序记录,确保数据一致性。

  2. 中继日志(Relay Log)
    从服务器(Slave)通过I/O线程从主服务器拉取二进制日志,存储到本地中继日志中。SQL线程随后解析并执行这些日志,实现数据同步。

  3. 线程角色

    • 主服务器:仅需记录二进制日志,无额外线程。
    • 从服务器:
      • I/O线程:连接主服务器,拉取二进制日志到中继日志。
      • SQL线程:执行中继日志中的SQL语句,更新本地数据。
  4. 复制模式

    • 异步复制(默认):主服务器提交事务后立即返回,不等待从服务器确认,可能导致数据丢失。
    • 半同步复制:主服务器需等待至少一个从服务器确认接收日志后才返回,减少数据丢失风险。
    • 全同步复制:需所有从服务器确认,延迟高,极少使用。

二、配置步骤

主服务器配置

  1. 启用二进制日志
    修改my.cnf,添加以下配置:

    [mysqld]
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
    binlog-do-db = your_database  指定复制的数据库
    

    重启MySQL服务:sudo systemctl restart mysql

  2. 创建复制用户

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

    记录二进制日志位置:SHOW MASTER STATUS;(需记录FilePosition)。

从服务器配置

  1. 配置唯一server-id
    修改my.cnf

    [mysqld]
    server-id = 2
    relay_log = /var/log/mysql/mysql-relay-bin.log
    

    重启MySQL服务。

  2. 设置主从关系

    CHANGE MASTER TO 
    MASTER_HOST='master_ip', 
    MASTER_USER='replicator', 
    MASTER_PASSWORD='password', 
    MASTER_LOG_FILE='mysql-bin.000001', 
    MASTER_LOG_POS=123;
    START SLAVE;
    

    验证状态:SHOW SLAVE STATUS\G,确保Slave_IO_RunningSlave_SQL_RunningYes


三、常见问题与解决方案

  1. 复制延迟

    • 原因:网络延迟、从库性能不足、大事务或长查询。
    • 优化:
      • 升级从库硬件(如SSD、增加CPU/内存)。
      • 启用并行复制(MySQL 5.6支持库级别并行,5.7支持事务组并行)。
      • 优化SQL语句,减少批量操作。
  2. 错误处理

    • IO线程故障:检查网络连通性,重置从库:STOP SLAVE; RESET SLAVE ALL; CHANGE MASTER TO ...; START SLAVE;
    • SQL线程报错:跳过错误:SET GLOBAL sql_slave_skip_counter = 1;
  3. 数据不一致

    • 主从延迟导致读写分离时的短暂不一致,可通过应用层容忍或强制读主库。

四、应用场景

  1. 读写分离:主库处理写操作,从库分担读压力,提升并发性能。

  2. 高可用性:主库故障时,从库可快速接管服务。

  3. 数据备份与灾难恢复:从库作为实时备份,支持快速恢复。

  4. 级联复制:多层从库结构,扩展复制范围。


五、注意事项

时间同步:主从服务器需使用NTP同步时间,避免日志解析错误。

  • 自增主键冲突:避免主从同时写入,或使用AUTO_INCREMENT_INCREMENTAUTO_INCREMENT_OFFSET配置。
  • 监控:定期检查SHOW SLAVE STATUS,关注Seconds_Behind_Master和错误日志。
    通过合理配置和优化,MySQL主从复制可显著提升系统性能、可靠性和扩展性,是构建高可用数据库架构的基石。

相关文章:

  • 【质量管理】什么是过程?
  • 【数据库知识】Mysql进阶-高可用MHA(Master High Availability)方案
  • 如何使用 Netstat 查看监听端口
  • 大数据基础——Ubuntu 安装
  • 金融行业NLP优化:英特尔至强AI加速实战案例
  • 【python】基础知识点100问
  • opencv关键点检测
  • Ubuntu 24服务器部署abp vnext应用程序的完整教程
  • 谷歌与微软的AI战争:搜索、云服务与生态布局
  • 金仓kingbase数据库管理工具KStudio.exe无法启动且不报错的解决办法
  • [SAP] SAP ERP用户参数设置
  • LLM 论文精读(七)Rethinking Reflection in Pre-Training
  • 【入门】打印字母塔
  • uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)
  • Linux基础整理
  • Sim Studio - 构建、测试和优化智能体工作流的强大平台
  • 游戏引擎学习第273天:动画预览
  • redis数据结构-07(SADD、SREM、SMEMBERS)
  • 第二十二节:图像金字塔-拉普拉斯金字塔
  • 第一章 初识Java
  • 学者的“好运气”:读本尼迪克特·安德森《椰壳碗外的人生》
  • 泽连斯基批准美乌矿产协议
  • 美国三大指数全线高开:纳指涨逾4%,大型科技股、中概股大涨
  • 国务院新闻办公室发布《新时代的中国国家安全》白皮书
  • 人民空军:网上出现的“运-20向外方运送物资”为不实消息
  • 宇树科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入