写点什么

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:361320

评论 1 条评论

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

华为云零代码新手教学-体验通过Astro Zero快速搭建微信小程序

华为云PaaS服务小智

开发者 低代码 华为云

软件测试/测试开发丨Python 常用第三方库 urllib3

测试人

Python 程序员 软件测试 测试开发 urllib

JVM关闭前做点什么

FunTester

带你快速上手HetuEngine

华为云开发者联盟

大数据 后端 华为云 华为云开发者联盟 企业号 8 月 PK 榜

跨国视频传输速度太慢?那是因为没有好的跨国文件传输工具

镭速

跨国传输大文件 跨国传输

Java应用堆外内存泄露问题排查 | 京东云技术团队

京东科技开发者

Java 内存泄露 堆外内存 企业号 8 月 PK 榜

糟了糟了,总部被SD画完都Q了,这篇深入浅出贴助你早日实现Stable Diffusion自由 | 京东云技术团队

京东科技开发者

AI绘画 Stable Diffusion 企业号 8 月 PK 榜

苹果mac版 Photoshop 2023 v25.0beta「ps」

胖墩儿不胖y

ps 2023 PS 2023破解 ps ai beta

成本翻倍,部署复杂?那是你用错了kubernetes!

鼎道智联

Kubernetes CI/CD

文心一言 VS 讯飞星火 VS chatgpt (77)-- 算法导论7.3 2题

福大大架构师每日一题

福大大架构师每日一题

什么文件传输协议才能保障跨国文件传输安全又稳定

镭速

文件传输协议 跨国文件传输

在 React 中获取数据的6种方法

互联网工科生

JavaScript React Promise

从 1 杯咖啡到 1 首歌的时间,炎凰数据如何实现 Pipeline 执行提速 6 倍?

极狐GitLab

DevOps gitlab cicd pipeline 炎凰数据

Tampermonkey for Mac(油猴Safari浏览器插件) 4.17.6162 中文版

mac

油猴 苹果mac Windows软件 Tampermonkey插件

使用NineData实现数据量亿级别MySQL大表迁移

NineData

数据库 NineData MySQL大表迁移 迁移方案 迁移复制

Parallels Desktop 18 中文激活-Pd 18密钥

mac大玩家j

医疗机构过等保选择哪款堡垒机好?为什么?

行云管家

网络安全 等保 等级保护 IT运维 医疗机构

极光笔记 | 如何为您的业务开发和训练一个AI-BOT

极光JIGUANG

人工智能 AI技术 AI工具

嵌入式开发场景下的代码管理方案(上)

极狐GitLab

git svn gitlab 嵌入式 源代码管理

聊聊自动化测试的分层实践

老张

自动化测试

腾讯云原生数据库TDSQL-C Serverless架构全新升级,助力业务存储成本降低80%

Geek_2d6073

【墨菲安全实验室】jeecg-boot/积木报表基于SSTI的任意代码执行漏洞

墨菲安全

漏洞 jeecg-boot MPS-4hzd-mb73

【墨菲安全实验室】企业微信私有化2.5-2.6.93版本后台API未授权访问漏洞

墨菲安全

网络安全 安全 企业微信 漏洞分析

京东门详一码多端探索与实践 | 京东云技术团队

京东科技开发者

小程序 taro 企业号 8 月 PK 榜 一码多端

搭载KaihongOS的工业平板、机器人、无人机等产品通过3.2版本兼容性测评,持续繁荣OpenHarmony生态

OpenHarmony开发者

OpenHarmony

攀枝花是哪个省的?当地有等级保护测评机构吗?

行云管家

等保 等级保护 等保测评 攀枝花

StoneData 2.0 正式上线阿里云市场,高性能、低成本一站式实时数仓,满足用户全场景分析需求

StoneDB

MySQL 数据库 HTAP StoneDB

解锁数据潜力:信息抽取、数据增强与UIE的完美融合

汀丶人工智能

人工智能 自然语言处理 信息抽取

智能仓储管理系统(自动化仓库管理解决方案)

万界星空科技

MES系统 仓储执行系统 WMS仓库管理

IPQ4019-IPQ4029-IPQ5018-IPQ6010-support 802.11KVR-Fast Roaming-The Future of Seamless Connectivity

wifi6-yiyi

wifi5

TDengine 全新打造数据接入功能,让 MQTT 无缝数据接入变得很简单

TDengine

时序数据库 mqtt #TDengine

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