# 导出数据的一致性

__*Dumpling 导出数据的一致性*__
__*Dumpling --consistency*__

+ Dumpling 通过 --consistency <consistency level> 标志控制导出数据"一致性保证"的方式
  + flush
  + snapshot
  + lock
  + none
  + auto
```
./dumpling --snapshot 417773951312461825
./dumpling --snapshot "2020-07-02 17:12:45"
```

-------------------------------------------------------------

Dumpling 通过 --consistency <consistency level> 标志控制导出数据"一致性保证"的方式。对于 TiDB 来说,默认情况下,会通过获取某个时间戳的快照来保证一致性（即 --consistency snapshot）。在使用 snapshot 来保证一致性的时候,可以使用 --snapshot 选项指定要备份的时间戳。还可以使用以下的一致性级别:

- flush:使用 FLUSH TABLES WITH READ LOCK 短暂地中断备份库的 DML 和 DDL 操作、保证备份连接的全局一致性和记录 POS 信息。所有的备份连接启动事务后释放该锁。推荐在业务低峰或者 MySQL 备份库上进行全量备份。

- snapshot:获取指定时间戳的一致性快照并导出。

- lock:为待导出的所有表上读锁。

- none:不做任何一致性保证。

- auto:对 MySQL 使用 flush,对 TiDB 使用 snapshot。

选讲:
Dumpling 可以通过 --snapshot 指定导出某个 tidb_snapshot 时的数据。

--snapshot 选项可设为 TSO（SHOW MASTER STATUS 输出的 Position 字段）或有效的 datetime 时间,例如:
```
./dumpling --snapshot 417773951312461825
./dumpling --snapshot "2020-07-02 17:12:45"
```
即可导出 TSO 为 417773951312461825 或 2020-07-02 17:12:45 时的 TiDB 历史数据快照。