DBAtlas · 数据库运维图谱

MySQL GTID 复制(async / semi-sync)

MySQL难度: 中级耗时: 45–90 分钟

用已安装的 MySQL 服务器搭建 1 个 source + N 个 replica 的基于 GTID 的复制:复制用户、用 clone plugin 或 mysqldump 传输现有数据、SOURCE_AUTO_POSITION、TLS、可选的 semi-sync、super_read_only 的 replica、延迟监控以及手动 failover 流程。最终得到一个受监控的拓扑:写入由 source 承担,读取可由 replica 承担。如需自动 failover,请参见 InnoDB Cluster;已有复制的日常运维和故障处理请参见复制运维指南。

架构: 1 个 source + 1..5 个 replica

开始之前

  • 所有服务器上都已安装并运行相同小版本的 MySQL …(DBAtlas MySQL 单机安装指南),binlog 和 GTID 已启用。操作系统 root 可以用 mysql 无密码连接。
  • 每台服务器的 server_id 和 server_uuid 都不同。(如果服务器是通过复制/克隆创建的,datadir 中的 auto.cnf 可能相同:删除该文件并重启服务。)
  • 服务器之间可以通过 … 端口互相访问(…)。
  • 时钟已同步(chrony)。延迟测量和 PITR 依赖时间戳。
  • Replica 上的可用空间不小于 source 的数据量…,另需存放 dump 文件的空间…。
  • 已知 source 上的数据量和网络速度(用于估算传输时间)。
  • 已为复制用户…和临时 clone 用户…准备好强密码(至少 8 个字符,包含大小写字母、数字、特殊字符;不能包含 ' 和 \)。各步骤会以不回显方式提示输入密码。
  • 已确认应用只把写入发送到 source,读取(可选)发送到 replica;replica 将设为 super_read_only。

指南阶段

  • 准备(所有服务器) — 检查服务器标识 · 在防火墙中允许其他节点访问 · 添加复制设置(source) · 添加复制设置(…) · 重启 MySQL
  • 准备 source — 创建复制用户 · 安装 semi-sync 插件 · 在 source 上启用 semi-sync
  • 将数据传输到 replica(clone) — 安装 clone 插件 · 创建临时 clone 用户 · 克隆 source(…)
  • 将数据传输到 replica(mysqldump) — 从 source 获取一致的 dump · 将 dump 复制到各 replica · 导入 dump(…)
  • 启动复制 — 将 replica 设为只读(…) · 配置 source 并启动复制(…)
  • 验证 — 在 source 上查看已连接的 replica · 测试写入(source) · 在 replica 上读取测试写入(…) · 删除测试数据库
  • 延迟与状态监控 — 复制状态与延迟(…)
  • 清理 — 删除 clone 用户 · 删除 dump 文件
  • 手动 failover(source 丢失) — Failover:检查候选的状态 · Failover:检查候选的状态 · Failover:将候选提升为 source · Failover:将候选提升为 source · Failover:将其他 replica 指向新 source(…) · Failover:将其他 replica 指向新 source(…) …
按您的环境打开分步计划 →