本文档介绍如何使用 Dumpling 和 TiDB Lightning 进行全量备份与恢复。
在备份与恢复场景中,如果需要全量备份少量数据(例如小于 50 GB),且不要求备份速度,你可以使用 Dumpling 从 TiDB 数据库导出数据进行备份,再使用 TiDB Lightning 将数据导入至 TiDB 数据库实现恢复。更多备份与恢复的相关信息,参见 TiDB 备份与恢复概述。
安装和运行 Dumpling:
安装和运行 TiDB Lightning:
操作系统:本文档示例使用的是若干新的、纯净版 CentOS 7 实例,你可以在本地虚拟化一台主机,或在供应商提供的平台上部署一台小型的云虚拟主机。TiDB Lightning 运行过程中,默认会占满 CPU,建议单独部署在一台主机上。如果条件不允许,你可以将 TiDB Lightning 和其他组件(比如 tikv-server
)部署在同一台机器上,然后设置 region-concurrency
配置项的值为逻辑 CPU 数的 75%,以限制 TiDB Lightning 对 CPU 资源的使用。
内存和 CPU:因为 TiDB Lightning 对计算机资源消耗较高,建议分配 64 GB 以上的内存以及 32 核以上的 CPU,而且确保 CPU 核数和内存 (GB) 比为 1:2 以上,以获取最佳性能。
磁盘空间:
推荐使用 Amazon S3、Google Cloud Storage (GCS) 和 Azure Blob Storage 等外部存储,以便能够快速存储备份文件,且不受磁盘空间限制。
如果需要保存单次备份数据到本地磁盘,需要注意以下磁盘空间限制:
说明:目前无法精确计算 Dumpling 从 TiDB 导出的数据大小,但你可以用下面 SQL 语句统计信息表的 data_length
字段估算数据量:
目标 TiKV 集群必须有足够空间接收新导入的数据。除了标准硬件配置以外,目标 TiKV 集群的总存储空间必须大于数据源大小 × 副本数量 × 2。例如,集群默认使用 3 副本,那么总存储空间需为数据源大小的 6 倍以上。公式中的 2 倍可能难以理解,其依据是以下因素的估算空间占用:
运行以下命令,从 TiDB 导出全量数据至 Amazon S3 存储路径 s3://my-bucket/sql-backup
:
Dumpling 默认导出数据格式为 SQL 文件,你也可以通过设置 --filetype
指定导出文件的类型。
关于更多 Dumpling 的配置,请参考 Dumpling 主要选项表。
导出完成后,可以在数据存储目录 s3://my-bucket/sql-backup
查看导出的备份文件。
编写配置文件 tidb-lightning.toml
,将 Dumpling 备份的全量数据从 s3://my-bucket/sql-backup
恢复到目标 TiDB 集群:
关于更多 TiDB Lightning 的配置,请参考 TiDB Lightning 配置参数。
运行 tidb-lightning
。如果直接在命令行中启动程序,可能会因为 SIGHUP
信号而退出,建议配合 nohup
或 screen
等工具,如:
若从 Amazon S3 导入,则需将有权限访问该 S3 后端存储的账号的 SecretKey 和 AccessKey 作为环境变量传入 Lightning 节点。同时还支持从 ~/.aws/credentials
读取凭证文件。
导入开始后,可以通过 grep
日志关键字 progress
查看进度,默认 5 分钟更新一次。
导入完毕后,TiDB Lightning 会自动退出。查看 tidb-lightning.log
日志末尾是否有 the whole procedure completed
,如果有,数据导入成功,恢复完成。如果没有,则表示导入遇到了问题,可根据日志中的 error 提示解决遇到的问题。
如果恢复过程中遇到问题,请参见 TiDB Lightning 常见问题。