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

MySQL 高可用基石 - 复制监控与常见 HA 方案

MySQL 高可用基石 - 复制监控与常见 HA 方案


MySQL 复制核心原理

MySQL 复制允许数据从一个 MySQL 数据库服务器(称为主库 - Primary,旧称 Master)复制到一个或多个其他的 MySQL 服务器(称为从库 - Replica,旧称 Slave)。

复制的主要目的:

  • 高可用性 (High Availability):当主库发生故障时,可以将一个从库提升为新的主库,从而快速恢复服务。
  • 读扩展 (Read Scalability):可以将读密集型的查询分发到从库上执行,减轻主库的压力,提高整体读取性能。
  • 备份 (Backups):可以在从库上执行备份操作,避免对主库产生额外的负载和锁竞争。
  • 地理分布 (Geographic Distribution):可以将从库部署在不同地理位置,让用户就近访问数据,或作为异地灾备。

基本架构 (主从复制):

  1. 主库 (Primary/Master)
    • 接收所有写操作(INSERT, UPDATE, DELETE)。
    • 将所有数据变更事件记录到其二进制日志 (Binary Log, binlog) 中。
  2. 从库 (Replica/Slave)
    • 连接到主库。
    • 拥有一个 I/O 线程 (I/O Thread):该线程从主库请求并读取 binlog 事件,然后将这些事件写入到从库本地的中继日志 (Relay Log, relay-log)
    • 拥有一个 SQL 线程 (SQL Thread):该线程读取中继日志中的事件,并在从库上重放 (replay) 这些事件,从而使从库的数据与主库保持一致。

二进制日志格式 (Binlog Formats):

binlog_format 参数的设置对复制的可靠性和行为有重要影响:

  • STATEMENT (SBR - 基于语句的复制):(已不推荐用于生产) 直接记录执行的 SQL 语句。对于某些非确定性函数(如 UUID(), NOW() 依赖于执行时间)或包含用户定义函数的语句,可能导致主从数据不一致。
  • ROW (RBR - 基于行的复制)强烈推荐使用。记录实际发生变更的数据行(通常是变更前后的行镜像,或仅变更后的镜像)。更安全,更能保证数据一致性,对绝大多数场景都适用。这是 MySQL 5.7.7 及之后版本的默认格式。
  • MIXED (混合格式):My
http://www.lqws.cn/news/144037.html

相关文章:

  • DBSyncer:开源数据库同步利器,MySQL/Oracle/ES/SqlServer/PG/
  • 企业培训学习考试系统源码 ThinkPHP框架+Uniapp支持多终端适配部署
  • 行列式的性质
  • exp1_code
  • Redis 缓存策略:借助缓存优化数据库性能并保障数据一致性
  • 9.axios底层原理,和promise的对比(2)
  • 外网访问内网服务器常用的三种简单操作步骤方法,本地搭建网址轻松让公网连接
  • 游戏设计模式 - 子类沙箱
  • OCR助力保险业建设
  • 【C++】二叉搜索树
  • ocrapi服务docker镜像使用
  • 从零开始的云计算——番外实战,iptables防火墙项目
  • WordZero:让Markdown与Word文档自由转换的Golang利器
  • 【Go语言基础【2】】数据类型之基础数据类型:数字、字符、布尔、枚举、自定义
  • 1、Go语言基础中的基础
  • 【Go语言基础【四】】局部变量、全局变量、形式参数
  • PPT转图片拼贴工具 v3.0
  • Spark 写文件
  • Dubbo Logback 远程调用携带traceid
  • 41道Django高频题整理(附答案背诵版)
  • PostgreSQL 的扩展pg_prewarm
  • 20250605在微星X99主板中配置WIN10和ubuntu22.04.6双系统启动的引导设置
  • Django CMS 的 Demo
  • NoSQL之Redis配置与优化
  • SQL Server相关的sql语句
  • 嵌入式学习 D33:系统编程--网路编程
  • ubuntu 端口复用
  • Ubuntu20.04设置为开机后直接自动进入纯命令行界面
  • 【Linux】为 Git 设置 Commit 提交模板方法,可统一个人或者项目的提交风格
  • 【Git系列】如何同步原始仓库的更新到你的fork仓库?