逻辑备份恢复加密
功能描述
Vastbase支持逻辑备份恢复加解密。
加密:用户可以对vb_dump/vb_dumpall导出的文件进行加密,操作对象是文件的每一行数据,对于每行数据调用硬件加密库接口进行加密。
解密:针对vb_dump/vb_dumpall导出的加密文件,使用vsql工具进行解密对于文件的每行数据根据指定的密钥索引调用硬件加密库接口进行解密。
前置条件
使用该功能必须配置光电安辰密码卡,并配置相关的系统环境变量,具体步骤如下:
1、配置光电安辰密码卡。
2、获取光电安辰的硬件动态库文件(libskf.so、libsdf.so),并将库文件与数据库实例$GAUSSHOME/lib/postgresql目录下的hwcipher.so放在同一目录下(可自定义路径)。
3、在~/.bashrc文件中配置如下环境变量:
设置环境变量CRYPTDEV_LIBPATH为动态库所在路径(不需要包含动态库名称)。
设置环境变量CRYPTDEV_TYPE=gdaccard表示使用光电安辰密码卡。
语法格式
vb_dump -f dump_file -p port DBNAME -F p --with-encryption SM4 --with-key key_index
vb_dumpall -f dumpall_file --with-encryption SM4 --with-key key_index
vsql -d vastbase -p port -f dump_file --with-decryption=SM4 --with-salt xxxxxxxxxxxxxxxx(16位)
参数说明
-f dump_file
-f
指定将导出的文件存储在dump_file文件中。dump_file:导出文件名称。
-p port
-p
指定数据库端口号。port:数据库端口号。
DBNAME
要连接的数据库名称。不需要-d,可以直接指定“DBNAME”为vastbase。
-F p
-F
选择输出格式,硬件加密仅支持p格式。p:输出一个文本SQL脚本文件。
--with-encryption SM4
指定转储数据使用SM4算法进行加密。硬件加密目前仅支持SM4。
--with-key key_index
指定密钥索引。
--with-salt xxxxxxxxxxxxxxxx(16位)
加解密使用的盐值(16位),需要保证加解密用到的盐值一致。
示例
前置步骤
1、服务器已安装配置光电安辰密码卡。
2、在~/.bashrc文件中配置环境变量。
vi ~/.bashrc
添加如下内容(CRYPTDEV_LIBPATH已实际路径为准):
export CRYPTDEV_TYPE=gdaccard
export CRYPTDEV_LIBPATH=/home/wzr1
3、重新加载配置文件。
source ~/.bashrc
4、启动并连接数据库。
vb_ctl start
vsql -r -d vastbase
5、创建测试表并插入数据。
create table tab_1142616(id int,A1 char(8),a2 text,a3 date);
create table tt_1142616(id int,A1 char(8),a2 text,a3 date);
insert into tab_1142616 values(1,'a','wzr','2023-4-20');
insert into tab_1142616 values(2,'b','zyx','2023-4-21');
insert into tt_1142616 values(3,'c','gwh','2023-4-22');
insert into tt_1142616 values(4,'d','hjm','2023-4-23');
insert into tt_1142616 values(5,'e','zgy','2023-4-24');
6、查看表结构和数据。
\d+ tab_1142616;
select * from tab_1142616 order by id;
\d+ tt_1142616;
select * from tt_1142616 order by id;
返回结果如下:
功能使用示例
1、执行加密备份。
vb_dump vastbase -f $PGDATA/test_1142616.sql -F p -t tab_1142616 -t tt_1142616 --exclude-table-data tt_1142616 --with-encryption SM4 --with-key 8 --with-salt 1111111111111111;
返回结果如下:
2、查看文件。
cat $PGDATA/test_1142616.sql;
返回结果如下:
3、连接数据库删除表。
vsql -r -d vastbase
drop table tab_1142616;
drop table tt_1142616;
4、使用vsql恢复数据。
vsql -d vastbase -f $PGDATA/test_1142616.sql --with-decryption=SM4 --with-key 8;
返回结果如下:
5、查看表结构和数据。
\d+ tab_1142616;
select * from tab_1142616 order by id;
\d+ tt_1142616;
select * from tt_1142616 order by id;
返回结果如下,数据恢复成功: