對集群進行快照備份
全庫備份
br backup full --pd "${PD_IP}:${PD_PORT}" --storage "local:///tmp/backup" [--ratelimit 120] [--log-file backupfull.log]
單庫備份
br backup db --pd "${PD_IP}:${PD_PORT}" --db test --storage "local:///tmp/backup" [--ratelimit 120] [--log-file backupdb.log]
單表備份
br backup table --pd "${PD_IP}:${PD_PORT}" --db test --table utable --storage "local:///tmp/backup" [--ratelimit 120] [--log-file backuptable.log]
測試
./br backup db --db dba_test --pd "10.0.8.87:2379" --storage "/backup" --ratelimit 128
-
--backupts
:快照對應(yīng)的物理時間點,格式可以是 TSO 或者時間戳,例如400036290571534337
或者2018-05-11 01:42:23 +08:00
呕臂。如果該快照的數(shù)據(jù)被垃圾回收 (GC) 了师郑,那么tiup br backup
命令會報錯并退出添忘。使用日期方式備份時察皇,建議同時指定時區(qū),否則 br 默認使用本地時間構(gòu)造時間戳旅掂,可能導(dǎo)致備份時間點錯誤赏胚。如果你沒有指定該參數(shù),那么 br 會選取備份開始的時間點所對應(yīng)的快照商虐。 -
--storage
:數(shù)據(jù)備份到的存儲地址觉阅。快照備份支持以 Amazon S3称龙、Google Cloud Storage留拾、Azure Blob Storage 為備份存儲,以上命令以 Amazon S3 為示例鲫尊。詳細存儲地址格式請參考外部存儲服務(wù)的 URI 格式痴柔。 -
--ratelimit
:每個 TiKV 備份數(shù)據(jù)的速度上限,單位為 MiB/s疫向。
在快照備份過程中咳蔚,終端會顯示備份進度條豪嚎。在備份完成后,會輸出備份耗時谈火、速度侈询、備份數(shù)據(jù)大小等信息。
Full Backup <-------------------------------------------------------------------------------> 100.00%
Checksum <----------------------------------------------------------------------------------> 100.00%
*** ["Full Backup success summary"] *** [backup-checksum=3.597416ms] [backup-fast-checksum=2.36975ms] *** [total-take=4.715509333s] [BackupTS=435844546560000000] [total-kv=1131] [total-kv-size=250kB] [average-speed=53.02kB/s] [backup-data-size(after-compressed)=71.33kB] [Size=71330]
備份的相關(guān)參數(shù)
查詢快照備份的時間點信息
出于管理備份數(shù)的需要糯耍,如果你需要查看某個快照備份對應(yīng)的快照物理時間點扔字,可以執(zhí)行下面的命令:
tiup br validate decode --field="end-version" \
--storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}" | tail -n1
/app/tidb-community-toolkit-v8.1.1-linux-amd64/br validate decode --field="end-version" --storage "/backup/bk1" | tail -n1
對集群進行快照恢復(fù)
注意
在 BR v7.5.0 及之前版本中,每個 TiKV 節(jié)點的快照恢復(fù)速度約為 100 MiB/s温技。
從 BR v7.6.0 開始革为,為了解決大規(guī)模 Region 場景下可能出現(xiàn)的恢復(fù)瓶頸問題,BR 支持通過粗粒度打散 Region 的算法加速恢復(fù)(實驗特性)舵鳞≌痖荩可以通過指定命令行參數(shù) --granularity="coarse-grained" 來啟用此功能。
從 BR v8.0.0 版本開始蜓堕,通過粗粒度打散 Region 算法進行快照恢復(fù)的功能正式 GA抛虏,并默認啟用。通過采用粗粒度打散 Region 算法套才、批量創(chuàng)建庫表迂猴、降低 SST 文件下載和 Ingest 操作之間的相互影響、加速表統(tǒng)計信息恢復(fù)等改進措施霜旧,快照恢復(fù)的速度有大幅提升错忱。在實際案例中儡率,快照恢復(fù)的 SST 文件下載速度最高提升約 10 倍挂据,單個 TiKV 節(jié)點的數(shù)據(jù)恢復(fù)速度穩(wěn)定在 1.2 GiB/s,端到端的恢復(fù)速度大約提升 1.5 到 3 倍儿普,并且能夠在 1 小時內(nèi)完成對 100 TiB 數(shù)據(jù)的恢復(fù)崎逃。
如果你需要恢復(fù)備份的快照數(shù)據(jù),則可以使用 tiup br restore full
眉孩。該命令的詳細使用幫助可以通過執(zhí)行 tiup br restore full --help
查看个绍。
將上文備份的快照數(shù)據(jù)恢復(fù)到目標集群:
tiup br restore full --pd "${PD_IP}:2379" \
--storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}"
測試
./br restore full --pd "10.0.8.87:2379" --storage "/backup"
在恢復(fù)快照備份數(shù)據(jù)過程中,終端會顯示恢復(fù)進度條浪汪。在完成恢復(fù)后巴柿,會輸出恢復(fù)耗時、速度死遭、恢復(fù)數(shù)據(jù)大小等信息广恢。
Full Restore <------------------------------------------------------------------------------> 100.00%
*** ["Full Restore success summary"] *** [total-take=4.344617542s] [total-kv=5] [total-kv-size=327B
恢復(fù)備份數(shù)據(jù)中指定庫表的數(shù)據(jù)
br 命令行工具支持只恢復(fù)備份數(shù)據(jù)中指定庫、表的部分數(shù)據(jù)呀潭,該功能用于在恢復(fù)過程中過濾不需要的數(shù)據(jù)钉迷。
恢復(fù)單個數(shù)據(jù)庫的數(shù)據(jù)
要將備份數(shù)據(jù)中的某個數(shù)據(jù)庫恢復(fù)到集群中至非,可以使用 tiup br restore db
命令。以下示例只恢復(fù) test
庫的數(shù)據(jù):
tiup br restore db \
--pd "${PD_IP}:2379" \
--db "test" \
--storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}"
測試
./br restore db --db dba_test --pd "10.0.8.87:2379" --storage "/backup"
以上命令中 --db
選項指定了需要恢復(fù)的數(shù)據(jù)庫名糠聪。
恢復(fù)單張表的數(shù)據(jù)
要將備份數(shù)據(jù)中的某張數(shù)據(jù)表恢復(fù)到集群中荒椭,可以使用 tiup br restore table
命令。以下示例只恢復(fù) test.usertable
表的數(shù)據(jù):
tiup br restore table --pd "${PD_IP}:2379" \
--db "test" \
--table "usertable" \
--storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-access-key}"
測試
./br restore table --db dba_test --table t1 --pd "10.0.8.87:2379" --storage "/backup"
以上命令中
--db
選項指定了需要恢復(fù)的數(shù)據(jù)庫名舰蟆,--table
選項指定了需要恢復(fù)的表名趣惠。
使用表庫過濾功能恢復(fù)部分數(shù)據(jù)
要通過復(fù)雜的過濾條件恢復(fù)多個表,可以使用 tiup br restore full
命令身害,并用 --filter
或 -f
指定表庫過濾的條件信卡。以下示例恢復(fù)符合 db*.tbl*
條件的表的數(shù)據(jù):
tiup br restore full \
--pd "${PD_IP}:2379" \
--filter 'db*.tbl*' \
--storage "s3://backup-101/snapshot-202209081330?access-key=${access-key}&secret-access-key=${secret-acce
注:filter 'db*.tbl*'的**號可有可無 備份無影響
測試
./br restore full --pd "10.0.8.87:2379" --filter 'dba_test.t1' --storage "/backup/bk3"
恢復(fù) mysql
數(shù)據(jù)庫下的表
-
br
v5.1.0 開始,快照備份時默認自動備份 mysql schema 下的系統(tǒng)表數(shù)據(jù)题造,但恢復(fù)數(shù)據(jù)時默認不恢復(fù)系統(tǒng)表數(shù)據(jù)傍菇。 -
br
v6.2.0 開始,增加恢復(fù)參數(shù)--with-sys-table
支持恢復(fù)數(shù)據(jù)的同時恢復(fù)部分系統(tǒng)表相關(guān)數(shù)據(jù)界赔。 -
br
v7.6.0 開始丢习,恢復(fù)參數(shù)--with-sys-table
默認開啟,即默認支持恢復(fù)數(shù)據(jù)的同時恢復(fù)部分系統(tǒng)表相關(guān)數(shù)據(jù)淮悼。
可恢復(fù)的部分系統(tǒng)表:
+----------------------------------+
| mysql.columns_priv |
| mysql.db |
| mysql.default_roles |
| mysql.global_grants |
| mysql.global_priv |
| mysql.role_edges |
| mysql.tables_priv |
| mysql.user |
| mysql.bind_info |
+----------------------------------+
不能恢復(fù)以下系統(tǒng)表:
- 統(tǒng)計信息表 (
mysql.stat_*
) (但可以恢復(fù)統(tǒng)計信息咐低,詳細參考備份統(tǒng)計信息) - 系統(tǒng)變量表 (
mysql.tidb
、mysql.global_variables
) - 其他系統(tǒng)表
+-----------------------------------------------------+
| capture_plan_baselines_blacklist |
| column_stats_usage |
| gc_delete_range |
| gc_delete_range_done |
| global_variables |
| stats_buckets |
| stats_extended |
| stats_feedback |
| stats_fm_sketch |
| stats_histograms |
| stats_history |
| stats_meta |
| stats_meta_history |
| stats_table_locked |
| stats_top_n |
| tidb |
+-----------------------------------------------------+
當恢復(fù)系統(tǒng)權(quán)限相關(guān)數(shù)據(jù)的時候袜腥,請注意:在恢復(fù)數(shù)據(jù)前 BR 會檢查目標集群的系統(tǒng)表是否跟備份數(shù)據(jù)中的系統(tǒng)表兼容见擦。這里的兼容是指滿足以下所有條件:
- 目標集群需要存在備份中的系統(tǒng)權(quán)限表。
- 目標集群系統(tǒng)權(quán)限表列數(shù)需要與備份數(shù)據(jù)中一致羹令,列的順序可以有差異鲤屡。
- 目標集群系統(tǒng)權(quán)限表的列需要與備份數(shù)據(jù)兼容。如果為帶長度類型(包括整型福侈、字符串等類型)酒来,前者長度需大于或等于后者,如果為
ENUM
類型肪凛,則應(yīng)該為后者超集堰汉。