写点什么

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

评论 1 条评论

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

百度智能云加速「低代码+大模型」融合,爱速搭位居 2023 年 IDC 低代码/无代码领导者象限

Baidu AICLOUD

低代码平台 大模型 爱速搭 AIGC 企业级开发

Flink 简述

木南曌

flink 实时计算

Flink 流处理框架核心性能

木南曌

flink 实时计算

企业即时通讯工具,企业内部即时通讯系统推荐

BeeWorks

企业需要企业IM(即时通讯)具备系统集成功能吗?

BeeWorks

Kyligence 亮相 Gartner 数据与分析峰会,生成式 AI 落地赋能业务

Kyligence

区块链项目包装攻略,区块链项目包装运营

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

赛博威获颁“华南区数字营销优秀案例”奖及“广东省名优高新技术产品”证书,领先的数字营销能力获双重认可!

赛博威科技

Flink 数据目录体系:深入理解 Catalog、Database 及 Table 概念

木南曌

flink 实时计算

一文详解前端发展趋势

不在线第一只蜗牛

前端 前端开发 前端框架

聚道云连接器助力航信费控与用友U8无缝对接,赋能供应链管理

聚道云软件连接器

案例分享

Python中的机器翻译技术与应用

技术冰糖葫芦

API API 接口

SpaceX 星舰发射「成功一半」;首位具身 AI 机器人面世丨 RTE 开发者日报 Vol.166

声网

华为云开年采购季云上云下一体化安全解决方案,打造高效、安全管理平台

轶天下事

安全的企业办公即时通讯软件怎么选择?

BeeWorks

2024 年 2 月公链行业研报

Footprint Analytics

比特币 公链 defi Layer 2

全栈开发与自动化测试高薪私教班,带你从0到1拿到高薪Offer

测吧(北京)科技有限公司

测试

从基础到代码实战,带你进阶正则表达式的全方位应用

快乐非自愿限量之名

php 正则表达式 代码

科技创新引领零售商品部降本增效的未来

第七在线

华为携手伙伴再出发,引领空间智能新潮流,创造无限可能

HarmonyOS开发者

云计算与低代码:重塑软件开发的新范式

快乐非自愿限量之名

云计算 低代码

1688API接口推荐:1688按图搜索拍立淘数据接口

tbapi

1688 1688API接口 1688商品数据接口 阿里巴巴商品列表数据

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