tidb的全量邏輯導出數據工具dumpling


######################

 

功能:

Dumpling 是一個用於從 MySQL/TiDB 進行全量邏輯導出的工具。你可以把存儲在 TiDB 或 MySQL 中的數據導出為 SQL 或 CSV 格式,用於邏輯全量備份。

  • 數據源:不僅能夠導出mysql的數據,而且還可以導出tidb的數據;
  • 格式:數據導出格式可以為sql文件格式,也可以導出為csv格式。這種格式方便遷移到其他數據庫;
  • 用途:邏輯備份數據

基本信息:

  • Dumpling 的輸入:MySQL/TiDB 集群
  • Dumpling 的輸出:SQL/CSV 文件
  • 適用 TiDB 版本:所有版本
  • Kubernetes 支持:尚未支持

 權限要求:

  • select
  • reload
  • lock tables
  • replication client
  • process

 

原理:

 

 

 適用場景:

  • 數據量較小,不適合大數據量導出;
  • 需要導出數據為sql或csv格式的需求
  • 只能全量導出數據,不能增量導出數據

 

導出數據后的元數據信息metadata:此文件包含導出的起始時間,以及 master binary log 的位置。

[work@xxx]$ cat metadata
Started dump at: 2021-10-14 15:46:56
SHOW MASTER STATUS:
    Log: mysql-bin.000224
    Pos: 1990
    GTID:ef863667-298a-11eb-8d0b-0c42a15d0b4c:1-175408

Finished dump at: 2021-10-14 16:01:41

 

 

 

 

安裝dumpling:

shell>> tiup install dumpling 

 

查看dumpling命令參數:

shell>> tiup dumpling --help

 

 

metadata:此文件包含導出的起始時間,以及 master binary log 的位置。

Copy
cat metadata
Started dump at: 2020-11-10 10:40:19
SHOW MASTER STATUS:
        Log: tidb-binlog
        Pos: 420747102018863124

Finished dump at: 2020-11-10 10:40:20
{schema}-schema-create.sql:創建 schema 的 SQL 文件。

Copy
cat test-schema-create.sql
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
{schema}.{table}-schema.sql:創建 table 的 SQL 文件

Copy
cat test.t1-schema.sql
CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
{schema}.{table}.{0001}.{sql|csv}:數據源文件

Copy
cat test.t1.0.sql
/*!40101 SET NAMES binary*/;
INSERT INTO `t1` VALUES
(1);
*-schema-view.sql、*-schema-trigger.sql、*-schema-post.sql:其他導出文件

 

 

備份命令:

shell>> tiup dumpling   --user root -p 123456  --host 10.10.10.10 --port 3306  --filetype sql -t 8 -F 102400MiB  -o /home/work/scripts/tmp/10.10.10.10   --database  apple,google,airbnb

 

當你只需要備份mysql或tidb的部分數據庫時,用--database指定數據庫時,各個數據庫名稱之間用逗號分割,而不是空格

 

 

 

 

選項:--sql

說明:選項僅僅可用於導出 CSV 的場景。  

舉例:--sql 'select * from `test`.`sbtest1` where id < 100'

 

 

選項:--where

說明:條件用於除系統數據庫(包括 mysql 、sys 、INFORMATION_SCHEMA 、PERFORMANCE_SCHEMA、METRICS_SCHEMA 和 INSPECTION_SCHEMA)外所有其他數據庫
舉例:
--where "id < 100"

 

 

選項: --filter 

說明:帥選庫表,多個匹配規則就用多個--filter規則

舉例: --filter "employees.*"  --filter "*.WorkOrder"  只備份employees庫中所有表,和所有庫中的WorkOrder表

 

 

選項:--threads ,可簡寫為-t

說明:指定備份並發線程數,默認為4

舉例:--threads 8

 

 

選項:--tables-list,可簡寫為-T

說明:指定備份表,需要庫名稱前綴

舉例:--tables-list   my_db.my_table

 

 

選項:--consistency,可簡寫為-T

說明:指定備份表,需要庫名稱前綴

舉例:--consistency   auto


Dumpling 通過 --consistency <consistency level> 標志控制導出數據“一致性保證”的方式。在使用 snapshot 來保證一致性的時候,可以使用 --snapshot 選項指定要備份的時間戳。還可以使用以下的一致性級別:

flush:使用 FLUSH TABLES WITH READ LOCK 短暫地中斷備份庫的 DML 和 DDL 操作、保證備份連接的全局一致性和記錄 POS 信息。所有的備份連接啟動事務后釋放該鎖。推薦在業務低峰或者 MySQL 備份庫上進行全量備份。

snapshot:獲取指定時間戳的一致性快照並導出。
lock:為待導出的所有表上讀鎖。
none:不做任何一致性保證。
auto:對 MySQL 使用 flush,對 TiDB 使用 snapshot。

 

 

選項:--rows,可簡寫為-r

說明:單個文件的最大行數

舉例:--rows   2000000

 

 

 

 

 

#########################


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM