国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

TiDB數據庫DM工具同步MYSQL中LongText字段異常問題分析與處理

IT那活兒 / 844人閱讀
TiDB數據庫DM工具同步MYSQL中LongText字段異常問題分析與處理

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!

 



報錯現象



DM任務檢查同步報錯:
當源MYSQL數據庫表字段從text類型在線修改為longtext字段類型后,通過DM工具同步發現源MYSQL修改后的字段類型成功同步到了TiDB,但是之后的數據同步通過DM任務檢查發現報Error 8025的錯誤。
1. 報錯分析
  • 通過查詢對應版本(V5.0)的錯誤代碼發現如下:

2. TiDB中相關的限制

分析認為MYSQL修改表字段類型后,源MYSQL中插入該表的數據超過TiDB默認的限制條件。導致DM同步插入數據到TiDB時報Error 8025錯誤。

 



解決方案



解決方案一:DM任務配置Yaml忽略該表
若該表并非業務運行必要的表,可以通過更新DM task任務的yaml文件,過濾掉該表的結構和數據同步。
參考Yaml配置中,黑白名單列表部分:
block-allow-list:
instance:
do-dbs: ["dms_prod"]
ignore-tables:
- db-name: "dms_prod"
tbl-name: "dms_log_error" -–
不同步的表名
解決方案二:修改Tidb數據庫的集群參數
通過報錯的提示, TiDB 默認支持最大 6MB 的單個鍵值對,超過該限制可適當調整 txn-entry-size-limit 配置項以放寬限制。并且從 v5.0 版本開始引入。

但是 txn-entry-size-limit參數同時需配合 Tikv側的  raft-entry-max-size(default 8MB) 以及max-grpc-send-msg-len參數。
建議參數:
raft-entry-max-size: 15MB,
max-grpc-send-msg-len: 15728640
txn-entry-size-limit: 15728640
另外當放寬單行6MB后,還需考慮total transaction 的size,和下游等能允許的max_trx_size,需要根據情況予以調整。
TiDB中修改所有節點的配置參數參考如下:
1)進入 TiKV-Server,打開配置文件,一般位置為 /tidb-deploy/tikv-20160/conf (注意: tikv-20160 可能不同),打開文件 tikv.toml;同理打開tidb.toml進行檢查原始參數,并進行備份。
[root@tidb1 conf]# vi tikv.toml
# WARNING: This file is auto-generated. Do not edit! All your modification will be overwritten!
# You can use tiup cluster edit-config and tiup cluster reload to update the configuration
# All configuration items you want to change can be added to:
# server_configs:
# tikv:
# aa.b1.c3: value
# aa.b2.c4: value
[raftstore]

……
備份參數文件:
[root@tidb1 conf]# cp tikv.toml  tikv.toml.bak20211229
2)進入到安裝 tiup 的中控機或者節點,執行配置文件編輯命令:
[root@tidb1 conf]# tiup cluster edit-config tidb-test
Starting component `cluster`: /root/.tiup/components/cluster/v1.6.1/tiup-cluster edit-config tidb-test
global:
user: tidb
ssh_port: 22
ssh_type: builtin
deploy_dir: /data1/tidb-deploy
data_dir: /data1/tidb-data

……
3)輸入 i ,進入編輯模式,修改如下標紅參數:
[root@tidb1 conf]# tiup cluster edit-config tidb-test
Starting component `cluster`: /root/.tiup/components/cluster/v1.6.1/tiup-cluster edit-config tidb-test
global:
user: tidb
ssh_port: 22
ssh_type: builtin
deploy_dir: /data1/tidb-deploy
data_dir: /data1/tidb-data
os: linux
monitored:
node_exporter_port: 9100
blackbox_exporter_port: 9115
deploy_dir: /data1/tidb-deploy/monitored-9100
data_dir: /data1/tidb-data/monitored-9100
log_dir: /data1/tidb-deploy/monitored-9100/log

server_configs:
tidb:
performance.txn-entry-size-limit: 15728640
tikv:
raftstore.raft-entry-max-size: 15MB
readpool.coprocessor.use-unified-pool: true
readpool.storage.use-unified-pool: true
readpool.unified.max-thread-count: 12
server.max-grpc-send-msg-len: 15728640
pd:
replication.location-labels:
- host
tiflash: {}
tiflash-learner: {}
pump: {}
drainer: {}
cdc: {}
tidb_servers:
4)輸入 ESC 鍵,輸入:wq,出現提示如下,默認會檢查是否配置、格式符合要求,輸入y繼續。
server_configs: tidb: {}
tikv:
:wq
Please check change highlight above, do you want to apply the change? [y/N]:(default=N) y
Applying changes...
Applied successfully, please use `tiup cluster reload tidb-test [-N ] [-R ]` to reload config.
5)使用 tiup cluster reload 命令來載入修改的參數 ,或者直接重啟數據庫生效。
[root@tidb1 conf]# tiup cluster reload tidb-test
Starting component `cluster`: /root/.tiup/components/cluster/v1.6.1/tiup-cluster reload tidb-test
Will reload the cluster tidb-test with restart policy is true, nodes: , roles: .
Do you want to continue? [y/N]:(default=N) y
+ [ Serial ] - SSHKeySet: privateKey=/root/.tiup/storage/cluster/clusters/tidb-test/ssh/id_rsa, publicKey=/root/.tiup/storage/cluster/clusters/tidb-test/ssh/id_rsa.pub
+ [Parallel] - UserSSH: user=tidb, host=XXX.XX.134.134
… … …
Upgrading component pd
Restarting instance XXX.XX.134.133:2379
Restart instance XXX.XX.134.133:2379 success

Upgrading component tikv
Restarting instance XXX.XX.134.133:20160
Restart instance XXX.XX.134.133:20160 success
Evicting 1 leaders from store XXX.XX.134.134:20160...
Still waitting for 1 store leaders to transfer...

Upgrading component tidb
Restarting instance XXX.XX.134.133:4000
Restart instance XXX.XX.134.133:4000 success

Upgrading component alertmanager
Restarting instance XXX.XX.134.133:9093
Restart instance XXX.XX.134.133:9093 success
Reloaded cluster `tidb-test` successfully

Found cluster newer version:
The latest version: v1.8.1
Local installed version: v1.6.1
Update current component:   tiup update cluster
Update all components:      tiup update --all
6)再次進入TiKV-Server,打開配置文件,一般位置為 /tidb-deploy/tikv-20160/conf (注意:tikv-20160 可能不同),打開文件 tikv.toml,同理打開tidb.toml進行檢查。
 



注意問題



1. 調整TiDB的參數會影響到數據庫性能
將6MB的限制放寬將影響數據庫運行的性能。原因是在 prewrite時寫下鎖的時長(阻塞其他事務的讀、提交失敗的風險),像oracle的clog,blob等超長的字段,本身是不適合lsmt結構。
2. 在TiDB中使用longtext字段
Longtext的類型允許的最大長度為4G,在tidb中單行最多允許120M(通過調整參數),這樣的類型很容易達到數據庫的限制條件,并且在放寬6M的限制后,會影響到數據庫的性能。嚴重的情況可能會導致Tikv異常繁忙而無法提供服務。
參考TiDB最佳實踐,建議盡量不要放開單行限制,大字段的需要建議在業務側進行調整。即使開放限制,也需要有限制的使用。
參考Tidb最佳實踐https://docs.pingcap.com/zh/tidb/v5.0/tidb-best-practices/

 


END




本文作者:陳 聰

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129491.html

相關文章

  • DM 源碼閱讀系列文章(一)序

    摘要:內容概要源碼閱讀系列將會從兩條線進行展開,一條是圍繞的系統架構和重要模塊進行分析,另一條線圍繞內部的同步機制展開分析。更多的代碼閱讀內容會在后面的章節中逐步展開,敬請期待。 作者:楊非 前言 TiDB-DM 是由 PingCAP 開發的一體化數據同步任務管理平臺,支持從 MySQL 或 MariaDB 到 TiDB 的全量數據遷移和增量數據同步,在 TiDB DevCon 2019 正...

    Mr_houzi 評論0 收藏0
  • TiDB Ecosystem Tools 原理解讀系列(三)TiDB-DM 架構設計實現原理

    摘要:合庫合表數據同步在使用支撐大量數據時,經常會選擇使用分庫分表的方案。但當將數據同步到后,通常希望邏輯上進行合庫合表。為支持合庫合表的數據同步,主要實現了以下的一些功能。 作者:張學程 簡介 TiDB-DM(Data Migration)是用于將數據從 MySQL/MariaDB 遷移到 TiDB 的工具。該工具既支持以全量備份文件的方式將 MySQL/MariaDB 的數據導入到 Ti...

    legendaryedu 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<