OceanBase中没有像ORACLE或MySQL那样独立的参数文件,因此在举行数据库迁徙的这种场景下,怎样保持新老数据库的参数的一致成了OceanBase中的一个问题。这个问题实在也可以转化为怎样查询OceanBase数据库中修改过的参数,我们必要找到那些和默认值不一致的参数,并以此在新数据库环境中同步修改。
一. OCP查询
在OCP集群和租户界面的参数管理功能下,可以查看“参数列表”和“修改汗青”。但是这里“修改汗青”只能查询通过OCP平台修改过的参数,假如是通过下令行修改的则无法查询,而且假如OCP重装后这里的“修改汗青”也会被清空。因此,通过OCP查询参数的修改汗青不能包管获取全部修改过的参数。
二. obdiag工具
2.1 obdiag集群参数分析
obdiag是OB官方推出的黑屏诊断工具,obdiag有个参数分析功能,可以一键分析OceanBase集群参数和默认值的差异。分析集群参数时,起首必要使用集群参数收集功能一键收集集群参数信息,然后用生成的csv文件举行参数比对。- #集群参数收集
- obdiag gather parameter
- #集群参数比对
- obdiag analyze parameter default --file
复制代码 在OceanBase3.2.3版本使用参数分析功能时,报了以下错误。这是由于323版本不存在oceanbase.GV$OB_PARAMETERS试图,所以这个功能至少得4版本以后的OB才可以用。
在OceanBase4.2.1举行参数比对时,发现所有参数都和默认值相同,这明显是不符合实际的。由于这里是用采集生成的csv文件作为默认值文件,所以自然不能找到非默认值参数。对于OB 4.2.2之后的版本,则无需添加--file选项,直接使用obdiag analyze parameter default功能即可找出非默认值参数。因此,obdiag的这个功能实在要在4.2.2版本后才气真正到达和默认值对比的效果。此外,我们也可以在集群迁徙的时候,在新集群收集一份参数的存档文件,通过对比新老集群的参数找出不一致的参数。
2.2 obdiag租户变量分析
obdiag analyze variable diff 可以一键分析 OceanBase 在线集群变量和之前相比是否变更了,有助于排查变量变更带来的问题。同样,分析变量时,起首也必要一键收集变量信息,然后使用收集变量信息生产的csv文件举行变量比对。- #变量收集
- obdiag gather variable
- #变量比对
- obdiag analyze variable diff --file=/tmp/gather_variables/ob_test2_stb_variables_20241015110704.csv
复制代码 同样obdiag变量分析功能实在也是和使用obdiag收集的变量存档文件举行比对,而不能直接找出非默认值参数。这样的话,就必要在集群搭建好的时候使用obdiag收集一份变量的存档文件举行变量比对。大概,在租户迁徙的时候,在新环境收集一份变量存档文件,然后用这份存档文件和老环境的变量举行比对,这样也能找出两边不一致的变量。
三、系统视图查询
oceanbase中提供了参数相干的数据字典视图,我们可以从这些视图中发现一些端倪。在3版本和4版本的OB中,形貌租户变量的视图分别是__all_virtual_sys_variable和cdb_ob_sys_variables,在这两个视图中有两列gmt_create和gmt_modified,代表着变量的创建和修改时间,通过比对这个时间,可以找到修改过的租户变量。- MySQL [oceanbase]> desc __all_virtual_sys_variable;
- +--------------+----------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +--------------+----------------+------+-----+---------+-------+
- | tenant_id | bigint(20) | NO | PRI | NULL | |
- | zone | varchar(128) | NO | PRI | NULL | |
- | name | varchar(128) | NO | PRI | | |
- | gmt_create | timestamp(6) | NO | | NULL | |
- | gmt_modified | timestamp(6) | NO | | NULL | |
- | data_type | bigint(20) | NO | | NULL | |
- | value | varchar(65536) | YES | | NULL | |
- | info | varchar(4096) | NO | | NULL | |
- | flags | bigint(20) | NO | | NULL | |
- | min_val | varchar(65536) | NO | | | |
- | max_val | varchar(65536) | NO | | | |
- +--------------+----------------+------+-----+---------+-------+
- 11 rows in set (0.00 sec)
- MySQL [oceanbase]> select min(gmt_create) from __all_virtual_sys_variable where tenant_id=1028;
- +----------------------------+
- | min(gmt_create) |
- +----------------------------+
- | 2024-08-30 14:48:19.243321 |
- +----------------------------+
- MySQL [oceanbase]> select * from __all_virtual_sys_variable where tenant_id=1028 and gmt_modified>'2024-08-30 14:48:19.243321';
- +-----------+------+------------------+----------------------------+----------------------------+-----------+------------+----------------------------------+-------+---------+---------+
- | tenant_id | zone | name | gmt_create | gmt_modified | data_type | value | info | flags | min_val | max_val |
- +-----------+------+------------------+----------------------------+----------------------------+-----------+------------+----------------------------------+-------+---------+---------+
- | 1028 | | ob_query_timeout | 2024-10-15 15:12:40.329644 | 2024-10-15 15:12:40.329644 | 5 | 1000000000 | Query timeout in microsecond(us) | 131 | | |
- +-----------+------+------------------+----------------------------+----------------------------+-----------+------------+----------------------------------+-------+---------+---------+
- 1 row in set (0.00 sec)
复制代码 对于集群参数,相干的数据字典视图分别是3版本的__all_virtual_tenant_parameter_stat和__all_virtual_sys_parameter_stat,以及4版本的gv$ob_parameters。在这几个数据字典视图中没有相干的信息可以找到曾经修改过的集群参数。- MySQL [oceanbase]> desc __all_virtual_sys_parameter_stat;
- +---------------+----------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +---------------+----------------+------+-----+---------+-------+
- | zone | varchar(128) | NO | | NULL | |
- | svr_type | varchar(16) | NO | | NULL | |
- | svr_ip | varchar(46) | NO | | NULL | |
- | svr_port | bigint(20) | NO | | NULL | |
- | name | varchar(128) | NO | | NULL | |
- | data_type | varchar(128) | YES | | NULL | |
- | value | varchar(65536) | NO | | NULL | |
- | value_strict | varchar(4096) | YES | | NULL | |
- | info | varchar(4096) | NO | | NULL | |
- | need_reboot | bigint(20) | NO | | NULL | |
- | section | varchar(128) | NO | | NULL | |
- | visible_level | varchar(64) | NO | | NULL | |
- | scope | varchar(64) | NO | | NULL | |
- | source | varchar(64) | NO | | NULL | |
- | edit_level | varchar(128) | NO | | NULL | |
- +---------------+----------------+------+-----+---------+-------+
- MySQL [oceanbase]> desc gv$ob_parameters;
- +------------+----------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +------------+----------------+------+-----+---------+-------+
- | SVR_IP | varchar(46) | NO | | NULL | |
- | SVR_PORT | bigint(20) | NO | | NULL | |
- | ZONE | varchar(128) | NO | | NULL | |
- | SCOPE | varchar(64) | NO | | NULL | |
- | TENANT_ID | bigint(20) | YES | | NULL | |
- | NAME | varchar(128) | NO | | NULL | |
- | DATA_TYPE | varchar(128) | YES | | NULL | |
- | VALUE | varchar(65536) | NO | | NULL | |
- | INFO | varchar(4096) | NO | | NULL | |
- | SECTION | varchar(128) | NO | | NULL | |
- | EDIT_LEVEL | varchar(128) | NO | | NULL | |
- +------------+----------------+------+-----+---------+-------+
复制代码 四、总结
本文总结了在OceanBase数据库中找出和默认值不一样的参数的三种方法。目前看来,通过obdiag工具在新部署的数据库环境收集参数信息生成存档文件,然后再通过obdiag工具比对参数存档文件和老数据库的参数,这种方法是最靠谱有用的。此外,通过变量数据字典视图也可以帮助我们找到那些曾经修改过的变量参数。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |