Klustron集群逻辑备份及恢复操作方法示例
Klustron集群逻辑备份及恢复操作方法示例
参考 逻辑备份还原的功能概述 了解此功能的概况和实现技术。
在本文的内容中,我们将分别展示如何对一个集群实例中的table、schema、database进行逻辑备份,之后再恢复到另一个集群实例中,并且以API的方式实现同样的备份恢复功能,本文中会有详细的演示步骤说明。
另外,逻辑备份是可以在线执行的,本文档还将演示一个模拟在线应用不断的对一个表进行数据新增,在此期间进行备份操作,并通过恢复到另一个集群实例的过程来验证该能力。
环境说明:
本文中XPanel服务安装的服务器IP是192.168.0.152,打开浏览器,并输入地址:http://192.168.0.152:40180/KunlunXPanel/#/login?redirect=%2Fdashboard(初次登录用户名和密码是:super_dba/super_dba,初次登陆需要修改super_dba密码)。
登录后,查看“集群列表”,这里已经准备好了之前配置好的两个集群:
集群名称为“cluster1”, 该集群的计算节点IP为:192.168.0.153,服务端口为:47001, 存储分片数量为1个
集群名称为“cluster2”, 该集群的计算节点IP为:192.168.0.155,服务端口为:47001, 存储分片数量为1个
在执行逻辑备份之前,需要在XPanel中配置好备份文件存储设施。从Klustron-1.3开始,支持使用公有云(阿里云,AWS)对象存储系统来存储备份数据,相关设置也参考此文。
如果要使用HDFS集群来存储备份数据的话,还首先需要准备安装配置HDFS服务,具体HDFS服务的配置过程请参见Klustron HDFS备份存储配置。在本文所指的环境中,已将HDFS服务配置在192.168.0.152节点,之后在XPanel中将其通过“备份存储目标管理”添加到系统中,如下界面所示:
为完成本文所指的table级别备份功能,我们已经在集群cluster1 中准备了一些测试数据表(testtable1, testtable2,testtable3),展示如下:
测试表明细数据如下
注:如下是准备测试数据的过程和脚本:
1、以kunlun用户名身份ssh登录192.168.0.153
2、修改/kunlun/env.sh 确认envtype="${envtype:-no}" 替换为:envtype="all",保存退出
3、source /kunlun/env.sh
4、psql -h 192.168.0.153 -p 47001 -U abc postgres
5、
create table testtable1 (id int primary key);
insert into testtable1 select generate_series(1,10);
create table testtable2 (id int primary key);
insert into testtable2 select generate_series(11,20);
create table testtable3 (id int primary key);
insert into testtable3 select generate_series(21,30);
1 通过 XPanel 及 API 方式备份 table
1.1 点击集群cluster1 右侧的“设置”按钮
1.2 点击左侧菜单栏中的“逻辑备份”
1.3 在备份类型中选择:table,在备份表中选择要做逻辑备份的表名称,本例中,备份表选择:testtable1,然后在“备份时间范围”中选择17:00 – 18:00 (注:时间选择在测试数据表创建后就可以,这个时间段表达的意思是系统将自动的每日对testtable1进行逻辑备份,执行备份的时段会由系统决定在17:00-18:00之间完成)
如果想在一次备份操作中同时备份多个库表,则点击右侧的“+”号,然后选择其他想要同时备份的库表,并为其定义备份时段。
1.4 点击“保存”开始进行备份操作
1.5 备份成功后,提示信息如下:
1.6 对于成功完成的逻辑备份任务,相关表的备份数据会保存在之前配置好的HDFS备份目标中,我们登录到本文所指的HDFS备份目标IP: 192.168.0.152上,执行如下指令完成备份查看:
hdfs dfs -ls /kunlun/logicalbackup/cluster_1684593444_000002
后续的库表逻辑恢复任务,就会根据恢复操作中指定的参数来选择适当的备份集来完成。
1.7 以API方式对单表/多表进行备份
kunlun@kunlun1:~$curl -d '
{
"version":"1.0",
"job_id":"",
"job_type":"logical_backup",
"timestamp":"1684678534", #可通过date +%s 在Linux命令行提示符下获得
"user_name":"super_dba",
"paras":{
"cluster_id":"2", #源集群的集群ID号,在XPanel console获得
"backup_type": "table",
"backup":[{
"db_table":"postgres_$$_public.testtable2",
"backup_time":"22:00:00-23:00:00" #指定何时对该表自动进行备份操作
},{
"db_table":"postgres_$$_public.testtable3",
"backup_time":"22:00:00-23:00:00"
}]
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":null,"error_code":"0","error_info":"","job_id":"46","status":"accept","version":"1.0"}
在上述输出信息中,关键信息是error_code,如果为0,说明正常,数据库已接受该备份任务,之后,我们可以通过 job_id 为46作为参数,通过如下调用获得任务执行的结果
kunlun@kunlun1:~$ curl -d '
{
"version":"1.0",
"job_id":"46",
"job_type":"get_status",
"timestamp":"1684679054",
"user_name":"super_dba",
"paras":{
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":{},"error_code":"0","error_info":"OK","job_id":"46","job_type":"","s
tatus":"done","version":"1.0"}
error_code为0, status为“done”,说明该次多表逻辑备份成功执行,如下是在HDFS上查看到的备份结果信息:
至此,以API 方式对testtable1的备份操作任务成功完成。
2 通过 XPanel 及 API 方式恢复 table
2.1 点击集群cluster1 右侧的“设置”按钮
2.2 点击左侧菜单栏中的“逻辑恢复”
2.3 在恢复类型中选“table”,在“目标表集群:”中选择cluster2 (本文中是cluster_1684593523_000003),在“备份表:”中选择之前备份的表: postgres_$$_public.testtable1(2023-05-21 17:32:30), “恢复开始时间:”选择:2023-05-21 17:45:00 (即上次备份的时间之后)
2.4 点击“保存”开始执行库表逻辑恢复
2.5 库表恢复成功后,提示信息如下
2.6 为确认testtable1的表数据已成功恢复至目标集群cluster2中,我们用kunlun用户以ssh连接到该集群的计算节点(ip: 192.168.0.155)进行如下检查:
确认/kunlun/env.sh 中envtype="${envtype:-no}" 替换为:
source env.sh
psql -h 192.168.0.155 -p 47001 -U abc postgres
postgres=# \dt
postgres=# select * from testtable1 ;
从输出中看到testtable1已存在,且数据内容和行数正确,至此对表testtable1的逻辑恢复操作成功完成。
2.7 以API方式对单表/多表进行恢复
kunlun@kunlun1:~$ curl -d '
{
"version":"1.0",
"job_id":"",
"job_type":"logical_restore",
"timestamp":"1684763090",
"user_name":"super_dba",
"paras":{
"src_cluster_id":"2",
"dst_cluster_id":"3",
"restore_type":"table",
"restore":[{
"db_table":"postgres_$$_public.testtable2",
"restore_time":"2023-05-21 22:30:00"
},{
"db_table":"postgres_$$_public.testtable3",
"restore_time":"2023-05-21 22:30:00"
}]
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":null,"error_code":"0","error_info":"","job_id":"55","status":"accept","version":"1.0
"}
在上述输出信息中,关键信息是error_code,如果为0,说明正常,数据库已接受该恢复任务,之后,我们可以通过 job_id 为55作为参数,通过如下调用获得任务执行的结果:
kunlun@kunlun1:~$ curl -d '
{
"version":"1.0",
"job_id":"55",
"job_type":"get_status",
"timestamp":"1684679705",
"user_name":"super_dba",
"paras":{
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":{"done_dts":"postgres_$$_public.testtable2,postgres_$$_public.testtable3,"},"error
_code":"0","error_info":"","job_id":"","job_type":"","status":"done","version":"1.0"}
error_code为0,并status为“done”,代表任务成功完成,我们在目标集群中,进行如下的操作来验证恢复操作的结果是否符合预期:
确认/kunlun/env.sh 中envtype="${envtype:-no}" 替换为:
source env.sh
psql -h 192.168.0.155 -p 47001 -U abc postgres
postgres=# \dt
postgres=#select * from testtable2 ;
postgres=#select * from testtable3 ;
从输出中看到testtable1已存在,且数据内容和行数正确,至此以API 方式对表testtable2,testtable3的逻辑恢复操作成功完成。
针对schema级别的备份,我们已经在集群cluster1 中准备了应的测试schema及数据表,具体如下:
注:如下是准备测试数据的过程和脚本:
1、以kunlun用户名身份ssh登录192.168.0.153
2、修改/kunlun/env.sh 确认envtype="${envtype:-no}" 替换为:envtype="all",保存退出
3、source /kunlun/env.sh
4、
psql -h 192.168.0.153 -p 47001 -U abc postgres
show schemas;
create schema test1 ;
create table test1.testtable4 (id int primary key);
insert into test1.testtable4 select generate_series(1,3);
create schema test2;
create table test2.testtable5 (id int primary key);
insert into test2.testtable5 select generate_series(1,3);
create schema test3 ;
create table test3.testtable6 (id int primary key);
insert into test3.testtable6 select generate_series(1,3);
create schema test4;
create table test4.testtable7 (id int primary key);
insert into test4.testtable7 select generate_series(1,3);
3 通过 XPanel 及 API 方式备份 schema
3.1 点击集群cluster1 右侧的“设置”按钮
3.2 点击左侧菜单栏中的“逻辑备份”
3.3 在备份类型中选择:schema,在备份表中选择要做逻辑备份的schema名称,本例中,我们选择两个schema:test1,test2,然后在“备份时间范围”中选择10:30 – 11:30 (注:时间选择在这些schema中的测试数据表创建后就可以,这个时间段表达的意思是系统将自动的每日对test1,test2中的数据表进行逻辑备份,执行备份的时段会由系统决定在10:30-11:30之间完成)
3.4 点击“保存”开始进行备份操作
3.5 备份成功后,提示信息如下:
3.6 对于成功完成的逻辑备份任务,相关schema的备份数据会保存在之前配置好的HDFS备份目标中,我们登录到本文所指的HDFS备份目标IP: 192.168.0.152上,执行如下指令完成备份查看:
hdfs dfs -ls /kunlun/logicalbackup/cluster_1684593444_000002
后续的schema逻辑恢复任务,就会根据恢复操作中指定的参数来选择适当的备份集来完成。
3.7 以API方式对schema进行备份
kunlun@kunlun1:~$ curl -d '
{
"version":"1.0",
"job_id":"",
"job_type":"logical_backup",
"timestamp":"1684811103",
"user_name":"super_dba",
"paras":{
"cluster_id":"2",
"backup_type": "schema",
"backup":[{
"db_table":"postgres_$$_test3",
"backup_time":"10:30:00-11:30:00"
},{
"db_table":"postgres_$$_test4",
"backup_time":"10:30:00-11:30:00"
}]
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":null,"error_code":"0","error_info":"","job_id":"62","status":"accept","version":"1.0
"}
在上述输出信息中,关键信息是error_code,如果为0,说明正常,数据库已接受该备份任务,之后,我们可以通过 job_id 为62作为参数,通过如下调用获得任务执行的结果
kunlun@kunlun1:~$ curl -d '
{
"version":"1.0",
"job_id":"62",
"job_type":"get_status",
"timestamp":"1684811103",
"user_name":"super_dba",
"paras":{
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":{},"error_code":"0","error_info":"OK","job_id":"62","job_type":"","status":"done"
,"version":"1.0"}
error_code为0, status为“done”,说明该次多schema逻辑备份任务成功执行,如下是在HDFS上查看到的备份结果信息:
至此,以API 方式对test3,test4的多schema的备份操作任务成功完成。
4 通过 XPanel 及 API 方式恢复 schema
4.1 点击集群cluster1 右侧的“设置”按钮
4.2 点击左侧菜单栏中的“逻辑恢复”
4.3 在恢复类型中选“schema”,在“目标表集群:”中选择cluster2 (本文中是cluster_1684593523_000003),在“备份表:”中选择之前备份的schema: postgres_$$test1(2023-05-23 10:57:15),postgres$$_test2(2023-05-23 10:57:15) “开始时间:”统一选择:2023-05-23 12:00:00 (即上次备份的时间之后)
4.4 点击“保存”开始执行schema逻辑恢复
4.5 schema恢复成功后,提示信息如下
4.6 为确认两个schema下的表已经成功恢复至目标集群cluster2中,我们用kunlun用户以ssh连接到该集群的计算节点(ip: 192.168.0.155)进行如下检查:
确认/kunlun/env.sh 中envtype="${envtype:-no}" 替换为:envtype="all"
source env.sh
psql -h 192.168.0.155 -p 47001 -U abc postgres
postgres=# select * from test1.testtable4 ;
postgres=# select * from test2.testtable5 ;
从输出中看到在目标集群实例中,两个schema中的两个表testtable4,testtable5已存在,且数据内容和行数正确,至此对表多schema的逻辑恢复操作成功完成。
4.7 以API方式对schema进行恢复
kunlun@kunlun1:~$ curl -d '
{
"version":"1.0",
"job_id":"",
"job_type":"logical_restore",
"timestamp":"1684815815",
"user_name":"super_dba",
"paras":{
"src_cluster_id":"2",
"dst_cluster_id":"3",
"restore_type":"schema",
"restore":[{
"db_table":"postgres_$$_test3",
"restore_time":"2023-05-23 12:00:00"
},{
"db_table":"postgres_$$_test4",
"restore_time":"2023-05-23 12:00:00"
}]
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":null,"error_code":"0","error_info":"","job_id":"66","status":"accept","version":"1.0"}
在上述输出信息中,关键信息是error_code,如果为0,说明正常,数据库已接受该恢复任务,之后,我们可以通过 job_id 为66作为参数,通过如下调用获得任务执行的结果:
kunlun@kunlun1:~$ curl -d '
{
"version":"1.0",
"job_id":"66",
"job_type":"get_status",
"timestamp":"1684679705",
"user_name":"super_dba",
"paras":{
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":{"done_dts":"postgres_$$_test3.testtable6,postgres_$$_test4.testtable7,"},"error_c
ode":"0","error_info":"","job_id":"","job_type":"","status":"done","version":"1.0"}
error_code为0,并且status为“done”,代表任务成功完成,我们在目标集群中,进行如下的操作来验证恢复操作的结果是否符合预期:
确认/kunlun/env.sh 中envtype="${envtype:-no}" 替换为:envtype="all"
source env.sh
psql -h 192.168.0.155 -p 47001 -U abc postgres
postgres=#select * from test3.testtable6 ;
postgres=#select * from test4.testtable7 ;
从输出中看到两个schema下的表已存在,且数据内容和行数正确,至此以API 方式对schema的逻辑恢复操作成功完成。
针对database级别备份功能,我们已经在集群cluster1 中准备了对应的database
及数据表,展示如下:
注:如下是准备测试数据的过程和脚本:
1、以kunlun用户名身份ssh登录192.168.0.153
2、修改/kunlun/env.sh 确认envtype="${envtype:-no}" 替换为:envtype="all",保存退出
3、source /kunlun/env.sh
4、
psql -h 192.168.0.153 -p 47001 -U abc postgres
create database testdb1 with owner abc;
psql -h 192.168.0.153 -p 47001 -U abc testdb1
create table testtable8 (id int primary key);
insert into testtable8 select generate_series(1,3);
select * from testtable8 ;
create database testdb2 with owner abc ;
psql -h 192.168.0.153 -p 47001 -U abc testdb2
create table testtable9 (id int primary key);
insert into testtable9 select generate_series(1,3);
select * from testtable9 ;
5 通过 XPanel 及 API 方式备份 db
5.1 点击集群cluster1 右侧的“设置”按钮
5.2 点击左侧菜单栏中的“逻辑备份”
5.3 在备份类型中选择:db,在备份表中选择要做逻辑备份的db名称,本例中,我们选择testdb1然后在“备份时间范围”中选择22:00 – 23:00 (注:时间选择在这个db中的测试数据表创建后就可以,这个时间段表达的意思是系统将自动的每日对testdb1中的数据表进行逻辑备份,执行备份的时段会由系统决定在22:00-23:00之间完成)
5.4 点击“保存”开始进行备份操作
5.5 备份成功后,提示信息如下:
5.6 对于成功完成的逻辑备份任务,相关db的备份数据会保存在之前配置好的HDFS备份目标中,我们登录到本文所指的HDFS备份目标IP: 192.168.0.152上,执行如下指令完成备份查看:
hdfs dfs -ls /kunlun/logicalbackup/cluster_1684593444_000002
后续的db逻辑恢复任务,就会根据恢复操作中指定的参数来选择适当的备份集来完成。
5.7 以API方式对db进行备份
curl -d '
{
"version":"1.0",
"job_id":"",
"job_type":"logical_backup",
"timestamp":"1684851125",
"user_name":"super_dba",
"paras":{
"cluster_id":"2",
"backup_type": "db",
"backup":[{
"db_table":"testdb2",
"backup_time":"22:00:00-23:00:00"
}]
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":null,"error_code":"0","error_info":"","job_id":"71","status":"accept","v
ersion":"1.0"}
在上述输出信息中,关键信息是error_code,如果为0,说明正常,数据库已接受该备份任务,之后,我们可以通过 job_id 为71作为参数,通过如下调用获得任务执行的结果
curl -d '
{
"version":"1.0",
"job_id":"71",
"job_type":"get_status",
"timestamp":"1684811103",
"user_name":"super_dba",
"paras":{
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":{},"error_code":"0","error_info":"OK","job_id":"71","job_type":"","status":"done"
,"version":"1.0"}
error_code为0, status为“done”,说明该次db逻辑备份任务成功执行,如下是在HDFS上查看到的备份结果信息:
至此,以API 方式对testdb2的db备份操作任务成功完成。
6 通过 XPanel 及 API 方式恢复 db
6.1 点击集群cluster1 右侧的“设置”按钮
6.2 点击左侧菜单栏中的“逻辑恢复”
6.3 在恢复类型中选“db”,在“目标表集群:”中选择cluster2 (本文中是cluster_1684593523_000003),在“备份表:”中选择之前备份的db: testdb1(2023-05-23 22:08:16),“开始时间:”统一选择:2023-05-23 22:30:00 (即上次备份的时间之后)
6.4 点击“保存”开始执行db逻辑恢复
6.5 db恢复成功后,提示信息如下
6.6 为确认testdb1下的表已经成功恢复至目标集群cluster2中,我们用kunlun用户以ssh连接到该集群的计算节点(ip: 192.168.0.155)进行如下检查:
确认/kunlun/env.sh 中envtype="${envtype:-no}" 替换为:envtype="all"
source env.sh
psql -h 192.168.0.155 -p 47001 -U abc testdb1
postgres=# select * from testtable8 ;
从输出中看到在目标集群实例中,testdb1中的表testtable8已存在,且数据内容和行数正确,至此对db级逻辑恢复操作成功完成。
6.7 以API方式对db进行恢复
curl -d '
{
"version":"1.0",
"job_id":"",
"job_type":"logical_restore",
"timestamp":"1684852254",
"user_name":"super_dba",
"paras":{
"src_cluster_id":"2",
"dst_cluster_id":"3",
"restore_type":"db",
"restore":[{
"db_table":"testdb2",
"restore_time":"2023-05-23 22:30:00"
}]
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":null,"error_code":"0","error_info":"","job_id":"73","status":"accept","version":"1.0
"}
在上述输出信息中,关键信息是error_code,如果为0,说明正常,数据库已接受该恢复任务,之后,我们可以通过 job_id 为73作为参数,通过如下调用获得任务执行的结果:
curl -d '
{
"version":"1.0",
"job_id":"73",
"job_type":"get_status",
"timestamp":"1684852254",
"user_name":"super_dba",
"paras":{
}
}
' -X POST http://192.168.0.152:58000/HttpService/Emit
如下是输出信息:
{"attachment":{"done_dts":"testdb2_$$_public.testtable9,"},"error_code":"0","error_info":"","job
_id":"","job_type":"","status":"done","version":"1.0"}
error_code为0,并且status为“done”,代表任务成功完成,我们在目标集群中,进行如下的操作来验证恢复操作的结果是否符合预期:
确认/kunlun/env.sh 中envtype="${envtype:-no}" 替换为:envtype="all"
source env.sh
psql -h 192.168.0.155 -p 47001 -U abc testdb2
postgres=#select * from testtable9 ;
从输出中看到两个testdb2下的表已存在,且数据内容和行数正确,至此以API 方式对db级的逻辑恢复操作成功完成。
为完成本文所指的table在线备份及恢复功能(注:schema,db级别的备份恢复支持同样的能力),我们已经在集群cluster1 中准备了相应的数据表,展示如下:
注:如下是准备测试数据的过程和脚本:
1、以kunlun用户名身份ssh登录192.168.0.153
2、修改/kunlun/env.sh 确认envtype="${envtype:-no}" 替换为:envtype="all",保存退出
3、source /kunlun/env.sh
4、
psql -h 192.168.0.153 -p 47001 -U abc postgres
create table testtable10 (id int primary key);
insert into testtable10 select generate_series(1,1000000);
select max(id) from testtable10;
说明:通过以上操作,testtable10表中现有记录100万条。
7 在线备份及恢复 table
7.1 点击集群cluster1 右侧的“设置”按钮
7.2 点击左侧菜单栏中的“逻辑备份”
7.3 在备份类型中选择:table,在备份表中选择postgres/public/testtable10,然后在“备份时间范围”中选择16:00 – 17:00
7.4 在192.168.0.153 上kunlun用户下创建一个shell脚本,内容如下:
kunlun@kunlun2:~$ more gen_data.sh
#!/bin/bash
# KL 连接信息
KL_USER="abc"
KL_HOST="192.168.0.153"
KL_PORT="47001"
KL_DATABASE="postgres"
KL_TABLE="testtable10"
# 循环插入记录
i=1000001
while true
do
# 执行 SQL 语句
psql -h $KL_HOST -p $KL_PORT -U $KL_USER $KL_DATABASE -c "INSERT INTO $KL_TABLE (id) VALUES ('$i')"
echo $i
i=`expr $i + 1`
# 等待 1 秒
sleep 1
done
注:该脚本的功能是每一秒钟为testtablle10增加一条记录,起始ID 从1000001开始,模拟前端应用不断的对库表操作。
7.5 点击“保存”开始进行备份操作
7.6 在192.168.0.153上执行之前创建的脚本:sh gen_data.sh 对库表不停的新增记录,脚本输出信息如下:
7.7 备份成功后,提示信息如下:
7.8 在提示备份成功后,我们强行中止gen_data.sh脚本,检查testtable10的数据,结果如下:
附相关的指令:
psql -h 192.168.0.153 -p 47001 -U abc postgres
select max(id) from testtable10;
说明:在我们发起备份任务后,直至备份任务结束及之后,新增事务成功的往testtable10表中插入了12条记录
7.9 点击集群cluster1 右侧的“设置”按钮
7.10 点击左侧菜单栏中的“逻辑恢复”
7.11 在恢复类型中选“table”,在“目标表集群:”中选择cluster2 (本文中是cluster_1684593523_000003),在“备份表:”中选择之前备份的table:postgres_$$_public.testtable10(2023-05-27 16:16:35),“开始时间:”选择:2023-05-27 16:30:00 (即上次备份的时间之后)
7.12 点击“保存”开始执行表逻辑恢复
7.13 表恢复成功后,提示信息如下
7.14 我们用kunlun用户登陆cluster2,用ssh连接到该集群的计算节点(ip: 192.168.0.155)进行表恢复情况检查:
确认/kunlun/env.sh 中envtype="${envtype:-no}" 替换为:envtype="all"
source env.sh
psql -h 192.168.0.155 -p 47001 -U abc postgres
postgres=# select max(id) from testtable10;
从输出中看到在目标集群实例中,表testtable10中的记录数为100W条,即虽然在备份任务发起后,一直有新的数据生成,但备份任务在指定的时点完成了对当前已有数据集的备份,备份期间未受新增数据事务的影响,获得了一致的备份。