openGauss 系统内部使用的工具:gs_upgradechk

gs_upgradechk

简介

gs_upgradechk是一个升级之后元数据完整性的检测工具,由python3编写,在数据库升级之后,对元数据进行检验,检查在升级过程前后,是否出现元数据的损坏。目前仅支持检测builtin、initdb的元数据,对于用户所创建的表等,暂时不会进行检测。

主要功能如下:

  • 导出:基于某个数据库,生成一份元数据校验地图。
  • 校验:基于某个元数据校验地图,对数据库进行元数据的校验,并生成报告。

约束

  • 默认仅支持校验A兼容性的数据库,除非使用参数特别指明。

如何使用

在安装了openGauss的环境上,使用如下命令运行此工具:

python3 gs_upgradechk [ action [ config-params, ... ] ]

其中action支持如下参数选项:

export                    导出
check | verify            校验
help | -h | -? | --help   帮助

默认值为 help, 不区分大小写

config-params支持的参数选项及其默认值如下

-p  | --port : 16666
-F  | --report-format : md
-M  | --report-mode : summary
-v  | --vmap : ''
-d  | --debug
-D  | --database
  • port:数据库端口号。
  • debug:会打印更多的日志,用于工具问题定位。无参数,默认关闭,指定时开启。
  • report-format:校验报告格式,当前仅支持markdown。
  • report-mode:校验报告详细程度,支持summarydetail两种模式,默认summary模式。此选项仅会影响生成的报告的详细程度,并不影响校验内容的多少,detail仅是会把所有的校验规则无论对错都整理输出,报告整理比较耗时,而summary则仅整理输出错误的内容。
  • vmap:指定的元数据校验地图。若指定了,则在校验时会使用指定vmap,否则会自动检测目标数据库版本并在网上下载和使用我们生成好的vmap。
  • database:指定使用某个数据库进行导出或校验,可指定非A库。

默认标准vmap下载地址如下:

https://opengauss.obs.cn-south-1.myhuaweicloud.com/upgrade_checker/standard_meta_verify_map_XX_X.X.X.vmap

其中XX表示工具版本,X.X.X表示openGauss版本

工具结构

| OM/scripts
    |d-- upgrade-checker                工具主要代码等
        |d-- utils                          工具代码-通用组件
        |d-- style                          工具代码-报告风格
        |d-- rules                          工具代码-规则组件
        |f-- project.py                     工具代码
        |f-- ..                             工具代码
        |d-- dev                            开发者便携脚本
        |d-- workspace                      工具默认工作目录[1]
            |d-- vmaps                        -基准校验地图存放位置
            |d-- project_name-workspace       -某次检测的运行工作目录
                |f-- run.log                    -运行日志
        |d-- results                        工具默认结果目录[2]
            |f- user-created-vmap            -用户自己生成的校验地图
            |f- report                       -某次检测的结果报告
    |f-- gs_upgradechk                  工具入口脚本

注意:[1]工具工作目录、[2]工具结果目录,正确配置OM环境变量时,会使用OM日志路径。

校验原理

数据库元数据,实际就是对一张张系统表以及其数据、openGauss数据库二进制程序内硬编码的部分数据等。 在升级过程中,切换二进制后,硬编码内容部分也随之切换。因此对于元数据的校验,仅需要校验系统表及其数据即可。

对于系统表和数据的校验,最直接的便是通过查询语句进行查询。 那么本工具实际上就是一个:执行一系列查询语句,并分析结果是否符合预期,并整理成报告的工具。

而在上述定义中涉及到的三个点:查询语句、预期结果、报告,分别如下定义:

  • 规则(Rule):校验某个项目的一条查询语句。这条查询语句需要的查询结果需要按照key-value进行组织,其中key的作用是可以让我们更清楚地知道查询结果的每一列都是什么,更方便的进行整理分析。例如: select oid as key, relname as val from pg_class where oid < 10000。同时尽可能地区分builtin、initdb、user的数据。
  • 元数据校验地图(VerifyMap): 规则与其预期输出的集合。
  • 报告(Report): 规则执行结果与预期结果的对比分析结论所形成的汇总。
-bash: gs_basebackup: command not found异常表示系统无法找到名为gs_basebackup的命令。这可能是因为该命令没有正确安装或者没有将其路径添加到系统的环境变量中。 要解决这个问题,你可以尝试以下几种方法: 1. 确认命令是否正确安装:首先,你需要确认gs_basebackup命令是否已经正确安装在你的系统中。你可以通过运行以下命令来检查: ```shell which gs_basebackup ``` 如果命令已经正确安装,它会返回命令的路径。如果没有返回任何结果,那么命令可能没有正确安装。 2. 检查环境变量:如果命令已经正确安装,但仍然无法找到,那么可能是因为系统的环境变量没有包含该命令的路径。你可以通过运行以下命令来检查环境变量: ```shell echo $PATH ``` 确保命令的路径已经包含在输出结果中。如果没有包含,你可以通过编辑你的bash配置文件(例如~/.bashrc或~/.bash_profile)并将命令的路径添加到PATH变量中来解决这个问题。例如: ```shell export PATH=$PATH:/path/to/gs_basebackup ``` 保存文件后,重新启动终端或运行以下命令使更改生效: ```shell source ~/.bashrc ``` 3. 检查命令是否可执行:最后,确保命令具有执行权限。你可以使用以下命令为命令添加执行权限: ```shell chmod +x /path/to/gs_basebackup ``` 然后再次尝试运行命令。 如果你仍然遇到问题,请提供更多关于你的系统和安装过程的信息,以便我们能够更好地帮助你解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值