循序渐进丨MogDB 百问百答(第7期)

61b43578e9d940bddf7f289d50530596.png

为了能够帮助大家循序渐进地了解MogDB、认识其特性和能力、熟悉它的使用,我们特推出「MogDB百问百答」连载,每期放出20个FAQ,希望能对您有参考价值!(感谢问题整理与回答人员:高云龙、彭冲、黄超、杨有田)

 往期回顾 

第一期 FAQ 1~20

第二期 FAQ 21~40

第三期 FAQ 41~60

第四期 FAQ 61~80

第五期 FAQ 81~100

第六期 FAQ 101~120

  Q 121  

MogDB 支持数据库定时任务么?

MogDB 提供了PKG_SERVICE接口来实现定时任务管理:

PKG_SERVICE.JOB_SUBMIT实现提交任务;

PKG_SERVICE.JOB_UPDATE实现修改任务属性;

PKG_SERVICE.JOB_FINISH实现是否禁用任务;

PKG_SERVICE.JOB_CANCEL实现删除任务。

  Q 122  

定时任务的接口如何使用,有没有参考用例?

可以参考官方网站:

https://docs.mogdb.io/zh/mogdb/v3.0/pkg-service#接口定义和使用示例,这里不仅有定时任务使用示例,还有各个接口参数的使用说明,可以知其然知其所以然,即学即用。

  Q 123  

MogDB 的定时任务和 PostgreSQL 的定时任务有哪些区别?

PostgreSQL 的定时任务是需要通过pg_cron插件来实现的,PostgreSQL 的定时任务更像操作系统的crontab,但对定时任务的维护方面还是比较像的,两者之间的具体差异,可以参考:https://www.modb.pro/db/540333

  Q 124  

MogDB 支持审计日志么?

支持,可以通过audit_enabled参数来控制是否开启数据库审计线程,默认是开启的,此参数的修改是可以动态加载生效,审计相关的参数有点多,建议在使用之前详细了解各个参数的含义。

  Q 125  

哪些系统视图与审计信息相关?

GS_AUDITING:显示对数据库相关操作的所有审计信息;

GS_AUDITING_ACCESS:显示对数据库DML相关操作的所有审计信息;

GS_AUDITING_PRIVILEGE:显示对数据库DDL相关操作的所有审计信息;

注意:需要有系统管理员或安全策略管理员权限才可以访问这些视图。

  Q 126  

审计记录存储的位置有哪些?如何清理审计日志呢?

常用的记录审计内容的方式有两种: 记录到数据库的表中、记录到OS文件中。MogDB 采用记录到OS文件的方式来保存审计结果,保证审计结果的可靠性。清理审计日志有2种方式:

1、通过数据库参数(时间/文件大小)来自动删除审计日志;

2、可以使用审计接口命令pg_delete_audit进行手动删除,例如:

SELECT pg_delete_audit('2012-09-20 00:00:00','2012-09-21 23:59:59')

  Q 127  

gs_om 使用的XML配置文件丢失了怎么办?

如果是使用PTK安装的数据库,可以借助PTK的配置文件来生成XML,使用命令是:

ptk gen-om-xml -f CONFIG_FILE [flags]

  Q 128  

如果集群静态配置文件损坏怎么办?

可以重新生成静态文件并发送到所有节点:

gs_om -t generateconf -X /opt/software/openGauss/clusterconfig.xml --distribute

  Q 129  

已经运行的数据库节点如何修改IP或hostname,集群不可用怎么办?

可以使用ptk distribute -f config.yaml 方式重新生成集群内的静态文件cluster_static_config;也可以使用gs_om -t generateconf --old-values=old --new-values=new --distribute 方式来修改

  Q 130  

如何从控制会话的连接超时?

数据库提供了一个参数session_timeout来控制断开多长时间不进行任何操作的会话,默认是10min,但是在最佳实践中常常把这个参数关闭,因为不同的业务系统对会话连接超时的控制不一样,所以最好由业务程序来控制。

  Q 131  

如何判断一个会话连接了多长时间?

在视图pg_stat_activity中有个backend_start字段,这个字段记录的是会话建立连接的时间,可以通过now() - backend_start 的方式来计算会话存活了多长时间。

  Q 132  

如何断开指定会话?

数据库提供了两个函数来断开指定的会话,分别是pg_cancel_backend()和pg_terminate_backend(),其中pg_terminate_backend()是强制断开会话,常用来处理hang死的SQL会话。

  Q 133  

数据库会不会发生脑裂?

单从数据库角度来说,不会发生脑裂,因为数据库本身不会发生角色切换,数据库角色切换需要手工执行切换命令或者借助高可用切换工具MogHA或CM。

  Q 134  

脑裂了会不会发生数据丢失?

数据会不会丢失与我们设置同步级别有关系,如果设置了强同步,当主库宕机时,业务数据已经同步到同步备库,那这时把同步备切换为主库,是不会有数据丢失的,如果这时原主库即使重新启动,只要没有新的业务数据写入,也是安全的。

  Q 135  

发生脑裂后怎么恢复集群?

当原主库重新启动后会变成单主,并不会自动加入集群,这时需要手工执行gs_ctl build的命令可以将原主以standby的角色重新加入集群。

  Q 136  

直接访问数据库是没问题的,但应用程序却无法访问数据库是什么原因?

可以通过gsql TCP/IP的方式访问数据库,使用mogeaver客户端访问数据库也是正常的,这说明数据库本身是没有问题的,程序连接失败的常见原因是程序接口不支持或没有修改加密方式,默认使用的是md5。常见的解决方法是修改pg_hba.conf白名单的访问方式,或调整业务接口的加密方式。

  Q 137  

业务访问数据库数据,第一次查询能查到,第二次查询消失,过一会又可以查到,是什么问题?

数据库默认是读已提交的隔离级别,一旦数据写入成功且事务提交,就不会出现业务查不到的情况(排除更新删除操作),这种闪丢的现象,更多的是需要检查应用程序的连接池配置,是否设置了schema,是否连接被多业务重用,是否没有及时提交事务,是否访问到错误的schema下的表。

  Q 138  

业务访问从 MySQL 迁移过来的数据,发现生僻字是乱码,怎么处理?

MogDB 默认使用的UTF8的字符集是可以支持生僻字的,所以关于生僻字的乱码问题更多的需要在 MySQL 判断一下,MySQL 是可以支持字段级别的字符集修改的,所以数据库字符集可以与字段字符集不一致,需要查看具体字段的字符集来判断源端是不是乱码。

  Q 139  

一个表中有id,user,ctime 三个字段,我使用id查询是有数据返回的,但用user却没有,这是什么原因?

在数据库中,user是保留关键字,可以通过添加双引号来查询,但在创建数据库对象时应避免使用关键字作为对象名,关键字列表可以通过pg_get_keywords()函数获取。

  Q 140  

统计信息不准怎么办?

统计信息存储在系统表PG_STATISTIC中。执行计划生成器需要使用表的统计信息,以生成最有效的查询执行计划,提高查询性能。因此统计信息不准时候,建议手动执行ANALYZE语句生成最新的表统计信息。

57a47db3d3561a0d6134fe17e5000d83.jpeg

关注我们

回复关键词“MogDB

了解有关 MogDB 产品的更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值