MySQL实时同步数据到TiDB指引

案例:实时同步MySQL中的notify库到TiDB


一、下载工具包

#su -tidb

$cd  /home/tidb/

$wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.tar.gz

$wget http://download.pingcap.org/tidb-enterprise-tools-latest-linux-amd64.sha256

$sha256sum -c tidb-enterprise-tools-latest-linux-amd64.sha256

$tar -xzf tidb-enterprise-tools-latest-linux-amd64.tar.gz


二、使用mydumper从MySQL导出数据

$/home/tidb/tidb-enterprise-tools-latest-linux-amd64/bin/mydumper -h 192.168.1.98 -P 3306 -u root -p 'xxxxxx' -t 16 -F 64 -B notify --skip-tz-utc -o /app/backup/tidb/notify

PS:各参数解释见help


三、使用loader将导出数据灌入TiDB

$/home/tidb/tidb-enterprise-tools-latest-linux-amd64/bin/loader -h 10.8.8.240 -P 4000 -u root -p 'xxxxxx' -m 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI' -t 24 -d /app/backup/tidb/notify/

PS: 各参数解释见help


四、使用syncer将MySQL增量数据实时同步到TiDB

1、查看mydumper从MySQL导出数据时的位置信息

$cat /app/backup/tidb/notify/metadata

Started dump at: 2020-04-15 10:41:03

SHOW MASTER STATUS:

        Log: mysql_bin.025493

        Pos: 910571470

        GTID:

SHOW SLAVE STATUS:

        Host: 192.168.1.97

        Log: mysql_bin.024855

        Pos: 251919780

        GTID:

2、将上一步查到位置信息,写入syncer做增量同步的起始配置信息文件中:

$vim /home/tidb/tidb-enterprise-tools-latest-linux-amd64/conf/syncer.meta

binlog-name = "mysql_bin.025494"

binlog-pos = 780858549

binlog-gtid = ""

3、根据具体场景信息编译syncer配置文件

$vim /home/tidb/tidb-enterprise-tools-latest-linux-amd64/conf/config.toml

log-level = "info"

log-file = "/home/tidb/tidb-enterprise-tools-latest-linux-amd64/log/syncer.log"

log-rotate = "day"

server-id = 3

## meta 文件地址

meta = "/home/tidb/tidb-enterprise-tools-latest-linux-amd64/conf/syncer.meta"

worker-count = 16

batch = 1000

flavor = "mysql"

## pprof 调试地址,Prometheus 也可以通过该地址拉取 Syncer metrics

status-addr = ":8271"

## 如果设置为 true,Syncer 遇到 DDL 语句时就会停止退出

stop-on-ddl = false

## 跳过 DDL 语句,格式为 **前缀完全匹配**,如:`DROP TABLE ABC` 至少需要填入 `DROP TABLE`

# skip-ddls = ["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"]

replicate-do-db = ["notify"]

## 指定 **忽略** 同步数据库;支持正则匹配,表达式语句必须以 `~` 开始

#replicate-ignore-db = ["~^b.*","s1"]

# skip-dmls 支持跳过 DML binlog events,type 字段的值可为:'insert','update' 和 'delete'

# 跳过 foo.bar 表的所有 delete 语句

# [[skip-dmls]]

# db-name = "foo"

# tbl-name = "bar"

# type = "delete"

#

# 跳过所有表的 delete 语句

# [[skip-dmls]]

# type = "delete"

#

# 跳过 foo.* 表的 delete 语句

# [[skip-dmls]]

# db-name = "foo"

# type = "delete"

## 指定要同步的 db.table 表

## db-name 与 tbl-name 不支持 `db-name ="dbname,dbname2"` 格式

#[[replicate-do-table]]

#db-name ="site_message"

#tbl-name = "business_user_link"

#[[replicate-do-table]]

#db-name ="site_message"

#tbl-name = "service_user_link"

#[[replicate-do-table]]

#db-name ="site_message"

#tbl-name = "message_business"

#[[replicate-do-table]]

#db-name ="site_message"

#tbl-name = "*"

#[[replicate-do-table]]

#db-name ="dbname1"

#tbl-name = "table-name1"

## 指定要同步的 db.table 表;支持正则匹配,表达式语句必须以 `~` 开始

#[[replicate-do-table]]

#db-name ="test"

#tbl-name = "~^a.*"

## 指定 **忽略** 同步数据库

## 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

# 1. 星号字符 (*) 可以匹配零个或者多个字符,

#    例子, doc* 匹配 doc 和 document, 但是和 dodo 不匹配;

#    星号只能放在 pattern 结尾,并且一个 pattern 中只能有一个

# 2. 问号字符 (?) 匹配任一一个字符

#[[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 = "192.168.1.98"

user = "root"

password = "xxxxxx"

port = 3306

[to]

host = "10.8.8.240"

user = "tidb"

password = "xxxxxx"

port = 4000

4、启动增量数据实时同步进程

$/home/tidb/tidb-enterprise-tools-latest-linux-amd64/bin/syncer -config /home/tidb/tidb-enterprise-tools-latest-linux-amd64/conf/config.toml

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容