用户数据完整性
功能描述
Vastbase支持用户数据完整性校验,通过密码卡SM3摘要算法实现。该功能涉及的内容如下:
适配光电安辰密码卡,支持用户通过SM3算法实现用户数据完整性校验。
修改江南天安加密机的用户数据完整性校验使用流程。
注意事项
用户数据完整性校验功能始于数据库初始化,直至数据库进程结束,为了确保完整性校验功能的有效性和准确性,这个过程中需要保持相同的校验算法和环境配置。
使用流程
光电安辰
1、配置光电安辰密码卡。
2、获取光电安辰的硬件动态库文件(libskf.so、libsdf.so),并将库文件与数据库实例$GAUSSHOME/lib/postgresql
目录下的hwcipher.so放在同一目录下(可自定义路径)。
3、在~/.bashrc
文件中配置如下环境变量:
设置环境变量
CRYPTDEV_LIBPATH
为动态库所在路径(不需要包含动态库名称)。设置环境变量
CRYPTDEV_TYPE=gdaccard
表示使用光电安辰密码卡。
4、初始化实例。
5、启动并连接数据库。
6、执行用户数据完整性校验,查询损坏的表数据会报错。
江南天安
1、配置江南天安加密机。
2、获取江南天安的硬件动态库文件(libTassSDF4GHVSM.so)和配置文件(tassConfig.ini),将库文件和数据库实例的lib/postgresql目录下的hwcipher.so放在同一目录下(可自定义路径)。
3、在~/.bashrc文件中配置如下环境变量:
设置环境变量CRYPTDEV_LIBPATH为硬件动态库libTassSDF4GHVSM.so和hwcipher.so所在路径(不要包含动态库名称)。
设置环境变量CRYPTDEV_CFG_PATH为江南天安配置文件tassConfig.ini所在路径。
设置环境变量
CRYPTDEV_TYPE=jntakms
表示使用江南天安加密机。
4、初始化实例。
5、启动并连接数据库。
6、执行用户数据完整性校验,查询损坏的表数据会报错。
示例
前置步骤
1、服务器已安装配置光电安辰密码卡。
2、在~/.bashrc文件中配置环境变量。
vi ~/.bashrc
添加如下内容(CRYPTDEV_LIBPATH已实际路径为准):
export CRYPTDEV_TYPE=gdaccard
export CRYPTDEV_LIBPATH=/home/wzr
3、重新加载配置文件。
source ~/.bashrc
4、初始化数据库实例。
vb_initdb -D test --nodename=test
示例1: 模拟损坏表数据,校验数据完整性。
1、启动并连接数据库。
vb_ctl start -D test -l logfile
vsql -d vastbase -r
2、修改用户密码。
alter role wzr password 'Huawei@123';
alter role vbadmin password 'Vbase@admin';
3、创建测试表。
create table tab_1144382(id int,a1 text);
4、插入数据。
insert into tab_1144382(id,a1) select generate_series(1,10000000),'a' from dual;
5、查询表数据行。
select count(*) from tab_1144382;
6、查看表的物理路径。
select pg_relation_filepath('tab_1144382');
返回结果为:
7、退出数据库。
\q
8、使用dd
命令模拟损坏表数据。
time dd bs=8192 count=1000 seek=1 of=test/base/19149/19153 if=/dev/urandom
返回结果如下:
9、重启数据库。
vb_ctl restart -D test -l logfile
10、连接数据库查看表。
vsql -d vastbase -r
select * from tab_1144382;
返回结果如下,文件损坏后查询结果报错:
示例2: 使用vb_probackup工具进行备份恢复。
1、设置GUC参数enable_cbm_tracking=on
。
echo "enable_cbm_tracking = on" >>test/postgresql.conf
enable_cbm_tracking
参数说明: 当使用roach执行数据库实例的全量和增量备份时需要开启此参数,如果关闭会导致备份失败。
取值范围: 布尔型
- on表示追踪功能开启。
- off表示追踪功能关闭。
默认值: off
2、启动并连接数据库。
vb_ctl start -D test -l logfile
vsql -d vastbase -r
3、修改用户密码。
alter role wzr password 'Huawei@123';
alter role vbadmin password 'Vbase@admin';
4、创建测试表。
create table tab_1142794(id int,a1 text);
5、初始化备份路径。
vb_probackup init -B /home/wzr/probackup
6、增加实例。
vb_probackup add-instance -B /home/wzr/probackup -D /home/wzr/test --instance=backup
7、设置配置信息。
vb_probackup set-config -B /home/wzr/probackup --instance=backup -d vastbase -h localhost -U vbadmin -W Vbase@admin
8、执行全量备份。
vb_probackup backup -B /home/wzr/probackup -b full --instance=backup
备份成功,返回结果如下:
9、验证备份文件是否存在且未损坏。
vb_probackup validate -B /home/wzr/probackup --instance=backup
验证成功,返回结果如下:
10、执行增量备份。
vb_probackup backup -B /home/wzr/probackup -b ptrack --instance=backup
备份成功,返回结果如下:
11、验证备份文件是否存在且未损坏。
vb_probackup validate -B /home/wzr/probackup --instance=backup
验证成功,返回结果如下:
12、停止数据库。
vb_ctl stop -D test -l log_file
13、执行恢复。
vb_probackup restore -B /home/wzr/probackup --instance=backup -D /home/wzr/new
恢复成功,返回结果如下:
14、修改备份文件,在配置文件中添加vbplsql_check=on。
echo "vbplsql_check=on" >>test/postgresql.conf
15、验证备份文件。
vb_probackup validate -B /home/wzr/probackup --instance=backup
验证失败,返回结果如下:
16、执行恢复。
vb_probackup restore -B /home/wzr/probackup --instance=backup -D /home/wzr/new
恢复失败,返回结果如下:
17、恢复配置文件,再次执行备份恢复。
vb_probackup restore -B /home/wzr/probackup --instance=backup -D /home/wzr/new
恢复成功,返回结果如下: