TiDB Binlog

准实时备份同步工具
授权协议 Apache-2.0
开发语言 Google Go SHELL
所属分类 数据库相关、 数据库服务器
软件类型 开源软件
地区 国产
投 递 者 司雅畅
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

TiDB Binlog 是一个用于收集 TiDB 的 binlog,并提供准实时备份和同步功能的商业工具。

TiDB Binlog 支持以下功能场景

  • 数据同步:同步 TiDB 集群数据到其他数据库
  • 实时备份和恢复:备份 TiDB 集群数据,同时可以用于 TiDB 集群故障时恢复

TiDB Binlog 整体架构

TiDB Binlog 集群主要分为 Pump 和 Drainer 两个组件,以及 binlogctl 工具:

Pump

Pump 用于实时记录 TiDB 产生的 Binlog,并将 Binlog 按照事务的提交时间进行排序,再提供给 Drainer 进行消费。

Drainer

Drainer 从各个 Pump 中收集 Binlog 进行归并,再将 Binlog 转化成 SQL 或者指定格式的数据,最终同步到下游。

binlogctl 工具

binlogctl 是一个 TiDB Binlog 配套的运维工具,具有如下功能:

  • 获取 TiDB 集群当前的 TSO
  • 查看 Pump/Drainer 状态
  • 修改 Pump/Drainer 状态
  • 暂停/下线 Pump/Drainer

主要特性

  • 多个 Pump 形成一个集群,可以水平扩容。
  • TiDB 通过内置的 Pump Client 将 Binlog 分发到各个 Pump。
  • Pump 负责存储 Binlog,并将 Binlog 按顺序提供给 Drainer。
  • Drainer 负责读取各个 Pump 的 Binlog,归并排序后发送到下游。
  • Drainer 支持 relay log 功能,通过 relay log 保证下游集群的一致性状态。

注意事项

  • 需要使用 TiDB v2.0.8-binlog、v2.1.0-rc.5 及以上版本,否则不兼容该版本的 TiDB Binlog。

  • Drainer 支持将 Binlog 同步到 MySQL、TiDB、Kafka 或者本地文件。如果需要将 Binlog 同步到其他 Drainer 不支持的类型的系统中,可以设置 Drainer 将 Binlog 同步到 Kafka,然后根据 binlog slave protocol 进行定制处理,参考 binlog slave client 用户文档

  • 如果 TiDB Binlog 用于增量恢复,可以设置配置项 db-type="file",Drainer 会将 binlog 转化为指定的 proto buffer 格式的数据,再写入到本地文件中。这样就可以使用 Reparo 恢复增量数据。

    关于 db-type 的取值,应注意:

    • 如果 TiDB 版本 < 2.1.9,则 db-type="pb"
    • 如果 TiDB 版本 > = 2.1.9,则 db-type="file" 或 db-type="pb"
  • 如果下游为 MySQL/TiDB,数据同步后可以使用 sync-diff-inspector 进行数据校验。

  • TiDB Binlog部署 环境信息 中控机是10.152.x.133 [tidb_servers] 10.152.x.10 10.152.x.11 10.152.x.12 [tikv_servers] 10.152.x.10 10.152.x.11 10.152.x.12 [pd_servers] 10.152.x.10 10.152.x.11 10.152.x.12 ## Monito

  • TiDB Binlog 常见问题 本文介绍 TiDB Binlog 使用过程中的常见问题及解决方案。 开启 binog 对 TiDB 的性能有何影响?对于查询无影响。 对于有写入或更新数据的事务有一点性能影响。延迟上,在 Prewrite 阶段要并发写一条 p-binlog 成功后才可以提交事务,一般写 binlog 比 KV Prewrite 快,所以不会增加延迟。可以在 Pump 的监控面板看

  • 作者:黄佳豪 TiDB Binlog 组件用于收集 TiDB 的 binlog,并准实时同步给下游,如 TiDB、MySQL 等。该组件在功能上类似于 MySQL 的主从复制,会收集各个 TiDB 实例产生的 binlog,并按事务提交的时间排序,全局有序的将数据同步至下游。利用 TiDB Binlog 可以实现数据准实时同步到其他数据库,以及 TiDB 数据准实时的备份与恢复。随着大家使用的广泛

  • TiDB Binlog Overview 这篇文章不是讲 TiDB Binlog 组件的源码,而是讲 TiDB 在执行 DML/DDL 语句过程中,如何将 binlog 数据 发送给 TiDB Binlog 集群的 Pump 组件。目前 TiDB 在 DML 上的 binlog 用的类似 Row-based 的格式。TiDB Binlog 具体的架构细节可以参看这篇 TiDB Ecosystem

  • TiDB Binlog 组件用于收集 TiDB 的 binlog,并准实时同步给下游,如:TiDB/MySQL等。该组件在功能上类似于 MySQL 的主从复制,会收集各个 TiDB 实例产生的 binlog,并按事务提交的时间排序,全局有序的将数据同步至下游。利用 TiDB Binlog 可以实现数据准实时同步到其他数据库,以及 TiDB 数据准实时的备份与恢复。TiDB Binlog 作为 Ti

 相关资料
  • 我使用Hazelcast作为分布式键值存储。我将储存大约。100K密钥,为了加强hazelcast集群节点之间的数据一致性,我使用了与IMap作为分布式数据结构的同步备份。 在2个Unix盒中运行包含2个节点的hazelcast集群,问题是:在任一个节点中加载1000条记录的示例数据时,我看不到同步备份发生,尽管我已经明确地将同步备份设置为1,并从日志和hazelcast管理中心对其进行了验证。当

  • 前言 到最后一节来写“开篇”,确实有点古怪。不过,在第一篇(数值操作)的开头实际上也算是一个小的开篇,那里提到整个系列的前提是需要有一定的 Shell 编程基础,因此,为了能够让没有 Shell 编程基础的读者也可以阅读这个系列,我到最后来重写这个开篇。开篇主要介绍什么是 Shell,Shell 运行环境,Shell 基本语法和调试技巧。 什么是 Shell 首先让我们从下图看看 Shell 在整

  • 现在你知道使用Kotlin实现的小例子了,我确信你会希望尽可能快地把它用在你的实践当中去。不要担心,在第一章中会帮助你去搭建你的开发环境,这样你才能立即编写代码。

  • Note 本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。 在开始真正写游戏机制之前,我们首先需要配置一个简单的框架,用来存放这个游戏,这个游戏将会用到几个第三方库,它们的大多数都已经在前面的教程中介绍过了。在需要用到新的库的时候,我会作出适当的介绍。 首先,我们定义一个所谓的超级(Uber)游戏类,它会包含所有相关的渲染

  • 命令行界面还是图形界面? Git 提供两种主要的工作环境: “命令行界面” 或者一个 “GUI” 应用程序。使用哪一种界面都无所谓正确或错误。 在一方面,使用 GUI 应用程序会让你更有效和方便地使用一些复杂或者先进的功能。但这些复杂操作在命令行界面就显得过于复杂了。 在另一方面,我还是建议你首先来学习 Git 的命令,这样可以帮助你更进一步地了解一些重要的基础工作原理,而且不需要倚赖于任何一个图

  • 我在Android中创建了一个SQLite数据库的备份,并希望将其同步到Google Drive。备份未同步,并且以下代码没有错误:

  • 本文向大家介绍linux定时备份mysql并同步到其它服务器,包括了linux定时备份mysql并同步到其它服务器的使用技巧和注意事项,需要的朋友参考一下 数据在任何一家公司里面都是最核心的资产,定期备份则是为了保证数据库出现问题的时候能够及时回滚到最近的备份点,将损失缩小到最小 这篇文章将会两部分来说明: 1、mysql的定期备份; 2、同步到其它服务器 mysql 备份 备份还原某个数据库 备

  • 4.2.1 目录结构 我们停止 supervisor 并删除 myblog 目录从头来过。重新创建 myblog,运行 npm init,如下: 在 myblog 目录下创建以下目录及空文件(package.json 除外): 对应文件及文件夹的用处: models: 存放操作数据库的文件 public: 存放静态文件,如样式、图片等 routes: 存放路由文件 views: 存放模板文件 in