增量冷备份与恢复

功能介绍

增量冷备份功能是将一个正常运行的 YMatrix 数据库集群在特定时间点保存的所有数据按照一定的规则保存成文件来进行数据备份。备份的数据可以保证在该特定时间点的数据完整性和一致性。 另外,从一个给定备份的所有文件,可以恢复出一个可用的 YMatrix 数据库集群,其中的内容和原集群在特定时间点的数据一致。

增量冷备份功能在必要的创建全量备份功能的基础上,提供了创建增量备份的模式。

全量备份会将整个数据库集群的数据复制来进行备份。在创建全量备份时,创建操作对运行的数据库有一定资源使用的影响。但从一个全量备份恢复出一个数据库的集群速度可以很快。增量备份会基于已经创建的全量备份对该全量备份创建后的原集群的数据修改进行备份。创建增量备份对运行的数据库影响较小。但从一个增量备份恢复出一个数据库的集群会比全量备份慢一些。在实际使用时,可以两者组合使用以平衡对原数据库集群的运行影响和从备份版本中恢复的速度。

功能使用

功能实现

1. 备份文件存储

增量冷备份的备份文件存储在原数据库集群的机器上,其使用的目录是 /mxarchive_<原数据库集群 ID>。每台机器上都会使用此目录来保存从本机器的数据库 segment 备份出的文件。此目录的目录结构如下:

/mxarchive_<原集群 ID>
 ├── 1                           (原集群的 segment 的 dbid)
 │   ├── basebackup              (保存原集群的 basebackup tarball)
 │   │   └── <basebackup 版本>   (一个全量备份的版本)
 │   │        └── base.tar      (pg_basebackup 创建的全量备份的 tarball,如果开启了压缩,会是 base.tar.gz)
 │   ├── wal                     (保存 WAL segment 文件)
 │   ├── history                 (保存 WAL history 文件)
 │   ├── backup                  (保存 pg_basebackup 创建全量备份的 backup 文件)
 │   └── misc                    (保存因为集群 failover / failback 而产生的破碎的 WAL segment 文件)
 ├── 2
 │   └── ...                     (结构如 1)
 └── 3
      └── ...                     (结构如 1)

2. 版本信息管理

增量冷备份的版本信息保存在原数据库集群的 master 所在的机器上,使用 sqlite 的数据文件进行保存,其路径为 /mxarchive_<原数据库集群 ID>/metadata/mxarchive.db

集群配置

注意!
在配置数据库集群使用增量冷备份功能时,集群需要处于正常运行的状态。 对于增量冷备份功能的操作,均需使用数据库集群管理用户 mxadmin 作为执行命令的用户。

1. 功能初始化 登陆 master 所在的机器,使用 mxadmin 用户运行以下命令:

$ mxarchive init

其执行结果大致如下所示:

$ mxarchive init
2025-04-09:14:16:12.561 mxarchive_init:mxadmin:iv-ydt9heyeioxjd1u57imv:019030-[INFO]:-Fetch deployment information of cluster: baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:16:12.565 mxarchive_init:mxadmin:iv-ydt9heyeioxjd1u57imv:019030-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:16:12.570 mxarchive_init:mxadmin:iv-ydt9heyeioxjd1u57imv:019030-[INFO]:-Initialize local archive storage on every host ...
2025-04-09:14:16:12.599 mxarchive_init:mxadmin:iv-ydt9heyeioxjd1u57imv:019030-[INFO]:-Finished initializing local archive storage.
2025-04-09:14:16:14.799 mxarchive_init:mxadmin:iv-ydt9heyeioxjd1u57imv:019030-[INFO]:-Finished mxarchive initialization for database cluster: baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:16:14.799 mxarchive_init:mxadmin:iv-ydt9heyeioxjd1u57imv:019030-[INFO]:-Please check /mxarchive_baz8hPk6Rn27YsFrq7pN3E on each host for archive local storage.
2025-04-09:14:16:14.799 mxarchive_init:mxadmin:iv-ydt9heyeioxjd1u57imv:019030-[INFO]:-Please restart database cluster to make GUC changes to take effect.

2. 配置备份文件目录

在初始化完成后,集群的每台机器都会出现 /mxarchive_<数据库集群 ID> 的目录作为储存备份文件的目录。可以根据磁盘配置的需要调整存储不同 segment 的备份文件的磁盘(比如,将相应的 segment 目录配置成指向实际存储的磁盘位置的符号链接)。

注意!
配置完成后需要保持原有的目录结构不发生改变。

3. 重启集群

在备份存储配置完成后,需要重启数据库集群以使备份功能生效。使用 mxstop 重启数据库集群:

$ mxstop -arf

重启后,可以看到备份目录中各个 segment 目录下的 wal 目录开始出现备份的 WAL segment 文件。接下来可以开始创建新版本的备份。

备份版本创建

在第一次创建备份版本时,必须要创建一个全量备份。后续的创建备份版本的操作可以根据需要创建全量备份或者增量备份。

全量备份版本创建

使用如下命令创建一个全量备份的版本:

$ mxarchive backup --type full

另外,在创建全量备份时,如果需要节省备份的磁盘占用,可以为备份加上压缩选项。

$ mxarchive backup --type full --compress

其输出大致如下所示:

$ mxarchive backup --type full
2025-04-09:14:17:16.105 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Fetch meta for cluster baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:17:16.109 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:17:16.115 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Start to generate full version: 20250409_061716
2025-04-09:14:17:16.115 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Check current size of database cluster ...
2025-04-09:14:17:16.170 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-It takes 55.113584ms to query DB size
2025-04-09:14:17:16.170 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Finished checking database cluster's database size.
2025-04-09:14:17:16.170 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Start to run pg_basebackup on every shard. This might take some time ...
2025-04-09:14:17:16.170 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Start to run base backup on all shards ...
2025-04-09:14:17:27.594 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-It takes 11.423554784s to run basebackup on every shard
2025-04-09:14:17:27.594 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Finished running pg_basebackup on every shard.
2025-04-09:14:17:27.594 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Start to create global restore point: 20250409_061716
2025-04-09:14:17:29.861 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Finished creating global restore point: 20250409_061716
2025-04-09:14:17:29.862 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Collecting WAL file names for global restore point: 20250409_061716
2025-04-09:14:17:29.877 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-WAL file name for LSN 0/18000100 is 000000010000000000000006
2025-04-09:14:17:29.877 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-WAL file name for LSN 0/140000A0 is 000000010000000000000005
2025-04-09:14:17:29.877 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-WAL file name for LSN 0/140000A0 is 000000010000000000000005
2025-04-09:14:17:29.877 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-WAL file name for LSN 0/140000A0 is 000000010000000000000005
2025-04-09:14:17:29.879 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-WAL file name for LSN 0/140000A0 is 000000010000000000000005
2025-04-09:14:17:29.880 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-WAL file name for LSN 0/140000A0 is 000000010000000000000005
2025-04-09:14:17:29.883 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-WAL file name for LSN 0/140000A0 is 000000010000000000000005
2025-04-09:14:17:29.883 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Finished collecting WAL file names for global restore point: 20250409_061716
2025-04-09:14:17:29.883 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Switching WAL segment files for archiving ...
2025-04-09:14:17:33.561 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-Returned LSN is 0/18000150 in file 000000010000000000000006 for shard -1
2025-04-09:14:17:33.561 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-Returned LSN is 0/140000F0 in file 000000010000000000000005 for shard 0
2025-04-09:14:17:33.561 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-Returned LSN is 0/140000F0 in file 000000010000000000000005 for shard 1
2025-04-09:14:17:33.561 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-Returned LSN is 0/140000F0 in file 000000010000000000000005 for shard 2
2025-04-09:14:17:33.561 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-Returned LSN is 0/140000F0 in file 000000010000000000000005 for shard 3
2025-04-09:14:17:33.562 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-Returned LSN is 0/140000F0 in file 000000010000000000000005 for shard 4
2025-04-09:14:17:33.562 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[DEBUG]:-Returned LSN is 0/140000F0 in file 000000010000000000000005 for shard 5
2025-04-09:14:17:33.562 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Finished switching WAL segment files for archiving.
2025-04-09:14:17:33.562 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Collecting data needed to be preserved for archiving this version ...
2025-04-09:14:17:36.647 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Finished collecting data needed to be preserved for archiving this version.
2025-04-09:14:17:36.647 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Saving version information into metadata storage ...
2025-04-09:14:17:36.651 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Finished saving version information into metadata storage.
2025-04-09:14:17:36.651 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019553-[INFO]:-Succeed in generating full archive: 20250409_061716

增量备份版本创建

使用如下命令创建一个增量备份的版本:

$ mxarchive backup --type incr

其输出大致如下所示:

$ mxarchive backup --type incr
2025-04-09:14:18:45.666 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Fetch meta for cluster baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:18:45.670 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:18:45.676 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Start to generate incremental version 20250409_061845
2025-04-09:14:18:45.676 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Check current size of database cluster ...
2025-04-09:14:18:45.738 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-It takes 61.690291ms to query DB size
2025-04-09:14:18:45.738 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Finished checking database cluster's database size.
2025-04-09:14:18:45.738 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Check latest full archive version ...
2025-04-09:14:18:45.739 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-It takes 907.545µs to find latest basebackup version: 20250409_061716
2025-04-09:14:18:45.739 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Found latest full archive version: 20250409_061716
2025-04-09:14:18:45.739 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Start to create global restore point: 20250409_061716
2025-04-09:14:18:45.776 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Finished creating global restore point: 20250409_061716
2025-04-09:14:18:45.776 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Collecting WAL file names for global restore point: 20250409_061716
2025-04-09:14:18:45.787 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-WAL file name for LSN 0/18000C28 is 000000010000000000000006
2025-04-09:14:18:45.792 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-WAL file name for LSN 0/18000AA8 is 000000010000000000000006
2025-04-09:14:18:45.792 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-WAL file name for LSN 0/18000CE8 is 000000010000000000000006
2025-04-09:14:18:45.793 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-WAL file name for LSN 0/18000B68 is 000000010000000000000006
2025-04-09:14:18:45.793 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-WAL file name for LSN 0/18000C28 is 000000010000000000000006
2025-04-09:14:18:45.794 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-WAL file name for LSN 0/18000BA8 is 000000010000000000000006
2025-04-09:14:18:45.794 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-WAL file name for LSN 0/1C000758 is 000000010000000000000007
2025-04-09:14:18:45.796 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Finished collecting WAL file names for global restore point: 20250409_061716
2025-04-09:14:18:45.796 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Switching WAL segment files for archiving ...
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-Returned LSN is 0/1C000770 in file 000000010000000000000007 for shard -1
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-Returned LSN is 0/18000D38 in file 000000010000000000000006 for shard 0
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-Returned LSN is 0/18000C78 in file 000000010000000000000006 for shard 1
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-Returned LSN is 0/18000AF8 in file 000000010000000000000006 for shard 2
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-Returned LSN is 0/18000BB8 in file 000000010000000000000006 for shard 3
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-Returned LSN is 0/18000C78 in file 000000010000000000000006 for shard 4
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[DEBUG]:-Returned LSN is 0/18000BF8 in file 000000010000000000000006 for shard 5
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Finished switching WAL segment files for archiving.
2025-04-09:14:18:47.779 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Collecting data needed to be preserved for archiving this version ...
2025-04-09:14:18:50.838 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Finished collecting data needed to be preserved for archiving this version.
2025-04-09:14:18:50.838 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Saving version information into metadata storage ...
2025-04-09:14:18:50.842 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Finished saving version information into metadata storage.
2025-04-09:14:18:50.842 mxarchive_backup:mxadmin:iv-ydt9heyeioxjd1u57imv:019939-[INFO]:-Succeed in generating incremental archive: 20250409_061845 based on full archive: 20250409_061716

备份版本信息查看

在创建出备份的版本后,可以查看当前已经有哪些备份的版本。备份版本的版本号是用时间戳表示的字符串。使用如下命令查看当前的版本:

$ mxarchive list

其输出大致如下所示:

$ mxarchive list
2025-04-09:14:19:44.752 mxarchive_list:mxadmin:iv-ydt9heyeioxjd1u57imv:020147-[INFO]:-Fetch deployment information of cluster: baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:19:44.757 mxarchive_list:mxadmin:iv-ydt9heyeioxjd1u57imv:020147-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:19:44.765 mxarchive_list:mxadmin:iv-ydt9heyeioxjd1u57imv:020147-[INFO]:-|
version         | base backup version | type | start at
20250409_061716 | 20250409_061716     | full | 2025-04-09 14:17:16
20250409_061845 | 20250409_061716     | incr | 2025-04-09 14:18:45

如果需要查看更多的信息,可以加上 --detail 参数。

$ mxarchive list --detail

其输出大致如下所示:

$ mxarchive list --detail
2025-04-09:14:20:15.514 mxarchive_list:mxadmin:iv-ydt9heyeioxjd1u57imv:020322-[INFO]:-Fetch deployment information of cluster: baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:20:15.519 mxarchive_list:mxadmin:iv-ydt9heyeioxjd1u57imv:020322-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:20:15.529 mxarchive_list:mxadmin:iv-ydt9heyeioxjd1u57imv:020322-[INFO]:-|
version         | base backup version | type | start at            | end until           | base backup size | WAl size | archive size | DB size
20250409_061716 | 20250409_061716     | full | 2025-04-09 14:17:16 | 2025-04-09 14:17:36 | 322 MB           | 940 MB   | 1.3 GB       | 308 MB
20250409_061845 | 20250409_061716     | incr | 2025-04-09 14:18:45 | 2025-04-09 14:18:50 | 322 MB           | 1.4 GB   | 1.7 GB       | 311 MB

数据库集群恢复

在创建了备份版本后,可以从任一备份版本恢复出一个数据库集群。具体操作步骤如下:

1. 初始化数据目录

在开始恢复之前,需要先为恢复出的数据库集群准备数据目录结构。使用如下命令在集群的每台机器上创建必要的目录结构:

$ mxarchive reactivate init

其输出大致如下:

$ mxarchive reactivate init
2025-04-09:14:21:11.301 mxarchive_reactivate_init:mxadmin:iv-ydt9heyeioxjd1u57imv:020483-[INFO]:-Fetch deployment information of cluster baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:21:11.305 mxarchive_reactivate_init:mxadmin:iv-ydt9heyeioxjd1u57imv:020483-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:21:11.310 mxarchive_reactivate_init:mxadmin:iv-ydt9heyeioxjd1u57imv:020483-[INFO]:-Initialize local archive reactivation storage on every host ...
2025-04-09:14:21:11.341 mxarchive_reactivate_init:mxadmin:iv-ydt9heyeioxjd1u57imv:020483-[INFO]:-Finished mxarchive reactivation initialization, and the root directory for data directory is: /mxdata_20250409142111

这里最终会输出一个将要用于集群恢复的数据目录,需要将其记录下来。

2. 配置数据目录

如果需要为不同 segment 配置不同的磁盘存储,可以用类似配置备份文件目录的方法调整目录内文件最终保存至的磁盘位置。同样需要注意:

* 注意! 配置完成后需要保持原有的目录结构不发生改变。

3. 集群恢复

在数据目录配置完成后,即可从一个版本恢复出一个新的数据库集群。使用如下命令进行操作:

$ mxarchive reactivate <备份ID> \
    --data-dir <初始化时记录的数据目录> \
    --port-base <可以给新集群使用的起始 tcp 端口>

注意! port-base 指定的端口需要在所有机器上都不被其他应用占用。

其输出大致如下:

$ mxarchive reactivate 20250409_061845 --data-dir /mxdata_20250409142111 --port-base 8000
2025-04-09:14:22:40.772 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Fetch deployment information of cluster baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:22:40.776 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:22:40.781 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Query metadata for version 20250409_061845
2025-04-09:14:22:40.783 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[VERBOSE]:-It takes 1.9975ms to query metadata for version 20250409_061845
2025-04-09:14:22:40.783 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Copy data of version 20250409_061845 from archive storage to new reactivation directory /mxdata_20250409142111
2025-04-09:14:22:50.121 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[VERBOSE]:-It takes 9.337559569s to copy data to new reactivation directory for every shard
2025-04-09:14:22:50.121 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Try to only activated master ...
2025-04-09:14:22:51.726 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Start rewriting gp_segment_configuration ...
2025-04-09:14:22:51.734 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Stop activated master ...
2025-04-09:14:22:56.216 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-Start to setup activated database ...
2025-04-09:14:23:02.867 mxarchive_reactivate:mxadmin:iv-ydt9heyeioxjd1u57imv:020750-[INFO]:-It takes 22.085693839s in total to reactivate a new database from archive version 20250409_061845

此时即可通过 psql 连接新的数据库集群查看其内容:

$ psql postgres -p 8000
psql (12.12)
Type "help" for help.

postgres=# select * from gp_segment_configuration;
 dbid | content | role | preferred_role | mode | status | port |        hostname         |         address         |                datadir
------+---------+------+----------------+------+--------+------+-------------------------+-------------------------+---------------------------------------
    1 |      -1 | p    | p              | n    | u      | 8000 | iv-ydt9heyeioxjd1u57imv | iv-ydt9heyeioxjd1u57imv | /mxdata_20250409142111/master/mxseg-1
    6 |       0 | p    | p              | n    | u      | 8001 | iv-ydt9heyeiowh2yp2bv0q | iv-ydt9heyeiowh2yp2bv0q | /mxdata_20250409142111/primary/mxseg0
    7 |       1 | p    | p              | n    | u      | 8002 | iv-ydt9heyeiowh2yp2bv0q | iv-ydt9heyeiowh2yp2bv0q | /mxdata_20250409142111/primary/mxseg1
    4 |       2 | p    | p              | n    | u      | 8003 | iv-ydt9heyeio5i3z3meox2 | iv-ydt9heyeio5i3z3meox2 | /mxdata_20250409142111/primary/mxseg2
    5 |       3 | p    | p              | n    | u      | 8004 | iv-ydt9heyeio5i3z3meox2 | iv-ydt9heyeio5i3z3meox2 | /mxdata_20250409142111/primary/mxseg3
    2 |       4 | p    | p              | n    | u      | 8005 | iv-ydt9heyeioxjd1u57imv | iv-ydt9heyeioxjd1u57imv | /mxdata_20250409142111/primary/mxseg4
    3 |       5 | p    | p              | n    | u      | 8006 | iv-ydt9heyeioxjd1u57imv | iv-ydt9heyeioxjd1u57imv | /mxdata_20250409142111/primary/mxseg5
(7 rows)

备份版本的删除

注意!
删除命令会在每次执行时都尽可能将任何其他备份版本都不再需要的备份文件删除。为节省备份的磁盘空间,请尽可能的删除不需要再进行恢复使用的备份版本。

当不再需要恢复某一版本时,可以将其从备份中删除。使用如下命令进行删除:

$ mxarchive delete <想要删除的版本>

其输出大致如下:

$ mxarchive delete 20250409_062624
2025-04-09:14:28:00.505 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Start to delete archive versions: [20250409_062624]
2025-04-09:14:28:00.506 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Are you sure to delete archive versions: [20250409_062624]? [y|N]
y
2025-04-09:14:28:02.337 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-User confirmed to delete archive versions: [20250409_062624]
2025-04-09:14:28:02.337 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Fetch deployment information of cluster: baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:28:02.342 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Get cluster meta from ETCD
2025-04-09:14:28:02.347 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Fetch metadata information of cluster's archive: baz8hPk6Rn27YsFrq7pN3E
2025-04-09:14:28:02.349 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Finished fetching metadata information of cluster's archive.
2025-04-09:14:28:02.349 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Start to delete version information from metadata: [20250409_062624]
2025-04-09:14:28:02.352 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Deleted information of version: 20250409_062624
2025-04-09:14:28:02.352 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Finished deleting version information from metadata.
2025-04-09:14:28:02.352 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Check basebackups that might need to be cleanup ...
2025-04-09:14:28:02.352 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Finished checking basebackups that need to be cleanup.
2025-04-09:14:28:02.352 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-No basebackup need to be deleted.
2025-04-09:14:28:02.352 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Start to check WAL files that might need to be deleted ...
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Finished checking WAL files that need to be deleted.
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Delete WAL files of each segment until given position:
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Shard ID:   -1 / WAL Segment File: 000000010000000000000005
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Shard ID:    0 / WAL Segment File: 000000010000000000000004
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Shard ID:    1 / WAL Segment File: 000000010000000000000004
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Shard ID:    2 / WAL Segment File: 000000010000000000000004
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Shard ID:    3 / WAL Segment File: 000000010000000000000004
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Shard ID:    4 / WAL Segment File: 000000010000000000000004
2025-04-09:14:28:02.353 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Shard ID:    5 / WAL Segment File: 000000010000000000000004
2025-04-09:14:28:02.400 mxarchive_delete:mxadmin:iv-ydt9heyeioxjd1u57imv:022489-[INFO]:-Finished deleting WAL files of each segment.

如果想要删除多个版本,可以在同一个命令内指定:

$ mxarchive delete <想要删除的版本_1> <想要删除的版本_2> <...>

备注

在 v6.3.0 版本中使用有如下使用限制,将会在后续版本中改进。

  1. 恢复和删除功能目前仍需原集群可用
  • 此版本在进行恢复一个版本至可用集群和删除一个版本时仍需要读取原集群的拓扑信息才能工作。
  1. 不支持 tablespace
  • 此版本的增量冷备份尚不支持恢复出用户定义的 table space 的数据。
  1. 不支持集群 failover
  • 此版本的增量冷备份尚不支持集群发生 failover 时的情况。