使用EsgynDB的在线备份恢复功能迁移schema到另一个集群

我们知道Trafodion有很多数据导入导出的方法,这在之前的博客:https://blog.csdn.net/post_yuan/article/details/80887080中已经有提到,有包括使用Trafodion本身的LOAD/UNLOAD语法,也有使用odb工具的导入导出,也有利用其他第三方工具的方法。今天正好遇到一个场景是要把生产环境的整个schema的表及数据快速导入到测试环境中,schema下面的表有几百个不等。

鉴于生产环境和测试环境使用相同的EsgynDB版本,且新版本的EsgynDB数据库已经支持在线的子集备份(表级别或schema级别),因此这里我们想到可以利用EsgynDB的schema级别备份与恢复,实现此应用场景。具体的方法与步骤如下,

1 生产库schema备份

sqlci执行,
backup trafodion,tag 'test_sch_0716',schema(TEST_SCH),show objects;
backup trafodion,tag 'test_sch_0716',schema(TEST_SCH);

2 查看备份集

sqlci>>
get all backup tags
get all backup tags, show details;

输出如下,

>>get all backup tags;

BackupTag     IsPrefix  NumBackups
==================================

test_sch_0716       YES           1

--- SQL operation complete.
>>get all backup tags, show details;

BackupTag                          BackupTime           BackupStatus  BackupOperation
===========================================================================================

test_sch_0716_00212398519731190461  2018-07-16:16:48:51  VALID         REGULAR

--- SQL operation complete.

3 导出备份集

sqlci>>
export backup to location '/user/trafodion/backups',tag 'test_sch_0716';

4 查看导出备份集

hadoop fs -ls /user/trafodion/backups
hadoop fs -ls /user/trafodion/backups/test_sch_0716_00212398519731190461
hadoop fs -du -s -h /user/trafodion/backups/test_sch_0716_00212398519731190461

5 get备份集到本地压缩并传输到测试环境

hadoop fs -get /user/trafodion/backups/test_sch_0716_00212398519731190461
tar -czvf test_sch_0716_00212398519731190461.tar.gz test_sch_0716_00212398519731190461

6 在测试环境将备份集解压并put到HDFS路径

hadoop fs -put test_sch_0716_00212398519731190461 /user/trafodion/backups/
hadoop fs -ls /user/trafodion/backups
hadoop fs -du -s -h /user/trafodion/backups

7 停止dcs,删除原测试环境已有schema及下属表
使用dcsstop停止dcs服务,并执行以下删除步骤,

sqlci>>
set statistics on;
drop schema test_sch cascade;

8 导入备份集

sqlci>>
get all backup tags, show details;
import backup from location 'hdfs://10.31.77.56:8020/user/trafodion/backups',tag 'test_sch_0716_00212398519731190461';
get all backup tags, show details;

9 检查导入的备份集

sqlci>>
get all backup tags;
get all backup tags, show details;

10 使用导入的备份集恢复schema所有数据

sqlci>>
restore trafodion,tag 'test_sch_0716_00212398519731190461',schema(TEST_SCH),show objects;
restore trafodion,tag 'test_sch_0716_00212398519731190461',schema(TEST_SCH);

11 检查恢复的schema及数据是否正确

sqlci>>
get schemas;
set schema test_sch;
get tables;
select count(*) from DIM_AD_MEDIA;

12 启动dcs服务,从trafci或JDBC客户端检查表数据
使用dcsstart启动dcs服务,使用trafci或客户端工具检验数据导入是否正确

猜你喜欢

转载自blog.csdn.net/post_yuan/article/details/81068765