StarRocks 支持将当前数据以文件的形式,通过 broker 备份到远端存储系统中(Broker 是 StarRocks 集群中一种可选进程,主要用于支持 StarRocks 读写远端存储上的文件和目录,具体请参考Broker Load文档。之后可以通过恢复命令,从远端存储系统中将数据恢复到任意 StarRocks 集群。通过这个功能,StarRocks 可以支持将数据定期的进行快照备份。也可以通过这个功能,在不同集群间进行数据迁移。
使用该功能,需要部署对应远端存储的 broker,如 HDFS 等。可以通过 SHOW BROKER; 查看当前部署的 broker。
备份(backup)操作是指将指定表或分区的数据,直接以 StarRocks 存储的文件的形式,上传到远端仓库中进行存储。当用户提交 Backup 请求后,系统内部会做如下操作:
快照阶段会对指定的表或分区数据文件进行快照。之后,备份都是对快照进行操作。在快照之后,对表进行的更改、导入等操作都不再影响备份的结果。快照只是对当前数据文件产生一个硬链,耗时很少。快照完成后,会开始对这些快照文件进行逐一上传。快照上传由各个 Backend 并发完成。
元数据准备及上传
数据文件快照上传完成后,Frontend 会首先将对应元数据写成本地文件,然后通过 broker 将本地元数据文件上传到远端仓库,完成最终备份作业。
恢复(restore)操作需要指定一个远端仓库中已存在的备份,然后将这个备份的内容恢复到本地集群中。当用户提交 Restore 请求后,系统内部会做如下操作:
在本地创建对应的元数据
本地snapshot
下载快照
生效快照
总体流程
先创建云端仓库用于备份与恢复(新老集群都要创建云端仓库,REPOSITORY名字要相同,BROKER Name要查看集群的broker名称),在老集群准备好需要进行迁移备份的表,Backup到云端仓库,再从云端仓库Restore到新集群。
*
新集群当中不用事先创建好需要备份恢复的表,因为在进行Restore操作会自动创建。
当前StarRocks支持最小为分区(Partition)粒度的全量备份。如果需要对数据进行定期备份,首先需要在建表时,合理地规划表的分区及分桶。比如,按时间进行分区。然后在之后的运行过程中,按照分区粒度进行定期的数据备份。
用户可以先将数据备份到远端仓库,再通过远端仓库将数据恢复到另一个集群,完成数据迁移。因为数据备份是通过快照的形式完成的,所以,在备份作业的快照阶段之后的新的导入数据,是不会备份的。因此,在快照完成后,到恢复作业完成这期间,在原集群上导入的数据,都需要在新集群上同样导入一遍。建议在迁移完成后,对新旧两个集群并行导入一段时间。完成数据和业务正确性校验后,再将业务迁移到新的集群。
和备份恢复功能相关的命令如下。以下命令,都可以通过mysql-client连接StarRocks后,使用
help [CREATE REPOSITORY | BACKUP | SHOW BACKUP | SHOW SNAPSHOT | RESTORE | CANCEL BACKUP | CANCEL RESTORE | DROP REPOSITORY]
的方式查看详细帮助。
CREATE REPOSITORY
BACKUP
SHOW BACKUP
查看最近一次 backup 作业的执行情况,包括:
JobId:本次备份作业的 id。
*
SnapshotName:用户指定的本次备份作业的名称(Label)。
*
DbName:备份作业对应的 Database。
*
State:备份作业当前所在阶段:
BackupObjs:本次备份涉及的表和分区的清单。
*
CreateTime:作业创建时间。
*
SnapshotFinishedTime:快照完成时间。
*
UploadFinishedTime:快照上传完成时间。
*
FinishedTime:本次作业完成时间。
*
UnfinishedTasks:在 SNAPSHOTTING,UPLOADING 等阶段,会有多个子任务在同时进行,这里展示的当前段,未完成子任务的 task id。
*
TaskErrMsg:如果有子任务执行出错,这里会显示对应子任务的错误信息。
*
Status:用于记录在整个作业过程中,可能出现的一些状态信息。
*
Timeout:作业的超时时间,单位是「秒」。 SHOW SNAPSHOT
*
查看远端仓库中已存在的备份。
如果在 SHOW SNAPSHOT 后指定了 where 子句,则可以显示更详细的备份信息。
RESTORE
执行一次恢复操作。
SHOW RESTORE
查看最近一次 restore 作业的执行情况,包括:
JobId:本次恢复作业的 id。
*
Label:用户指定的仓库中备份的名称(Label)。
*
Timestamp:用户指定的仓库中备份的时间戳。
*
DbName:恢复作业对应的 Database。
*
State:恢复作业当前所在阶段:
AllowLoad:恢复期间是否允许导入。
*
ReplicationNum:恢复指定的副本数。
*
RestoreObjs:本次恢复涉及的表和分区的清单。
*
CreateTime:作业创建时间。
*
MetaPreparedTime:本地元数据生成完成时间。
*
SnapshotFinishedTime:本地快照完成时间。
*
DownloadFinishedTime:远端快照下载完成时间。
*
FinishedTime:本次作业完成时间。
*
UnfinishedTasks:在 SNAPSHOTTING,DOWNLOADING, COMMITTING 等阶段,会有多个子任务在同时进行,这里展示的当前阶段,未完成的子任务的 task id。
*
TaskErrMsg:如果有子任务执行出错,这里会显示对应子任务的错误信息。
*
Status:用于记录在整个作业过程中,可能出现的一些状态信息。
*
Timeout:作业的超时时间,单位是「秒」。
CANCEL BACKUP
取消当前正在执行的备份作业。
CANCEL RESTORE
取消当前正在执行的恢复作业。
DROP REPOSITORY
删除已创建的远端仓库。删除仓库,仅仅是删除该仓库在 StarRocks 中的映射,不会删除实际的仓库数据。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://docs.starrocks.com/zh-cn/main/administration/Backup_and_restore
内容来源于网络,如有侵权,请联系作者删除!