首页 > 数据库 > 国内数据库 > TIDB DM数据同步step by step
[root@mdb01 ~]# tiup dmctl -encrypt 'oracle'
Starting component `dmctl`: /root/.tiup/components/dmctl/v2.0.3/dmctl/dmctl -encrypt oracle
212CgvQOIUaXYaFrcyjsVUCCGEDgYLY=
该命令每次执行,加密后得到的密码是不断变化的。
2.创建数据源配置文件
# MySQL1 Configuration.
source-id: "mysql-replica-01"
# DM-worker 是否使用全局事务标识符 (GTID) 拉取 binlog。使用前提是在上游 MySQL 已开启 GTID 模式。
enable-gtid: true
from:
host: "192.168.61.16"
user: "root"
password: "212CgvQOIUaXYaFrcyjsVUCCGEDgYLY="
port: 3306
3.加载配置文件到集群
[root@mdb01 task]# tiup dmctl --master-addr 192.168.61.16:8261 operate-source create source_test.yaml
Starting component `dmctl`: /root/.tiup/components/dmctl/v2.0.3/dmctl/dmctl --master-addr 192.168.61.16:8261 operate-source create source_test.yaml
{
"result": true,
"msg": "",
"sources": [
{
"result": true,
"msg": "",
"source": "mysql-replica-01",
"worker": "dm-192.168.61.16-8262"
}
]
}
4.创建task配置文件
name: 20210606_test01 # 任务名称,需要全局唯一
task-mode: all # 任务模式,可设为 "full" - "只进行全量数据迁移"、"incremental" - "Binlog 实时同步"、"all" - "全量 + Binlog 迁移"
shard-mode: "pessimistic" # 如果为分库分表合并任务则需要配置该项。默认使用悲观协调模式 "pessimistic",在深入了解乐观协调模式的原理和使用限制后,也可以设置为乐观协调模式 "optimistic"
meta-schema: "dm_meta" # 下游储存 `meta` 信息的数据库
case-sensitive: false # schema/table 是否大小写敏感
ignore-checking-items: [] # 不关闭任何检查项。可选的检查项有 "all"、"dump_privilege"、"replication_privilege"、"version"、"binlog_enable"、"binlog_format"、"binlog_row_image"、"table_schema"、"schema_of_shard_tables"、"auto_increment_ID"
clean-dump-file: false # 是否清理 dump 阶段产生的文件,包括 metadata 文件、建库建表 SQL 文件以及数据导入 SQL 文件
target-database: # 下游数据库实例配置
host: "192.168.61.16"
port: 3306
user: "root"
password: "212CgvQOIUaXYaFrcyjsVUCCGEDgYLY=" # 推荐使用经 dmctl 加密后的密码
routes: # 上游和下游表之间的路由 table routing 规则集
route-rule-1: # 配置名称
schema-pattern: "ming" # 库名匹配规则,支持通配符 "*" 和 "?"
table-pattern: "test02" # 表名匹配规则,支持通配符 "*" 和 "?"
target-schema: "tt" # 目标库名称
target-table: "test02" # 目标表名称
filters: # 上游数据库实例匹配的表的 binlog event filter 规则集
filter-rule-1: # 配置名称
schema-pattern: "ming" # 库名匹配规则,支持通配符 "*" 和 "?"
table-pattern: "test02" # 表名匹配规则,支持通配符 "*" 和 "?"
events: ["truncate table", "drop table"] # 匹配哪些 event 类型
action: Ignore # 对与符合匹配规则的 binlog 迁移(Do)还是忽略(Ignore)
filter-rule-2:
schema-pattern: "ming"
events: ["all dml"]
action: Do
block-allow-list: # 定义数据源迁移表的过滤规则,可以定义多个规则。如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
bw-rule-1: # 规则名称
do-dbs: ["ming"] # 迁移哪些库
ignore-dbs: ["mysql", "account"] # 忽略哪些库
do-tables: # 迁移哪些表
- db-name: "ming"
tbl-name: "test02"
bw-rule-2: # 规则名称
ignore-tables: # 忽略哪些表
- db-name: "user"
tbl-name: "log"
mydumpers: # dump 处理单元的运行配置参数
global: # 配置名称
threads: 2 # dump 处理单元从上游数据库实例导出数据的线程数量,默认值为 4
chunk-filesize: 16 # dump 处理单元生成的数据文件大小,默认值为 64,单位为 MB
extra-args: "--consistency none" # dump 处理单元的其他参数,不需要在 extra-args 中配置 table-list,DM 会自动生成
loaders: # load 处理单元的运行配置参数
global: # 配置名称
pool-size: 2 # load 处理单元并发执行 dump 处理单元的 SQL 文件的线程数量,默认值为 16,当有多个实例同时向 TiDB 迁移数据时可根据负载情况适当调小该值
dir: "./dumped_data" # dump 处理单元输出 SQL 文件的目录,同时也是 load 处理单元读取文件的目录。该配置项的默认值为 "./dumped_data"。同实例对应的不同任务必须配置不同的目录
syncers: # sync 处理单元的运行配置参数
global: # 配置名称
worker-count: 4 # sync 并发迁移 binlog event 的线程数量,默认值为 16,当有多个实例同时向 TiDB 迁移数据时可根据负载情况适当调小该值
batch: 100 # sync 迁移到下游数据库的一个事务批次 SQL 语句数,默认值为 100
safe-mode: false # 设置为 true,则将来自上游的 `INSERT` 改写为 `REPLACE`,将 `UPDATE` 改写为 `DELETE` 与 `REPLACE`,保证在表结构中存在主键或唯一索引的条件下迁移数据时可以重复导入 DML。在启动或恢复增量复制任务的前 5 分钟内 TiDB DM 会自动启动 safe mode
mysql-instances:
-
source-id: "mysql-replica-01" # 对应 source.toml 中的 `source-id`
route-rules: ["route-rule-1"] # 该上游数据库实例匹配的表到下游数据库的 table routing 规则名称
filter-rules: ["filter-rule-1", "filter-rule-2"] # 该上游数据库实例匹配的表的 binlog event filter 规则名称
block-allow-list: "bw-rule-1" # 该上游数据库实例匹配的表的 block-allow-list 过滤规则名称,如果 DM 版本早于 v2.0.0-beta.2 则使用 black-white-list
mydumper-config-name: "global" # mydumpers 配置的名称
loader-config-name: "global" # loaders 配置的名称
syncer-config-name: "global" # syncers 配置的名称
5.DM 前置检查
[root@mdb01 task]# tiup dmctl --master-addr 192.168.61.16:8261 check-task 20210606_test01.yaml
Starting component `dmctl`: /root/.tiup/components/dmctl/v2.0.3/dmctl/dmctl --master-addr 192.168.61.16:8261 check-task 20210606_test01.yaml
{
"result": true,
"msg": "check pass!!!"
}
6.启动任务
[root@mdb01 ~]# dmctl --master-addr 192.168.61.16:8261 start-task /u01/dm/task/20210606_test01.yaml
{
"result": true,
"msg": "",
"sources": [
{
"result": true,
"msg": "",
"source": "mysql-replica-01",
"worker": "dm-192.168.61.16-8262"
}
]
}
[root@mdb01 task]# dmctl --master-addr 192.168.61.16:8261 query-status 20210606_test01.yaml
{
"result": true,
"msg": "",
"sources": [
{
"result": true,
"msg": "",
"sourceStatus": {
"source": "mysql-replica-01",
"worker": "dm-192.168.61.16-8262",
"result": null,
"relayStatus": null
},
"subTaskStatus": [
{
"name": "20210606_test01",
"stage": "Running",
"unit": "Load",
"result": null,
"unresolvedDDLLockID": "",
"load": {
"finishedBytes": "26389908",
"totalBytes": "40668449",
"progress": "64.89 %",
"metaBinlog": "(mysql-bin.000036, 9875)",
"metaBinlogGTID": "1508afe9-70a7-11ea-8d70-000c2970dcdf:1-544518"
}
}
]
}
]
}
[root@mdb01 task]# dmctl --master-addr 192.168.61.16:8261 query-status 20210606_test01.yaml
{
"result": true,
"msg": "",
"sources": [
{
"result": true,
"msg": "",
"sourceStatus": {
"source": "mysql-replica-01",
"worker": "dm-192.168.61.16-8262",
"result": null,
"relayStatus": null
},
"subTaskStatus": [
{
"name": "20210606_test01",
"stage": "Running",
"unit": "Sync",
"result": null,
"unresolvedDDLLockID": "",
"sync": {
"totalEvents": "0",
"totalTps": "0",
"recentTps": "0",
"masterBinlog": "(mysql-bin.000036, 15881290)",
"masterBinlogGtid": "1508afe9-70a7-11ea-8d70-000c2970dcdf:1-544567",
"syncerBinlog": "(mysql-bin.000036, 9875)",
"syncerBinlogGtid": "1508afe9-70a7-11ea-8d70-000c2970dcdf:1-544518",
"blockingDDLs": [
],
"unresolvedGroups": [
],
"synced": false,
"binlogType": "remote"
}
}
]
}
]
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31480688/viewspace-2775684/ ,如需转载,请注明出处,否则将追究法律责任。