VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

完整性校验

功能描述

数据完整性是指数据在其生命周期中的准确性和一致性。指在传输、存取数据的过程中,确保数据不被未授权的篡改或在篡改后能够被迅速发现。Vastbase支持以下完整性校验:

  • 使用checksum校验算法进行存储数据的完整性校验。

  • 数据库启动时,对块和数据库参数文件进行检验,并在过程中进行日志回显。

  • 对重要文件可以生成对应的MD5文件、提供MD5检验功能、提供恢复功能。

重要文件校验

语法格式

./pkg_integrity_check.sh [OPTION]

其中[option]具体内容如下:

  • 查看帮助信息。

    -h|--help   
    
  • 基于生成的md5sum文件列表检测指定路径下文件的MD5值,查看重要文件是否被修改。

    -c|--check MD5_SUM_FILE_LIST
    
  • 为指定路径生成md5sum文件列表。

    -g|--generate SRCDIR
    
  • 基于原始安装包和md5sum文件列表恢复指定路径下的重要文件。

    -r|--restore INSTALLER MD5_SUM_FILE_LIST
    

参数说明

  • MD5_SUM_FILE_LIST

    存放生成的MD5文件的文件夹路径。

  • SRCDIR

    待生成MD5文件的对象路径。

  • INSTALLER

    原始安装包所在的路径。

注意事项

页数据完整性校验支持使用江南天安KMS的摘要算法。

示例

示例1:存储数据完整性校验

1、使用vsql连接数据库,创建测试表并插入数据。

create table t1(id int,username varchar);
insert into t1 values(1,'张三');

2、查询表数据。

select * from t1;

返回结果为:

id  |  username 
----+-----------
  1 |  张三
(1 row)

3、查询表所在的目录。

select pg_relation_filepath('t1');

返回结果为:

pg_relation_filepath
---------------------
base/16553/16555
(1 row)

4、退出数据库,指定表所在目录,通过dd指令模拟损坏表数据。

  • 步骤3中的pg_relation_filepath()函数返回关系的整个文件路径名(相对于vastbase的数据目录PGDATA)。

  • 本步骤中的of和if取值$PGDATA/后跟步骤3的返回结果,用户应以实际查询返回结果做相应的替换。

\q
dd bs=8192 count=1 seek=1 of=$PGDATA/base/16553/16555 if=$PGDATA/base/16553/16555

5、使用vsql连接数据库,再次查询表数据。

select * from t1;

出现如下报错,表示数据不一致,页校验失败。

WARNING:  page verification failed,calculated checksum 3939 but expected 3940,the block num is 1
ERROR:  invalid page in block 1 of relation base/16553/16555

示例2:启动数据库时进行块检测和数据库参数文件检验,并进行日志回显。

vb_ctl restart

部分启动日志回显为:

0 [BACKEND] LOG:  the config file /home/vastbase/data/vastbase/postgresql.conf verify start.    
2023-02-16 09:31:50.859 [unknown] [unknown] localhost 47423508904576 0[0:0#0]  0   [BACKEND] LOG:  the config file /home/vastbase/data/vastbase/postgresql.conf ve  rify success.

示例3:重要文件校验及恢复。

1、进入数据库安装路径即home/vastbase/local/vastbase目录,对指定路径(本例中即对/home/vastbase/local/vastbase/bin/路径)生成md5sum文件列表。

cd /home/vastbase/local/vastbase
./bin/pkg_integrity_check.sh -g bin/

2、查看是否对重要路径下的文件有md5校验功能。

./bin/pkg_integrity_check.sh -c bin/md5sumf

回显结果如下(部分展示):

bin/alarmItem_bak2.conf: OK
bin/alarmItem_bak.conf: OK
bin/clusterdb: OK
bin/cluster_guc.conf: OK
bin/collect_debug_info.sh: OK
bin/constant: OK
bin/createdb: OK
bin/createlang: OK
bin/createuser: OK
bin/dbmind/app/diagnosis/cluster/entry.py: OK
bin/dbmind/app/diagnosis/cluster/__init__.py: OK
...

3、对已生成的md5文件进行恢复。

此处为了模拟文件丢失情况,修改了bin目录下某篇文件的文件名,用户需注意。

mv alarmItem.conf alarmItem_bak.conf  --用户需注意
./bin/pkg_integrity_check.sh -r /soft/vb_212/vastbase-installer/'Vastbase-G100-2.2_Build12(11698)-centos_7-x86_64.tar.gz' bin/md5sumf

回显结果为:

Restore will take time, please wait a few minutes.
Begin to decompress the package...
Begin to restore...
md5sum: bin/alarmItem.conf: No such file or directory
md5sum: WARNING: 1 listed file could not be read
Begin to recheck ...
line 1
line bin/alarmItem.conf:
md5sum: bin/alarmItem.conf: No such file or directory
-----------------------------------------------------------

  =>
9053245116a12ce4c8d98aa4a0b429d1  bin/alarmItem.conf
-----------------------------------------------------------
Successfully restored.

4、查看bin目录下情况:

ll bin/a*

此时bin目录下,丢失的alarmItem.conf文件被成功恢复回来:

-rw-r----- 1 vastbase vastbase 7297 Feb 15 02:44 bin/alarmItem_bak.conf
-rw-r----- 1 vastbase vastbase 7297 Feb 15 02:44 bin/alarmItem.conf