openGauss数据库pg_xlog爆满问题解决

这篇具有很好参考价值的文章主要介绍了openGauss数据库pg_xlog爆满问题解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题现象

最近有一个之前搭的环境登不上了,好久没用想拿来测试的时候发现启动不了。启动时报错:
[Errno 28] No space left on device
openGauss数据库pg_xlog爆满问题解决

query也不行了,提示没有空间了。
openGauss数据库pg_xlog爆满问题解决

查询磁盘使用情况 df -h ,果然100%
openGauss数据库pg_xlog爆满问题解决

这个环境当时安装的是主备,看了下备库的服务器,发现不知道啥时候已经被删库了,安装用户都不在了。

问题定位

进一步排查主库服务器,发现opt目录下的空间最可疑。

[root@opengauss1 /]# du  -lh --max-depth=1

根据经验直奔data/dn目录,果然就是这里 ,pg_xlog下面产生了过多日志文件。
openGauss数据库pg_xlog爆满问题解决

看了下文件个数,有1500多个。

[root@opengauss1 pg_xlog]# ls -l  |wc -l
1591

但是pg_xlog是WAL日志,是不能直接删除的。我们在另外空闲的空间下/tmp新建目录,再挪一部分xlog过去

[omm@opengauss1 ~]$ cd /tmp/
[omm@opengauss1 tmp]$ ll
total 0
-rw-r--r-- 1 root root  0 Mar 22 11:40 ck_monitor.lock
drwxr-x--- 2 root root 40 Sep 29 10:00 his-matrixagent_job
-rw-r--r-- 1 root root  0 Mar 22 11:40 monitor.lock
dr-xr-x--- 2 root root 40 May 27  2022 pub
drwx------ 3 root root 60 May  6  2022 systemd-private-ff4a118aad534bfe95b6b390fe984558-chronyd.service-Cy8Q8X
drwx------ 3 root root 60 May  6  2022 systemd-private-ff4a118aad534bfe95b6b390fe984558-systemd-logind.service-KrDeKX
[omm@opengauss1 tmp]$ mkdir xlog_mv_322

回到 pg_xlog目录 执行迁移

[omm@opengauss1 pg_xlog]$ ls -ltr | head -n 100 | awk '{print "mv "$9  " /tmp/xlog_mv_322/"}' | sh

再尝试重新启动数据库。因为我的备库已经完全废弃了,只能指定以主库模型重启 加 -M primary参数。

[omm@opengauss1 pg_xlog]$ gs_ctl  start -D /opt/huawei/install/data/dn/ -M primary

主库启动成功。登进去查看逻辑复制槽。

[omm@opengauss1 pg_xlog]$ gsql -d postgres -p 15400 -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:19 commit 0 last mr  )
NOTICE : The password has been expired, please change the password.
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
openGauss=# select * from pg_replication_slots;
slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn | dummy_standby
-----------+--------+-----------+--------+----------+--------+------+--------------+-------------+---------------
dn_6002   |        | physical  |      0 |          | f      |      |              | 1/4C6B8F70  | f
(1 row)

删除失效逻辑复制槽

openGauss=# select * from pg_drop_replication_slot('dn_6002');
WARNING:  replicationSlotMinLSN is InvalidXLogRecPtr!!!
WARNING:  replicationSlotMaxLSN is InvalidXLogRecPtr!!!
pg_drop_replication_slot
--------------------------
(1 row)
openGauss=#  select * from pg_replication_slots;
slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn | dummy_standby
-----------+--------+-----------+--------+----------+--------+------+--------------+-------------+---------------
(0 rows)

查看相关参数

openGauss=#  show wal_keep_segments;
wal_keep_segments
-------------------
16
(1 row)
openGauss=# show max_size_for_xlog_prune;
max_size_for_xlog_prune
-------------------------
2147483647kB
(1 row)
openGauss=# show enable_xlog_prune;
enable_xlog_prune
-------------------
on
(1 row)
openGauss=# show archive_mode;
archive_mode
--------------
off
(1 row)
openGauss=# \q

综合看下来, max_size_for_xlog_prune参数的问题,它表示如果有备机断连且xlog日志大小大于此阈值,则回收日志。但是,默认值 给 的 太大了2048G,但是我这个环境只有40G,磁盘撑爆了。

解决办法

知道了问题,那么解决方法就是修改max_size_for_xlog_prune为4G,多余的日志 让DB自动清理。
openGauss数据库pg_xlog爆满问题解决

[omm@opengauss1 pg_xlog]$ gs_guc reload -D /opt/huawei/install/data/dn/ -c "max_size_for_xlog_prune=4194304"

再去查看空间已经释放。
openGauss数据库pg_xlog爆满问题解决

问题解决,主库又能继续坚持工作了。

总结

当归档或流复制发生异常时,事务日志会不断生成,如果默认值没修改,可能会造成磁盘撑爆,直接导致DB挂掉还起不来。遇到pg_xlog爆满时,先备份一部分pg_xlog日志到其他地方,删掉较早时间的日志,等有一定磁盘空间后再尝试启动数据库,然后设置合适的参数值,最后修复问题。文章来源地址https://www.toymoban.com/news/detail-430953.html

到了这里,关于openGauss数据库pg_xlog爆满问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenGauss数据库 - 初识OpenGauss

    第1关:创建数据库  编程要求 在右侧命令行中连接 openGauss,并创建一个名为 mydb 的数据库。 连接数据库的用户名为:gaussdb,密码为:passwd123@123。 代码: 第2关:创建表 编程要求 在右侧命令行中操作,创建数据库 testdb,在 testdb 下创建表 t_emp,表结构如下: id INT,name VAR

    2024年02月09日
    浏览(35)
  • openGauss学习笔记-102 openGauss 数据库管理-管理数据库安全-客户端接入之查看数据库连接数

    102.1 背景信息 当用户连接数达到上限后,无法建立新的连接。因此,当数据库管理员发现某用户无法连接到数据库时,需要查看是否连接数达到了上限。控制数据库连接的主要以下几种选项。 全局的最大连接数:由运行参数max_connections指定。 某用户的连接数:在创建用户时

    2024年02月07日
    浏览(48)
  • openGauss学习笔记-09 openGauss 简单数据管理-创建数据库

    数据库安装完成后,默认生成名称为postgres的数据库。您需要自己创建一个新的数据库。 9.1 语法格式 创建数据库 查看数据库 使用“l”用于查看已经存在的数据库。 使用 “c + 数据库名” 进入已存在数据库。 修改数据库 删除数据库 9.2 参数说明 database_name 要创建、修改或

    2024年02月16日
    浏览(48)
  • pg数据库授权

    创建用户角色 此处说明,在pg库里面用户和角色的概念其实无区别 授权命令 授权参数说明 权限撤销 如果用户需要创建表的权限对该角色进行全部授权之后,发现建表的时候报错说什么当前用户是一个readonly的会话可以进行下面操作进行修改 参考连接:https://blog.csdn.net/eagl

    2024年02月11日
    浏览(35)
  • pg数据库安装

    pg数据库安装 下载对应的安装包 安装服务 使用安装包直接安装 rpm -ivh postgresql13-libs-13.1-3PGDG.rhel7.x86_64.rpm rpm -ivh postgresql13-13.1-3PGDG.rhel7.x86_64.rpm rpm -ivh postgresql13-server-13.1-3PGDG.rhel7.x86_64.rpm rpm -ivh postgresql13-contrib-13.1-3PGDG.rhel7.x86_64.rpm 配置用户数据存储目录日志目录 [root@rocketm

    2023年04月19日
    浏览(38)
  • openGauss学习笔记-60 openGauss 数据库管理-逻辑存储结构

    openGauss的数据库节点负责存储数据,其存储介质也是磁盘,本节主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如 图1 。 图 1 数据库逻辑结构图 说明: Tablespace,即表空间,是一个目录,可以存在多个,里面存储的是它所包含的数据

    2024年02月09日
    浏览(39)
  • openGauss学习笔记-224 openGauss性能调优-系统调优-数据库系统参数调优-数据库并发队列参数调优

    数据库提供两种手段进行并发队列的控制,全局并发队列和局部并发队列。 224.1 全局并发队列 全局并发队列采用GUC参数max_active_statements控制数据库主节点上运行并发执行的作业数量。采用全局并发队列机制将控制所有普通用户的执行作业,不区分复杂度,即执行语句都将作

    2024年02月22日
    浏览(37)
  • openGauss学习笔记-55 openGauss 高级特性-全密态数据库

    全密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获

    2024年02月10日
    浏览(36)
  • openGauss学习笔记-184 openGauss 数据库运维-升级-升级验证

    本章介绍升级完成后的验证操作。给出验证的用例和详细操作步骤。 184.1 验证项目的检查表 表 1 验证项目的检查表 序号 验证项目 检查标准 检查结果 1 版本查询 查询升级后版本是否正确 - 2 健康检查 使用gs_checkos工具完成操作系统状态检查。 - 3 数据库状态 使用gs_om工具完成

    2024年02月03日
    浏览(38)
  • openGauss学习笔记-74 openGauss 数据库管理-创建和管理视图

    74.1 背景信息 当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。 视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包