bios dma保护的用途_mysql

读取mysql的binlog,通过data filter过滤,其中table blockallow list过滤哪些表,binlog event filter过滤哪些操作。再到table routing表路由,作用是表的转化(eg. a表转化到b表。a、c两表同步到d表。)

拓扑例子:

bios dma保护的用途_bios dma保护的用途_02

1.查看dm状态

tiup dm display dm-test

bios dma保护的用途_数据源_03

2.添加数据源

格式(可多跑几次,添加多个数据源)

tiup dmctl --master-addr <master-addr> operate-source create ./source-mysql-01.yaml
eg.
tiup dmctl --master-addr=172.31.0.49:8261 operate-source create source-mysql-01.yaml
vi source-mysql-01.yaml
# 唯一命名,不可重复。
source-id: "mysql-01"
# DM-worker 是否使用全局事务标识符 (GTID) 拉取 binlog。使用前提是上游 MySQL 已开启 GTID 模式。若上游存在主从自动切换,则必须使用 GTID 模式。
enable-gtid: true
from:
  host: "${host}"         # 例如:172.16.10.81
  user: "root"
  password: "${password}" # 支持但不推荐使用明文密码,建议使用 dmctl encrypt 对明文密码进行加密后使用
  port: 3306

dmctl加密:

tiup dmctl --encrypt 'oracle'

bios dma保护的用途_数据源_04

mysql需要成为源需要提前开启binlogshow_compatibility_56参数

bios dma保护的用途_android_05

验证:

查看所有数据源

tiup dmctl --master-addr=172.31.0.49:8261 operate-source show

bios dma保护的用途_android_06

查看具体某一个数据源

tiup dmctl --master-addr=172.31.0.49:8261 get-config source mysql-replica-01

bios dma保护的用途_android_07

3.配置任务文件

vi dm-task.yaml
#任务名,不可重复
name: "shard_merge"
# 任务模式,可设为
# full:只进行全量数据迁移
# incremental: binlog 实时同步
# all: 全量 + binlog 迁移
task-mode: all
# 本示例中上游存在自增主键,因此需要忽略掉该检查项
ignore-checking-items: ["auto_increment_ID"]
#下游信息
target-database:
  host: "${host}"                               # 例如:192.168.0.1
  port: 4000
  user: "root"
  password: "${password}"                       # 支持但不推荐使用明文密码,建议使用 dmctl encrypt 对明文密码进行加密后使用
#使用规则
mysql-instances:
  -
    source-id: "mysql-01"                                   # 数据源 ID,即 source1.yaml 中的 source-id
    route-rules: ["sale-route-rule"]                        # 应用于该数据源的 table route 规则
    filter-rules: ["store-filter-rule", "sale-filter-rule"] # 应用于该数据源的 binlog event filter 规则
    block-allow-list:  "log-bak-ignored"                    # 应用于该数据源的 Block & Allow Lists 规则
  -
    source-id: "mysql-02"
    route-rules: ["sale-route-rule"]
    filter-rules: ["store-filter-rule", "sale-filter-rule"]
    block-allow-list:  "log-bak-ignored"
# 规则配置
routes:
  sale-route-rule:
    schema-pattern: "store_*"                     # 源头数据库名
    table-pattern: "sale_*"                       # 源头表名
    target-schema: "store"                        # 目标端数据库名
    target-table:  "sale"                         # 目标端表名
# 意思是源端store_开头所有数据库下所有sale_开头表,全部导到目标端store库下sale表中
# 过滤部分 DDL 事件
filters:
  sale-filter-rule:
    schema-pattern: "store_*"
    table-pattern: "sale_*"
    events: ["truncate table", "drop table", "delete"]
    action: Ignore
# 忽略store_*.sale_*表,truncate、drop、delete操作
  store-filter-rule:
    schema-pattern: "store_*"
    events: ["all dml"]
    action: do
# store_*库所有dml操作都做
# 黑白名单
block-allow-list:
  log-bak-ignored:
    do-dbs: ["store_*"]
# 迁移store_开头所有库
# ignore-dbs是忽略哪些库和表
  log-bak-haha1:
    do-dbs: ["store_*"]
    ignore-dbs: ["haha_*"]
    do-tables:
    - db-name: "~^test.*"
      tbl-name: "~^t.*"
    - db-name: "user"
      tbl-name: "information"
# 迁移store_*库,忽略haha_*库,迁移规则里的表
# do与ignore同时配置到相同对象,do生效
# 通用优化
mydumpers:                           # dump 处理单元的运行配置参数
  global:                            # 配置名称
    threads: 4                       # dump 处理单元从上游数据库实例导出数据和 check-task 访问上游的线程数量,默认值为 4
    chunk-filesize: 64               # dump 处理单元生成的数据文件大小,默认值为 64,单位为 MB
    extra-args: "--consistency none" # dump 处理单元的其他参数,不需要在 extra-args

4.检查与启动任务

启动

tiup dmctl --master-addr=172.31.0.49:8261 start-task dm-task.yaml

bios dma保护的用途_mysql_08

检查状态

tiup dmctl --master-addr=172.31.0.49:8261 query-status dm-task.yaml

检查dm状态

tiup dm display dm-test

因为设置2个数据源所以已经2个进程在进行同步。

bios dma保护的用途_bios dma保护的用途_09

5.暂停任务

暂停

tiup dmctl --master-addr=172.31.0.49:8261 pause-task dm-task.yaml

恢复

tiup dmctl --master-addr=172.31.0.49:8261 resume-task dm-task.yaml

5.停止任务

停止

tiup dmctl --master-addr=172.31.0.49:8261 stop-task dm-task.yaml

查看

tiup dmctl --master-addr=172.31.0.49:8261 query-status dm-task.yaml

bios dma保护的用途_bios dma保护的用途_10

性能优化

bios dma保护的用途_tidb_11