tidb-使用tidbbinlog实现数据复制(代码片段)

小毕超 小毕超     2023-02-16     623

关键词:

一、TiDB Binlog简介

TiDB Binlog 是一个用于收集 TiDB 的 binlog,并提供准实时备份和同步功能的工具,可以理解为Mysql 的 Binlog 主从服务模式,并且TiDB Binlog还支持将数据发送到Kafka中,这又类似与Canal中间件。目前TIDB Binlog集群主要分为 Pump 和 Drainer 两个组件,以及 binlogctl 工具。

TiDB Binlog 整体架构


注意:

TiDB Binlog 与 TiDB v5.0 版本开始引入的一些特性不兼容,无法一起使用,建议使用 TiCDC 替代 TiDB Binlog。TiCDC在后面的文章中也会讲到。

下面实现TIDB 到 Mysql的数据复制。

二、在集群中扩容出pump和drainer

当前的集群情况:

tiup cluster display tidb-test


一台tidb-server,三台tikv-server,三台pd-server。
并在mysql中创建和Tidb相同的库和表结构。

1. 在mysq数据库中,添加同步用户

创建用户

create user 'tidb' identified by 'tidb123';

赋予权限

grant all privileges on *.* to 'tidb';

2. 编写scale-out-binlog.yaml文件

vi scale-out-binlog.yaml

填写下面内容:

pump_servers:
  - host: 192.168.40.160 
    config:
      gc: 7
drainer_servers:
  - host: 192.168.40.162 
    config:
      syncer.db-type: "mysql"
      syncer.to.host: "www.bixc.net"
      syncer.to.user: "tidb"
      syncer.to.password: "tidb123"
      syncer.to.port: 3307
    #kafka配置
	  #syncer.db-type: "kafka" 
	  #syncer.to.kafka-addrs: "127.0.0.1:9092"
	  #syncer.to.kafka-version: "0.8.2.0"

注意pump_servers,要和tidb-server在一个节点。

3. 开始扩容

tiup cluster scale-out tidb-test scale-out-binlog.yaml -u root -p


从打印日志可以看出已经扩容成功,下面看下集群状态:

tiup cluster display tidb-test


这样 pump 和 drainer 就已经部署好了,但是如果试下在tidb中添加数据,并不会同步给mysql,此时是因为Tidb集群需要开启binlog。

开启binlog

tiup cluster edit-config tidb-test

添加下面东西:

server_configs:
  tidb:
    binlog.enable: true
    binlog.ignore-error: true

重载配置文件:

tiup cluster reload tidb-test


重新配置后,可以在Tidb客户端,查看binlog开启状态:

show variables like "log_bin";


ON即为开启状态。

看下pump和drainer的状态:

show pump status;

show drainer status;


状态都为online在线状态。

三、测试数据同步

在TIDB中添加一行数据:

在mysql中查看数据:


已经同步成功了。

四、binlogctl使用

1. 安装binlogctl

wget https://download.pingcap.org/tidb-v5.0.0-linux-amd64.tar.gz
tar xvf tidb-v5.0.0-linux-amd64.tar.gz
cd tidb-v5.0.0-linux-amd64/bin/

查看 pump 节点的状态

./binlogctl -pd-urls=http://192.168.40.160:2379 -cmd pumps

查看 drainer 节点的状态

./binlogctl -pd-urls=http://192.168.40.160:2379 -cmd drainers

暂停 drainer 节点

./binlogctl -pd-urls=http://192.168.40.160:2379 -cmd pause-drainer -node-id

重新启动drainer,进入安装drainer主机:

cd /tidb-deploy/drainer-8249/bin/
./drainer -pd-urls=http://192.168.40.160:2379 -config ../conf/drainer.toml


喜欢的小伙伴可以关注我的个人微信公众号,获取更多学习资料!

tidb-使用ticdc将数据同步至下游kafka中(代码片段)

...步至Mysql中,从上个任务就可以看出,TiCDC相比于Tidbbinlog在配制上就简化了很多,而且我们也知道TICDC的性能也是优于tidbbinlog的,今天我们学习下使用TiCDC怎么将数据同步至下游Kafka中,以实现TIDB到ES、MongoDB、R... 查看详情

tidb-使用ticdc将数据同步至下游kafka中(代码片段)

...步至Mysql中,从上个任务就可以看出,TiCDC相比于Tidbbinlog在配制上就简化了很多,而且我们也知道TICDC的性能也是优于tidbbinlog的,今天我们学习下使用TiCDC怎么将数据同步至下游Kafka中,以实现TIDB到ES、MongoDB、R... 查看详情

tidb-使用ticdc将数据同步至下游mysql中(代码片段)

...nProtocol),支持其他系统订阅数据变更。和前面学习的Tidbbinlog不同,binlog是直接取的tidb-server的日志信息,而TiCDC则是取的Tikv的,相比性能更优,但TiCDC只有数据修改时会触发同步,不包括ddl,所以说使... 查看详情

在开发环境使用tiup安装tidb集群(代码片段)

...1b;管理TiDB集群参数。目前 TiUP可以支持部署TiDB、TiFlash、TiDBBinlog、TiCDC,以及监控系统。一实验环境本文实验环境如下:这里将Tiup,监控,grafana,告警灯都部署在PD上。这里只是模拟在开发环境安装tidb,... 查看详情

在开发环境使用tiup安装tidb集群(代码片段)

...1b;管理TiDB集群参数。目前 TiUP可以支持部署TiDB、TiFlash、TiDBBinlog、TiCDC,以及监控系统。一实验环境本文实验环境如下:这里将Tiup,监控,grafana,告警灯都部署在PD上。这里只是模拟在开发环境安装tidb,... 查看详情

tidb-使用tiup在线搭建tidb集群(代码片段)

...及管理TiDB集群参数。目前TiUP可以支持部署TiDB、TiFlash、TiDBBinlog、TiCDC,以及监控系统。本文将介绍不同集群拓扑的具体部署步骤。二、使用TIUP部署集群整体架构主机角色192.168.40.130中控机,tidb-server,tikv-server,pd... 查看详情

极简实现tidb冷热数据分层存储|he3团队访谈

...#xff0c;让我们知道原来TiDB还可以这么玩。——He3团队TiDB在使用过程中,随着用户 查看详情

带着问题读tidb源码:hive元数据使用tidb启动报错

...跃的许多伙伴还需要更简单,并且同自己每天工作中使用TiDB时遇到的问题更相关的源码阅读文章。本文是《带着问题读源码系列》的第一次尝试,在定位并解决用户所遇到的一个简单问题的过程中,对相关的代码一... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

猿创征文|国产数据库实战之使用docker部署tidb集群(代码片段)

猿创征文|国产数据库实战之使用Docker部署TiDB集群一、TiDB介绍1.TiDB简介2.TiDB特性3.TiDB集群整体架构4.TiDB集群各部分介绍5.本次TiDB集群组件二、检查本地环境1.检查docker状态2.检查docker版本3.检查docker-compose版本三、下载tidb-docker-comp... 查看详情

htapx云原生:tidb加速释放数据价值,实现数据敏捷

2022年6月28日,企业级开源分布式数据库厂商PingCAP举行“TiDBV6暨PingCAP云战略发布会”,发布了TiDBV6版本,分享了TiDB技术演进路线,并与合作伙伴一起解读了云原生时代的数据库解决方案和生态战略,为广大MySQ... 查看详情

tidb-使用tidblightning迁移mysql数据至tidb中(代码片段)

...Mydumper或CSV输出格式的数据源。你可以在以下两种场景下使用Lightning:迅速导入大量新数据。备份恢复所有数据。TiDBLightning主要包含两个部分:tidb-lightning(“前端”):主要完成适配工作,通过读取数据源ÿ... 查看详情

tidb初级课程体验2(分布式数据库引擎)

...的信息是通过keyvalue来组成的,而在逻辑和物理之间进行实现的过程中tidb做了如下的工作。1 存储的表必须有主键,通过主键也就是ROW_ID来实现一个表的逻辑有序性,通过逻辑有序性来实现查找,这与其他的数据库查找的方... 查看详情

tidb6.0placementrulesinsql使用实践(代码片段)

...的TiKV实例上将冷数据分离到不同的存储中以提高可用性使用放置规则时有2种方式(1)直接放置直接放置是指在createtable时或使用altertable方式直接在表的DDL语句中使用放置选项 查看详情

使用dumpling从tidb/mysql导出数据

安装tiupinstalldumpling所需要权限shellSELECTRELOADLOCKTABLESREPLICATIONCLIENTPROCESS基本参数-h|--host:连接的数据库主机的地址,默认127.0.0.1-p|--password:连接的数 查看详情

zabbix+tidb:可实现水平扩展(代码片段)

什么是tidbTiDB是开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产品。具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库、兼容MySQL5.7协议和MySQL生态等重... 查看详情

tidb监控框架概述

TiDB使用开源时序数据库 Prometheus 作为监控和性能指标信息存储方案,使用 Grafana 作为可视化组件进行展示。Prometheus在TiDB中的应用Prometheus是一个拥有多维度数据模型的、灵活的查询语句的时序数据库。Prometheus作为热门的... 查看详情