我们知道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或客户端工具检验数据导入是否正确
————————————————
版权声明:本文为CSDN博主「post_yuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Post_Yuan/article/details/81068765