写点什么

GaussDB T 分布式集群数据库每日维护必做必知

  • 2020-02-26
  • 本文字数:3118 字

    阅读完需:约 10 分钟

GaussDB T分布式集群数据库每日维护必做必知

本文由 dbaplus 社群授权转载。


《GaussDB T分布式集群这样安装部署不踩坑》,我们开始 GaussDB T 每日维护必做的事情。新的一天从开启主机开始,把虚拟机打开后发现上次安装的数据库没有自启动,所有节点启动的相关进程仅 cm_agent 进程:



这个时候我们先要拉起 ETCD:



OK,ETCD 成功拉起,接下来我们拉起整个集群:



集群拉起成功。


后面我们会将 ETCD 及集群自动拉起加入自启动,下面开始回到开篇的主题,每日维护开始。

一、集群状态检查

第一件事当然是检查集群各节点资源状态情况啦,至于看啥,我们用一张图来了解要点:




1、查看各节点资源是否是 ON LINE,其中包括 CM,CN,DN,ETCD 等,如果不是,需进一步核查原因了。


2、查看各节点对比昨日是否涉及节点切换情况,查看节点对应的 HOST 即可。如有则异常,需进一步核查原因了。

二、检查主机资源使用情况(所有主机)

1、主机目录使用率


df -h



2、CPU、内存及 IO 使用情况


这个检查的方法很多,这里使用了 vmstat,iostat,free,请重点关注以下红框标示的位置。



释:id 列代表的是 CPU 空闲率,free 列代表的是空闲内存,单位为页。



释:rMB/s 及 wMB/s 的是每秒读写情况,%util 在统计时间内所有处理 IO 时间,除以总共统计时间。例如,如果统计间隔 1 秒,该设备有 0.8 秒在处理 IO,而 0.2 秒闲置,那么该设备的 %util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。如果该参数是 100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使 %util 是 100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。



释:重点关注 free 及 available。


注:本节资源检查需与基线进行比对,如出入过大需进一步核查原因。

三、核查各节点数据库状态



确认 CN 及 DN 都处于 open 状态,注意备 DN 是 mount 状态。

四、表空间使用率检查

当在进行使用率检查之前,先说下表空间如何创建。


1、连接到 cn


zsql omm/gaussdb_123@127.0.0.1:8000 –q
复制代码



2、创建表空间


CREATE TABLESPACE tbs_test1 DATAFILE 'tbs_test1' size 100m SHARD;
复制代码



注:创建表空间时,使用 SHARD 关键字则支持将创建表空间语句自动下发至 CN 和 DN 节点且仅支持使用相对路径;若不使用 SHARD 关键字,则可使用绝对路径,同时需要在所有 CN 和主 DN 节点上都创建这个表空间后,才能正常在这个表空间下创建表。


3、检查数据文件,我们会发现在 CN 及 DN 都创建了对应的表空间及数据文件





注:连接主 DN 使用如下命令连接。


zsql / as sysdba -D /gaussdb/data/data_dn1 -q
复制代码


4、检查表空间的使用率


set line 300set pages 2000set timing offcol tablespace_name for a25col sum_GB for a15col free_GB for a15col use_precent for a15select b.tablespace_name,       round(sum(b.bytes) / 1024 / 1024 / 1024, 0) sum_GB,       round(sum(nvl(a.bytes, 0)) / 1024 / 1024 / 1024, 0) free_GB,       round((sum(b.bytes) - sum(nvl(a.bytes, 0))) / sum(b.bytes), 4) * 100 use_precent,       count(*)  from (select tablespace_name, file_id, sum(bytes) bytes          from adm_free_space         group by tablespace_name, file_id) a,       adm_data_files b where a.file_id(+) = b.file_id   and a.tablespace_name(+) = b.tablespace_name group by b.tablespace_namehaving round((sum(b.bytes) - sum(nvl(a.bytes, 0))) / sum(b.bytes), 4) * 100 >= 0 order by 4 desc;
复制代码



注:表空间使用率检查需在所有的主 CN 及主 DN 运行。

五、异常等待事件检查

col event form a38select event,count(*) from DV_SESSIONS where LOCK_WAIT = 'Y' group by event order by 2 desc;
复制代码



注:在所有主 DN 核查是否存在异常等待事件。


如图所示存在 TX 等待,我们可以通过以下 SQL 查看下锁源在干啥:


select SID,SERIAL#,USERNAME,CURR_SCHEMA,CLIENT_IP,CLIENT_PORT,OSUSER,MACHINE,PROGRAM,STATUS,LOCK_WAIT,EVENT,MODULE,CURRENT_SQL from dv_sessionswhere sid in (select WAIT_SID from v$session where event like '%TX%');
复制代码


如发现会话状态是非活动且是应用程序连上来的,可以联系应用核查是否正常,如可以 kill 我们可以运行 ALTER SYSTEM KILL SESSION ‘SID,SERIAL#’; 杀会话。


六、日志检查

在数据库运行过程中,会产生大量用于数据库日常维护的运行、审计、 DEBUG、告警等日志。在数据库发生故障时,可以使用这些日志进行问题定位和数据库恢复的操作。


下面就常用的日志类型做下简介:


1、运行日志


打印 GaussDB T 数据库运行信息,如果数据库出现故障,请查看 zengine.rlog。


日志目录:默认为“ $GSDB_DATA/log/run/zengine.rlog”或参数 log_home 对应的路径 run 子目录下,如果想修改其路径重启生效。


CN 节点:



DN 节点:



查看运行日志如下:



2、慢查询日志


打印 GaussDB 100 数据库执行时间超过阈值(由 LONGSQL_TIMEOUT 参数控制)的 SQL 信息到 zengine.lsql 日志文件中。


日志目录:默认为“ $GSDB_DATA/log/longsql/zengine.lsql”。


3、告警日志


打印 GaussDB 100 数据库运行告警信息。如需了解告警信息,请查看 zenith_alarm.log。


日志目录:“ $GSDB_DATA/log/zenith_alarm.log”。


4、操作日志


记录用户通过 ZSQL 工具对 GaussDB 100 数据库的操作信息。如果需要了解操作记录,请查看 zsql.olog。


日志目录:“ $GSDB_DATA/log/oper/zsql.olog”。


5、TRACE 日志


记录数据库会话死锁的信息。如需查看会话死锁信息,请查看 zengine_00003_xxxxxx.trc。


日志目录:“ $GSDB_DATA/trc/zengine_00003_xxxxxx.trc”。


常见错误码


GS-00716:Found %s deadlock in session (%u)
复制代码


错误原因:不同会话中并发交叉操作了同一批数据,造成死锁。


解决办法:


  • 查看 trace log 或者 run log (根据数据库版本不同,死锁日志位置不同);

  • 根据日志里记录的具体信息,包括死锁类型,SQL 语句等,排查业务语句。


GS-00715:The snapshot was outdated.
复制代码


错误原因:快照过旧。


解决办法:


  • 重新运行 SQL;

  • 将长时间运行的高耗 SQL 优化或拆分。


GS-00713:No free undo page
复制代码


错误原因:UNDO 表空间不足。


解决办法:


  • 增大 UNDO 表空间大小;

  • 将大事务 kill 释放 UNDO。


GS-00305:%s timeout
复制代码


错误原因:网络 api 超时。


解决办法:


  • 请确保主机网络正常。


GS-00774:Failover in progress, can not be connected
复制代码


错误原因:备机正在做 failover 时,主机的日志发送线程来连接备机。


解决办法:


  • 将主机停止掉,待备机升主后,将原主降备。


GS-00839:Flush redo file:%s, offset:%u, size:%lu failed
复制代码


错误原因:写 redo 日志文件的时候失败了,一般是文件系统或者磁盘有问题。


解决办法:


  • 检查操作系统或磁盘。


GaussDB T 数据库维护的工作很多,除了以上每日必做的事情之外,还有会话连接失败、缓冲区刷盘失败、CN/DN 节点状态异常、CM Server 节点状态异常、主备 DN 节点日志同步延迟过大等等问题核查。其中很多我们可以通过使用 Database Manager 分析处理告警或者使用自己开发脚本实现告警。


维护的目的是让系统更稳定,维护工作越简单,维护人员就越不容易出错。尽可能的把维护工作脚本化、工具化、自动化,将人员解放出来做更有价值的事情是我们的目标。路漫漫其修远兮,一起加油吧!


作者介绍


魏斌,新炬网络资深数据库专家,长期服务于运营商、金融、制造业及政企客户。从传统商业 DB 到开源分布式,均有涉猎及独到见解。职业以来扎根客户一线,对于紧急故障处置及性能问题优化具有丰富经验,尤善于灾备、多中心建设及异构数据迁移。


原文链接


https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=2650785531&idx=1&sn=ba316936bb1b40681a5bf0caf9745fb2&chksm=f3f9736ec48efa78efe0cdf0b4f6cc26bae4bf98e163beb46b8c1e773d1aee0fca8fad47cfc5&scene=27#wechat_redirect


2020-02-26 09:361451

评论 1 条评论

发布
用户头像
传说中的 国产 高斯(搞死)DB么
2020-02-26 11:40
回复
没有更多了
发现更多内容

打破固有思维(十八)

Changing Lin

5月日更

一种基于实时分位数计算的系统及方法

百度Geek说

云计算 大前端 云服务

dubbo的前世今生

捉虫大师

dubbo

书单 | 职场办公类私藏好书,轻松Get职场必备技能

博文视点Broadview

iOS 面试策略之系统框架-设计模式

iOSer

ios 并发编程 tableView

麦肯锡最新报告 | 开发者速率成为企业增长助推剂

LigaAI

SaaS

树莓派上的 K8S 集群挂了,怎么办?

百度开发者中心

百度 技术 经验分享

Mybatis-Plus的应用场景及注入SQL原理分析

vivo互联网技术

源码分析 mybatis

面试37次,16个offer上岸,总结了一些面试心得

北游学Java

面试 offer

云小课 | 华为云KYON之L2CG

华为云开发者联盟

虚拟私有云 华为云 大二层网络 KYON企业级云网络 L2CG

软硬件融合新时代——让软件够灵活,硬件够高效,鱼和熊掌可兼得

博文视点Broadview

李开复、张亚勤、吴恩达…国际大咖给你讲解AI知识

博文视点Broadview

一颗CPU与病魔赛跑

E科讯

云智慧发布《智能业务运维》2021年刊 邀您共览数字化运维全景象

云智慧AIOps社区

AIOPS 智能运维

超详细的JQuery的 DOM操作,一篇就足够!

华为云开发者联盟

html 大前端 DOM 函数 JQuery框架

Docker挂了,数据如何找回

运维研习社

Docker 运维 数据恢复 5月日更

网页端IM通信技术快速入门:短轮询、长轮询、SSE、WebSocket

JackJiang

websocket 消息推送 即时通讯 IM

深度分享|中小银行如何实现数字化转型,建设智能营销新体系?

索信达控股

大数据 数字化转型 金融 银行 营销数字化

毕业设计So Easy:基于Java语言西餐厅点餐系统

不脱发的程序猿

Java 开源 Java语言西餐厅点餐系统 毕业设计

强化学习落地:竞态场景下基于锁机制的闲置端口查用

行者AI

强化学习

阿里的互联网三高架构是真的牛!腾讯百度根本模仿不来

Java架构师迁哥

做开发,这几种锁机制你不得不了解一下

华为云开发者联盟

读写锁 自旋锁 互斥锁 优先锁

当当购书优惠码又可以限时抢啦(热卖新书等你来)

博文视点Broadview

☕【JVM 技术之旅】带你重塑对类加载机制的认识

洛神灬殇

JVM Java虚拟机 类加载器 原理分析 5月日更

ASP.NET Core整合Zipkin链路跟踪

yi念之间

Hive对分区分桶表的操作

五分钟学大数据

大数据 hive 5月日更

IDC数据中心介绍

大数据技术指南

数据中心 5月日更

架构是什么?空中楼阁?不切实际?

Java架构师迁哥

Java程序员想要拿到50W以上年薪,哪个技术是必备的?

Java架构师迁哥

联邦学习在视觉领域的应用,揭秘AI人工智能创新应用奖获奖案例

博文视点Broadview

如何快速构建嵌入式全栈知识体系?

博文视点Broadview

GaussDB T分布式集群数据库每日维护必做必知_数据库_dbaplus社群_InfoQ精选文章