######################
功能:
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
#########################