1、错误信息

WARNING: database “postgres” must be vacuumed within 3330803 transactions

最常见的方法是通过此消息,警告您正在进行事务处理:

WARNING: database “postgres” must be vacuumed within XXX transactions. HINT: To avoid a database shutdown, execute a database-wide VACUUM in that database. You might also need to commit or roll back old prepared transactions.

或者更糟糕的是,以下消息表明您已经完成了 transaction wraparound,并且PostgreSQL正在尝试防止数据丢失:

ERROR: database is not accepting commands to avoid wraparound data loss in database “template0” HINT: Stop the postmaster and use a standalone backend to vacuum that database. You might also need to commit or roll back old prepared transactions.

2、处理方法:

在适当的数据库上执行建议的VACUUM; 这里我们使用默认数据库postgres,因此用适当的数据库名称替换该名称。

vacuumdb postgres

如果您收到上面提到的错误,并且数据库不再接受  命令
以下是在单用户模式下运行真空的步骤; 请注意,--single必须是命令行上的第一个命令:

# su - postgres /usr/pgsql-11/bin/postgres --single -D /var/lib/pgsql/11/data/ postgres PostgreSQL stand-alone backend 11.3 backend> vacuum freeze;

3、原理

PG的版本号是uint32的,是重复使用的,所以每隔大约20亿个事务后,必须要冻结,否则记录会变成未来的,对当前事务”不可见”。
同一个数据库中,存在的最旧和最新两个事务之间的年龄最多是2^31,即20亿

当表的年龄大于autovacuum_freeze_max_age时(默认是2亿),autovacuum进程会自动对表进行freeze。

–查询库xid

SELECT datname, age(datfrozenxid) FROM pg_database;

或者:select max(age(datfrozenxid)) from pg_database;

— 来查询每个表的xid使用程度

SELECT c.oid::regclass as table_name, greatest(age(c.relfrozenxid),age(t.relfrozenxid)) as age FROM pg_class c LEFT JOIN pg_class t ON c.reltoastrelid = t.oid WHERE c.relkind IN (‘r’, ‘m’) order by age desc;

这查询按照最老的XID排序,查看大于1G而且是排名前20的表。

SELECT relname, age(relfrozenxid) as xid_age, pg_size_pretty(pg_table_size(oid)) as table_size FROM pg_class WHERE relkind = 'r' and pg_table_size(oid) > 1073741824 ORDER BY age(relfrozenxid) DESC LIMIT 20;

建议使用vacuum freeze [ table_name ] 来对指定的表进行xid 冻结清理。

执行vacuum freeze pg_database 。其他table 根据需要freeze

PostgreSQL维护年龄的处理的更多相关文章

  1. PostgreSQL中的索引(一)

    引言 这一系列文章主要关注PostgreSQL中的索引. 可以从不同的角度考虑任何主题.我们将讨论那些使用DMBS的应用开发人员感兴趣的事项:有哪些可用的索引:为什么会有这么多不同的索引:以及如何使用 ...

  2. 写给小白看的Mysql事务

    1 为什么需要事务 在网上的很多资料里,其实没有很好的解释为什么我们需要事务.其实我们去学习一个东西之前,还是应该了解清楚这个东西为什么有用,硬生生的去记住事务的ACID特性.各种隔离级别个人认为没有 ...

  3. linux系统服务名称

    服务列表(按字母顺序排列) 服务名 必需(是/否) 用途描述 acon 否 语言支持 acpi 否 电源管理 acpid 否 监听精灵进程 adsl 否 内部ADSL开关控制 alsa 否 高级Lin ...

  4. LINUX常见服务列表

    服务名        必需(是/否)用途描述        注解 acon              否       语言支持        特别支持左手书写语言:阿拉伯语,波斯语和希伯莱语 acpi ...

  5. BUAA_OO_第三单元

    一.JML初探 ​ JML(Java Modeling Language)作为一种形式化语言,可以约束Java代码中类和方法的状态和行为形成规格,通过将一系列具体代码实现抽象成明确的行为接口,可以形成 ...

  6. PostgreSQL、Greenplum 日常监控 和 维护任务

    背景 Greenplum的日常监控点.评判标准,日常维护任务. 展示图层 由于一台主机可能跑多个实例,建议分层展示. 另外,即使是ON ECS虚拟机(一个虚拟机一个实例一对一的形态)的产品形态,实际上 ...

  7. MySQL,Oracle,PostgreSQL 数据库web维护客户端管理工具

    TreeDMS数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 等数据库进行维护管理操作. 功能包 ...

  8. PostgreSQL数据库web维护客户端工具软件

    TreeSoft数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 等数据库进行维护管理操作. 功能 ...

  9. MySQL,Oracle,PostgreSQL通过web方式管理维护, 提高开发及运维效率

    在开发及项目运维中,对数据库的操作大家目前都是使用客户端工具进行操作,例如MySQL的客户端工具navicat,Oracle的客户端工具 PL/SQL Developer, MSSQL的客户端工具查询 ...

  10. postgresql如何维护WAL日志/归档日志

    WAL日志介绍 wal全称是write ahead log,是postgresql中的online redo log,是为了保证数据库中数据的一致性和事务的完整性.而在PostgreSQL 7中引入的 ...

随机推荐

  1. TransmittableThreadLocal和@Async优雅的记录操作日志

    此文主要讲解: 如何实现操作记录 如何将TransmittableThreadLocal和@Async搭配使用 TransmittableThreadLocal阿里的一个开源组件,为了在使用线程池等会 ...

  2. Vue GET xxxx/sockjs-node/info?t=1573626343344 net::ERR_CONNECTION

    看了很多资料,都说是关闭热更新要么注释掉代码完美解决.我寻思这不就没有热更新功能了吗. 不妨试试检查下项目端口是否一致,然后查看下请求地址是否是本地地址.有可能是因为被shadowsocket代理了 ...

  3. flask博客项目之tinymce图片上传

    查看当前的博客发表情况 截图一张立马粘贴进来 点击发表,显示数据太长 不断撤退回到刚刚页面 删除大图,换成小图,上传方式 点击发表可以成功发表 数据库中查看,是把图片生成这种编码后字符串方式存储的了, ...

  4. docker registry(私库)搭建,使用,WEB可视化管理部署

    Docker Registry 是Docker官方一个镜像,可以用来储存和分发Docker镜像.目前比较流行的两个镜像私库是Docker Registry ,HarBor 其中HarBor最合适企业级 ...

  5. python循环结构之for循环

    在python中,for循环是应用非常广的循环语句,遍历字典.遍历列表等等... # for语句结构 for 遍历 in 序列: 执行语句 遍历字典 lipsticks = {"Chanel ...

  6. 官网下载CentOS系统镜像过程

    想学习CentOS系统,但是不知道镜像去哪里搞,随便去个第三方发现要么要注册,要么各种广告病毒,或者好不容易找到官网,不仅全英文,有些专业术语也不懂,本文说明官网下载自己想要的CentOS镜像整个流程 ...

  7. iOS Reveal 4 安装详解简单粗暴

    项目在测试的时候,然后拿了公司最低配置的ipod 来装我们的项目,但是呢,我们的项目居然掉帧很厉害,然后看了一下别人的app,居然不卡,然后就想去看看,别人是怎么做到的.然后呢?就走上了Reveal之 ...

  8. 使用pyenv对python进行版本控制—很好用

    相对于python自带的virtualenv来说,pyenv的使用要便利些,更不用说自带的插件python-virtualenv,创建虚拟环境就更为方便了,其实最让我心水的功能是创建的虚拟环境,进入设 ...

  9. Java 进阶P-4.8+P-4.9

    Object类 Object类的函数 toString() equals() Java Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object ...

  10. java介绍、环境搭建与Hello,World!

    java的诞生 C与C++ C语言 1972年贝尔实验室 操作系统.编译器等偏底层应用 指针和内存管理漏洞 C++ 1982年 面向对象 对C兼容 在图形领域.游戏领域等方面常用 java 桌面.手机 ...