跳至主要內容

Klustron集群逻辑备份及恢复操作方法示例

Klustron大约 20 分钟

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条,即虽然在备份任务发起后,一直有新的数据生成,但备份任务在指定的时点完成了对当前已有数据集的备份,备份期间未受新增数据事务的影响,获得了一致的备份。

【END】