- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
PostgreSQL 9.6。服务器最近从突然断电中恢复过来。
当在 pgadmin 中为表 Current 运行 select 命令时,它显示 invalid page in block 6455316 of relation base/16384/31656。然后我们尝试使用 vacum full "Current"
解决问题。但它显示 ERROR: uncommitted xmin 491792044 from before xid cutoff 492223244 needs to be frozen。
如果直接reindex表,显示:
WARNING: invalid page in block 6455316 of relation base/16384/31656; zeroing out page
WARNING: invalid page in block 6455317 of relation base/16384/31656; zeroing out page
WARNING: invalid page in block 6455318 of relation base/16384/31656; zeroing out page
WARNING: invalid page in block 6455319 of relation base/16384/31656; zeroing out page
WARNING: invalid page in block 6455320 of relation base/16384/31656; zeroing out page
WARNING: invalid page in block 6455321 of relation base/16384/31656; zeroing out page
我搜索了几天,但仍然没有运气。那么我该如何解决这个问题呢?
最佳答案
经过长时间的研究,我们可以针对我们的情况得出以下几点结论:
无论您的策略是什么,如果您在使用您的环境时进行转储,那么您的数据很可能会损坏(在您的备份中)。
在花费太多时间调试我们的备份后,我们发现将磁盘上的文件及时恢复到特定时刻确实涉及到表文件被设置为内部损坏的数据。
在我们的数据库中,大多数事情都在事务中运行。因此,这应该可以防止我们的表中出现损坏或损坏的数据。但是当在硬盘上复制表时,你的表中总是会有“未提交的数据”。当您还原这些表时,这些数据仍未提交,但事务不在您还原的系统上,因此处于不确定状态。
遍历表格出现问题。重新索引表解决了查看数据的问题,但由于某种原因,大部分数据不再在索引中(因此我们的表缩小了大小,丢失了大量数据)。
对于我们的案例,VACUUM (FULL) 没有产生任何有用的结果。
当我们使用另一个备份从(备份类型 3,见上文)恢复时,我们遇到了这个错误:
LOG: redo starts at 160/1D7E62C8
LOG: invalid record length at 160/1EBFD408: wanted 24, got 0
LOG: redo done at 160/1EBFD398
结果是 postgres 删除了我们的整个数据库。问题是我们硬盘上 postgres 文件夹中的基本文件夹包含数据库,但 pg_wal 文件夹不包含对它的正确引用。所以整体删除。
总结一下所有这些:未提交的数据是因为您在备份数据或服务器突然关闭时处于事务中间而写入的数据。重新索引您的表(或整个表)是您的最佳选择,但只有在先创建还原点后才能执行此类操作。
因此,首先为当前 postgresql 文件夹制作快照或 tar.gz 或 zip 文件。
service postgresql stop
cd /home
tar zcfv pg_backup.tar.gz /var/lib/postgresql/11/
service postgresql start
然后开始执行维护:
REINDEX DATABASE dbname;
如果你想在重建索引后释放死元组:
VACUUM FULL;
如果事情得到解决,那么你就没事了。如果不是,您可以尝试删除该表并从另一个较早的备份中重新导入。可能是明文备份。如果您没有这样的备份,请尝试使用 IDE 或您自己创建的脚本导出表数据,以从数据库中提取尽可能多的数据。然后创建表的结构导出,删除表(其中包含所有未提交的二进制(损坏的)数据),重新创建表并在其上运行导出的 SQL 查询以重新填充它。
关于postgresql - Postgres : uncommitted xmin from before xid cutoff needs to be frozen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57950050/
我有一个 Web 应用程序从 MQ 收集数据并保存在数据库中。使用 Spring JMS 监听器容器从 MQ 读取消息,并使用 hibernate 模板将这些消息保留在 XA Oracle 数据源上。
我找不到如何将 xid(交易 ID 类型)列设置为在表中唯一。它提示 btree 缺少类方法,我不知道如何解决它。 这是使用 PostgreSQL 9.0。 在这些论坛或互联网上找不到任何类似的问题。
我有以下 Python 2.7/PyGObject 3.0/PyGST 0.10 模块: from gi.repository import Gtk, Gdk, GdkPixbuf import pa
我想在我的 MySQL 5.6 服务器上执行 mysql-命令: mysql> XA ROLLBACK xid; 我尝试从此命令获取 xid: mysql> XA RECOVER; 结果如下: 我向社
我正在尝试在 Python 3.6 中使用 python-vlc 和 Gtk 创建一个 GUI 应用程序。但是当我尝试访问我的 GtkDrawingArea 小部件的 xid(将它与我的播放器屏幕绑定
我正在调查 Postgres 数据库上经常执行的查询,以帮助减少 XID 的使用。我可以使用 pg_stat_statements 获取执行的查询列表和调用次数,但它不包括因违反唯一约束等原因而失败的
有没有办法得到transactionid(xid)来自 SQL 查询,还是来自 plpgsql 函数体? PostgreSQL 9.3 版本 最佳答案 http://www.postgresql.or
我正在使用 Spring 3.0.5、Hibernate 3.6.7、Atomikos TransactionEssentials 3.7.0 和 MySQL 5.5 我最近遇到了一个问题,我的连接池
在启动我的 Spring 应用程序时收到上述警告。 WARN com.atomikos.recovery.xa.XaResourceRecoveryManager - Error while retr
如何从 xid(X 窗口标识符)获取 pid?如何获取给定 pid 的 xid 列表? (假设所有应用程序都以 DISPLAY=:0 运行,没有使用网络透明性) 我期待这样的事情: 挖掘/proc/$
我迷失在版本 3 中。在 python2+gdk2 中是: #!/usr/bin/env python2 import gtk gtk.gdk.window_process_all_updates()
有两次,当我使用 4x1080ti 完成模型训练时,服务器宕机了。为什么服务器崩溃了? 我收到系统日志并发现有关 Nvidia 驱动程序或 GPU 的问题。 系统日志:(和 nvidia-bug-re
我正在将 Linux 桌面应用程序移植到 Emberjs在 Electron应用程序以允许更自定义的用户界面。虽然大多数控件都非常适合 HTML 和 CSS,但我需要能够在 Electron 窗口内绘
这是我的用户模型 public class Users { private long id; private String userName; private String n
将 deviceToken 注册到 Xtify Manager 后,如何知道 xid 何时可用? 我正在这样做: - (BOOL)application:(UIApplication *)applic
简而言之:这是 How to get Gdk window from xid? 的重复,但在 Wayland 下。 在我将 Debian 从 Stretch 更新到 Buster 之前,类似以下的代码
PostgreSQL 9.6。服务器最近从突然断电中恢复过来。 当在 pgadmin 中为表 Current 运行 select 命令时,它显示 invalid page in block 64553
很抱歉,如果这个问题已经有人回答了,但我自己找不到。 我在 plgsql 中有这样一个函数: CREATE OR REPLACE FUNCTION collect_transaction_data(x
我正在编写一个 Gtk2 应用程序,除其他外,它需要让 Mplayer 将视频播放到 GtkDrawingArea 中。据我所知,如果可以找到 GtkDrawingArea 的 XID 并将其作为参数
XID 和 TX 列中的分数代表什么。这是 postgres 的 pgadmin 工具的屏幕截图。 我明白 TX 和 XID 分别表示交易和交易 ID,但是我不明白小数符号是什么意思。 最佳答案 虚拟
我是一名优秀的程序员,十分优秀!