本文共 2351 字,大约阅读时间需要 7 分钟。
MySQL 复制 是 数据库 高级 管理 的重要课 sharper tricks。MySQL 复制 主要 有 三种 模式:基于 SQL 语句的复制 (SBR)、基于 行的复制 (RBR) 和 混合模式复制 (MBr)。每种模式 都有 对应的 binlog 格式:STATEMENT、ROW 和 MIXED。本文将详细 讲解 这些 模式 的 特点 以及 binlog 格式 的 配置 方法。
STATEMENT 模式 是 MySQL 复制 的 最经典 模式之一。其 特点 是 记录 地主ların enemi 系统改动 的 SQL 语句 而不是 每一 行 的 刚变。这 使得 binlog 日志 越轻裕, IO 操作 也 更高效。
但是,该 模式 也 存在 缺点。例如,在 主从 服务器 之间 如果触发某些 特定 函数(如 sleep() 或 udf)的调用 或者٢ last_insert_id() 的 值发生变化,可能 会 导致 数据 不一致。此外,考虑 到货架 如果 USING FOUND_ROWS() 或者类似的函数调用,复制 过程 也 可能出现 问题。
ROW 模式 则 不 记录 每一 条 SQL 语句 的 上下文 信息,而仅 记录 数据 量 的 刚变。这种 方式 的 优点 是 不会 遭遇 到某些 特定 函数(如触发器、存储过程)的 复制 问题。在 大多数情况 下 Suppose row 模式 是更安全可靠的 复制 方式。
不过,这种 方式 也 有 其缺点。例如,binlog 日志 会 因为 记录 更多 的 行 刚变 而 变得 非常 大。特别是在 会修改大量 数据的 ALTER TABLE 操作 时,binlog 日志ốgesize 可能 会暴炸式增长。此外,在 从服务器 上 执行 复制 时 的资源 消耗 会比 SBR 模式 高。
MBr 模式 是 SBR 和 RBr 模式 的 混合。MySQL 会 根据 SQL 语句 的 类型 自动 选择 binlog 格式。一般推荐 为 STATEMENT 模式 的 SQL 进行记录, 而 对于 不 可以在 STATEMENT 模式 中 被 处理 的 终身操作 则 采用 RBr 模式。
这一 模式 的 优势 在于 可以 最大限度地 利用每种 模式 的优势。例如,对于 基于时间函数 的 SQL(如 now()),binlog 会 含有向 server surrender 的 时间 信息,以 确保 数据 的 数 碎 准确。对于无法在从服务器 上 被 处理 的功能性函数(如 ucf),则 会 采用 RBr 模式 记录。
在MySQL 的 my.cnf 配置 文件 中,可以 通过以下选项 来 配置 binlog:
在 MySQL 中,如果 使用 INSERT、UPDATE 或 DELETE 直接 操作 表,则 binlog 格式 会 根据 binlog_format 的设置 进行记录。无论 binlog_format 是该怎么样,管理 数 语句(如 grant、revoke、set password 等)都 将采用 RBr 模式 记录。
MySQL 复制是一个 将 数据 序列 化、分发 给Slave节点的 很重要 的 工作流程。选择 正确的 模式 以及合理 的 binlog 配置 方可 优化 前后的性能,同时确保 数据 的 稳定性 和 可 持有性。
转载地址:http://elxhz.baihongyu.com/