mysql> select campaign_id ,count(id) from creative_output group by campaign_id;
rows in set ( min 44.23 sec)
mysql> select is_cr_own ,count(id) from creative_output group by is_cr_own;
rows in set (44.55 sec)

首先是查看tidb数据库的syncer工具的介绍

使用syncer工具的场景一般是:

  全量导入历史数据后,通过增量的方式同步新的数据 (需要 checker + mydumper + loader + syncer)。该场景需要提前开启 binlog 且格式必须为 ROW。

主要的步骤我们可以看官网链接:

https://pingcap.com/docs-cn/op-guide/migration-overview/

注意:mysql必须开启几项服务才行,主要是bin-log功能,Binlog格式等等,详细请查看:https://pingcap.com/docs-cn/tools/syncer/  的后半部分内容。

有一个文件syncer.mata需要注意:

我创建并编辑好这个文件后放在了/usr/local/tidb-tools目录下面,这个文件的目录需要在config.toml的内容中指定一下。但是我的重点是要说上面这个图片中的“binlog-gtid”这一行的内容。因为我本次实验没有用到主从环境,所以暂时不考虑binlog-gtid的问题,下面列一下我的文件内容

我只写了这两行数据,不过虽然没有用到binlog-gtid的功能,也应该指定出来,把binlog-pos设置为空就可以了,例如:binlog-pos=""

然后我们最好使用配置文件config.toml来启动syncer。config.toml文件可以放在任一位置,在启动syncer时提供文件即可:例如

其实位置是小问题,只是我在看文章的时候纠结z这个位置是在哪里呢,后来才知道是小问题。

 还有几个报错的,我们需要注意一下:

1、报错:就是启动syncer的时候直接报错

居然不能连接mysql这肯定是配置文件的原因,查看一下来:

log-level = "info"

server-id = 

## meta 文件地址
meta = "/usr/local/tidb-tools/syncer.meta" worker-count =
batch = ## pprof 调试地址, Prometheus 也可以通过该地址拉取 syncer metrics
## 将 127.0.0.1 修改为相应主机 IP 地址
status-addr = "172.31.30.62:10086" ## 跳过 DDL 或者其他语句,格式为 **前缀完全匹配**,如: `DROP TABLE ABC`,则至少需要填入`DROP TABLE`.
# skip-sqls = ["ALTER USER", "CREATE USER"] ## 在使用 route-rules 功能后,
## replicate-do-db & replicate-ignore-db 匹配合表之后(target-schema & target-table )数值
## 优先级关系: replicate-do-db --> replicate-do-table --> replicate-ignore-db --> replicate-ignore-table
## 指定要同步数据库名;支持正则匹配,表达式语句必须以 `~` 开始
#replicate-do-db = ["~^b.*","s1"] ## 指定要同步的 db.table 表
## db-name 与 tbl-name 不支持 `db-name ="dbname,dbname2"` 格式
#[[replicate-do-table]]
#db-name ="dbname"
#tbl-name = "table-name" #[[replicate-do-table]]
#db-name ="dbname1"
#tbl-name = "table-name1" ## 指定要同步的 db.table 表;支持正则匹配,表达式语句必须以 `~` 开始
#[[replicate-do-table]]
#db-name ="test"
#tbl-name = "~^a.*" ## 指定**忽略**同步数据库;支持正则匹配,表达式语句必须以 `~` 开始
#replicate-ignore-db = ["~^b.*","s1"] ## 指定**忽略**同步数据库
## db-name & tbl-name 不支持 `db-name ="dbname,dbname2"` 语句格式
#[[replicate-ignore-table]]
#db-name = "your_db"
#tbl-name = "your_table" ## 指定要**忽略**同步数据库名;支持正则匹配,表达式语句必须以 `~` 开始
#[[replicate-ignore-table]]
#db-name ="test"
#tbl-name = "~^a.*" # sharding 同步规则,采用 wildcharacter
# . 星号字符 (*) 可以匹配零个或者多个字符,
# 例子, doc* 匹配 doc 和 document, 但是和 dodo 不匹配;
# 星号只能放在 pattern 结尾,并且一个 pattern 中只能有一个
# . 问号字符 (?) 匹配任一一个字符 #[[route-rules]]
#pattern-schema = "route_*"
#pattern-table = "abc_*"
#target-schema = "route"
#target-table = "abc" #[[route-rules]]
#pattern-schema = "route_*"
#pattern-table = "xyz_*"
#target-schema = "route"
#target-table = "xyz" [from]
host = "172.31.30.62" #是这一步出错了
user = "root"
password = ""
port = [to]
host = "172.31.30.62"
user = "root"
password = ""
port =

不知道大概什么问题,虽然我的mysql和tidb主节点在一个机器上面,但是连接的时候指定不同的端口就可以了,可是在这里就是行不通,我猜应该是hosts文件映射的问题吧,但是我没有修改hosts文件,只是把上面的黄色区域的内容修改了为:“127.0.0.1”就成功了,我们看一下成功的例子:

然后你在mysql中插入数据,syncer会实时写入tidb数据库中。

即便把syncer关掉之后,这个时候虽然不会同步,但是一启动进程就会立即同步mysql中之前未同步到tidb中的数据。

下面这是syncer的同步进程,在config.toml指定的

TiDB数据库 使用syncer工具同步实时数据的更多相关文章

  1. C#同步SQL Server数据库中的数据--数据库同步工具[同步新数据]

    C#同步SQL Server数据库中的数据 1. 先写个sql处理类: using System; using System.Collections.Generic; using System.Dat ...

  2. TiDB 作为 MySQL Slave 实现实时数据同步

    由于 TiDB 本身兼容绝大多数的 MySQL 语法,所以对于绝大多数业务来说,最安全的切换数据库方式就是将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,这样对业务方实现完全没有侵入性 ...

  3. Sqlserver2000联系Oracle11G数据库进行实时数据的同步

    Sqlserver2000联系Oracle11G数据库进行实时数据的同步 1,前提条件 我有sqlserver2000环境,已经存在oracle11g环境,准备这两个数据库,建立各自的訪问账号,两者之 ...

  4. 使用sqlyog工具同步两个相同结构的数据库之间的数据

    compare two database data 因为工作上遇到 同一个项目被部署到不同服务器上,原项目(后统称"源")在运行中,后部署的项目(后统称"目标" ...

  5. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  6. 通过 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  7. 推荐一个同步Mysql数据到Elasticsearch的工具

    把Mysql的数据同步到Elasticsearch是个很常见的需求,但在Github里找到的同步工具用起来或多或少都有些别扭. 例如:某记录内容为"aaa|bbb|ccc",将其按 ...

  8. Tapdata Real Time DaaS 技术详解 PART I :实时数据同步

      摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...

  9. TiDB数据库 mydumper与loader导入数据

    从mysql导出数据最好的方法是使用tidb官方的工具mydumper. 导入tidb最好的方法是使用loader工具,大概19.4G每小时的速度. 详细的步骤可以参考官网:https://pingc ...

随机推荐

  1. [机器学习] 训练集(train set) 验证集(validation set) 测试集(test set)

    在有监督(supervise)的机器学习中,数据集常被分成2~3个即: 训练集(train set) 验证集(validation set) 测试集(test set) 一般需要将样本分成独立的三部分 ...

  2. webstorm取消扫描某文件夹,加快打开速度,例如忽略node_modules目录

    方法1.如下图所示(只对当前项目有效) 或者 如果要使用这种方法,一种是还没安装依赖的时候先创建node_modules目录然后打开webstorm设置好excluded再安装:另一种是已经安装了依赖 ...

  3. Java基础——iO(三)

    一.管道流 演示:PipedInputStream  , PipedOutputStream 注意:管道流本身就不建议在一个线程中使用,这是因为向输出流中写的数据,都会存到输入流内部的一个1024字节 ...

  4. 【Winform系列】Winform控件DataGridView添加数据的几种方式

    1:直接添加 在控件中设置好每列的名称 例如: DataGridViewRow row = new DataGridViewRow(); int j = dgv.Rows.Add(row); dgv. ...

  5. python基础训练题1-列表操作

    1,在列表末尾添加一个值 >>> l = [ 10, 20 ] >>> l [10, 20] >>> l.append( 'ghostwu' ) ...

  6. HDU1029(KB12-B)

    Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32767 K ( ...

  7. JS 为什么在涉及到模块开发this的时候使用类似 self = this 的形式 p7

    JS 动态作用域(调用栈)实际上也没有准确说明的,大多数我们使用对多和认知上大多是词法作用域,但是this的机制跟动态作用域很像. var a = 2; function fn(){ console. ...

  8. Thinkphp+ECharts生成柱状图

    1.首先进ECharts官网下载echarts.js 点击下载,结合TP5讲解,主要代码在js里面,更多请到ECharts官网 2.引进echarts.js <!DOCTYPE html> ...

  9. Python 并发编程(管道,事件,信号量,进程池)

    管道 Conn1,conn2 = Pipe() Conn1.recv() Conn1.send() 数据接收一次就没有了 from multiprocessing import Process,Pip ...

  10. js-JavaScript常见的创建对象的几种方式

    1.通过Object构造函数或对象字面量创建单个对象 这些方式有明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为了解决这个问题,出现了工厂模式. 2.工厂模式 考虑在ES中无法创建类( ...