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部落格 ” ,連結:http://blog.itpub.net/31480688/viewspace-2775684/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- TIDB DM資料同步工具安裝部署TiDB
- React Step by StepReact
- Command 模式 Step by Step模式
- 阿里雲數倉Dataworks資料匯出到檔案step by step阿里
- Shell Step by Step (4) —— Cron & Echo
- Promise的實現(step by step)Promise
- Step by Step Data Replication Using Oracle GoldenGateOracleGo
- Step by Step 安裝 BizTalk Server 2009Server
- 單步除錯 step into/step out/step over 區別詳解除錯
- 2.4.14 Step 13: 備份資料庫資料庫
- 2.4.10 Step 9:手工建立資料庫資料庫
- ABP應用開發(Step by Step)-下篇
- ABP應用開發(Step by Step)-上篇
- 實時 Linux 抖動分析 Step by stepLinux
- Linkerd 2.10(Step by Step)—多叢集通訊
- Linkerd 2.10(Step by Step)—使用 Debug Sidecar,注入除錯容器來捕獲網路資料包IDE除錯
- Sql Server Linux(Redhat) Distributed Availability Group Setup — step by stepSQLServerLinuxRedhatAI
- 10GR2下建立物理standby STEP BY STEP
- Step-by-step,打造屬於自己的vue ssrVue
- Adaboost Algorithm StepGo
- 深度學習之step by step搭建神經網路深度學習神經網路
- Linkerd 2.10(Step by Step)—使用 Kustomize 自定義 Linkerd 的配置
- Linkerd 2.10(Step by Step)—設定服務配置檔案
- Linkerd 2.10(Step by Step)—4. 如何配置外部 Prometheus 例項Prometheus
- 使用Eclipse 安裝 構建Maven專案 (step-by-step)EclipseMaven
- HTML step 屬性HTML
- 【Step-By-Step】高頻面試題深入解析 / 週刊06面試題
- 【Step-By-Step】高頻面試題深入解析 / 週刊07面試題
- 【Step-By-Step】高頻面試題深入解析 / 週刊04面試題
- 【Step-By-Step】高頻面試題深入解析 / 週刊05面試題
- 【Step-By-Step】高頻面試題深入解析 / 週刊03面試題
- 【Step-By-Step】高頻面試題深入解析 / 週刊01面試題
- 【Step-By-Step】高頻面試題深入解析 / 週刊02面試題
- tidb之dm叢集同步異常處理TiDB
- Linkerd 2.10(Step by Step)—將 GitOps 與 Linkerd 和 Argo CD 結合使用GitGo
- Linkerd 2.10(Step by Step)—1. 將您的服務新增到 Linkerd
- step1 補充
- 2.4.8 Step 7: 建立spfile