pg_resetxlog 是做什么的?它是如何运作的?

2024-05-03

我查看了 postgres 文档,并给出了以下概要:

pg_resetxlog [-f] [-n] [-ooid ] [-x xid ] [-e xid_epoch ] [-m mxid ] [-O mxoff ] [-l timelineid,fileid,seg ] datadir

但文档中没有任何地方解释 datadir 是什么。 是不是%postgres-path%/9.0/data或者可能是%postgres-path%/9.0/data/pgxlog ?

另外,如果我想更改我的 xlog 目录,我可以简单地移动当前目录中的项目吗?pg_xlog目录并运行命令以指向另一个目录? (假设我当前的 pg_xlog 目录位于/data1/postgres/data/pg_xlog我希望日志所在的目录是:/data2/pg_xlog)

下面的命令可以实现我刚才描述的效果吗?

mv /data1/postgres/data/pg_xlog /data2/pg_xlog
pg_resetxlog /data2

pg_resetxlog http://www.postgresql.org/docs/current/static/app-pgresetxlog.html是在以下情况后让数据库再次运行的最后手段:

  • 您删除了不该删除的文件pg_xlog;

  • 您恢复的文件系统级备份省略了pg_xlog由于备份系统配置错误而导致的目录错误(这种情况发生的次数比您想象的要多,人们认为“它已登录该名称,因此它一定不重要;我会将其排除在备份之外”)。

  • 由于硬件故障或硬盘驱动器故障导致的文件系统损坏损坏了您的数据目录;或什至有可能

  • PostgreSQL bug 或操作系统 bug 损坏了预写日志(极其罕见)。

正如手册所说:

pg_resetxlog 清除预写日志(WAL)[...]。这 如果这些文件已损坏,有时需要使用此功能。它 仅应作为服务器无法启动时的最后手段 由于这样的腐败。

别跑pg_resetxlog除非你确切地知道自己在做什么以及为什么。如果您不确定,请询问pgsql-通用邮件列表 http://archives.postgresql.org/pgsql-general/ or on https://dba.stackexchange.com/ https://dba.stackexchange.com/.

pg_resetxlog可能会损坏您的数据库,正如文档警告的那样。如果你必须使用它,你应该REINDEX、转储数据库、重新初始化数据库并重新加载数据库。不要继续使用损坏的集群。根据文档:

运行此命令后,应该可以启动服务器, 但请记住,由于数据库可能包含不一致的数据 部分提交的交易。你应该立即抛弃你的 数据,运行 initdb,然后重新加载。重新加载后,检查是否有不一致的情况 并根据需要进行修复。

如果您只是想将预写日志目录移动到另一个位置,您应该:

  • 停止 PostgreSQL
  • Move pg_xlog
  • 添加从旧位置到新位置的符号链接
  • 启动 PostgreSQL

或者,作为文件说 http://www.postgresql.org/docs/current/static/wal-internals.html:

如果日志位于与日志不同的磁盘上,这是有利的。 主要数据库文件。这可以通过移动 pg_xlog 来实现 目录到另一个位置(当服务器关闭时, course)并从原始位置创建符号链接 主数据目录移动到新位置。

如果 PostgreSQL 无法启动,则表明您做错了什么。不使用pg_resetxlog要解决这个问题。撤消您的更改并找出您做错了什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pg_resetxlog 是做什么的?它是如何运作的? 的相关文章

  • 查询交叉表视图

    我在 PostgreSQL 中有一个表 如下所示 Item1 Item2 Item3 Item4 Value1 Value2 Value3 Value4 我想要一个查询 该查询将显示如下表 ItemHead ValueHead Item1
  • 寻找免费的 GUI 工具来使用 PostgreSQL [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目前 我正在使用独立的 GUI 工具DbSchema http www dbschema com 设计
  • 如何覆盖 Ruby Ranges 的 .. 和 ... 运算符以接受 Float::INFINITY?

    我想覆盖 and Ruby 中的运算符Range 原因是 我正在处理数据库中的无限日期范围 如果你拉一个infinty从 Postgres 中取出日期时间 你会得到一个Float INFINITY在红宝石中 问题是 我无法使用Float I
  • PSQL [错误] - 值被识别为列

    前几天刚开始学习数据库 我遇到了这个问题 我的值被识别为一列 并且它吐出了一个错误 这是我的News table id bodyText url createdAt updatedAt 这是我在 psql 中运行的命令 INSERT INT
  • PostgreSQL 如何创建数据库或模式的副本?

    有没有一种简单的方法可以在 PostgreSQL 8 1 中创建数据库或模式的副本 我正在测试一些软件 它对数据库中的特定模式进行大量更新 我想复制它 以便我可以与原始版本进行一些比较 如果它位于同一服务器上 则只需使用带有 TEMPLAT
  • 如何从 postgresql 函数或触发器发送一些 http 请求

    我需要通过 http 协议 GET 或 POST 请求 从函数或触发器发送数据 是否可以 您可以尝试用 PL Python 编写触发器并使用 urllib2 进行 POST
  • 我可以以编程方式配置 PostgreSQL 以不消除全文搜索中的停用词吗?

    我正在使用 PostgreSQL 全文搜索来进行项目 其中传统停用词 a the if 等 应该被索引和可搜索 这不是默认行为 例如 我可能希望我的用户找到查询 to be or not to be 的结果 The 文档 http www
  • PostgreSQL:比较 json [重复]

    这个问题在这里已经有答案了 众所周知 目前 PostgreSQL 还没有方法来比较两个 json 值 比较就像json json不起作用 但是选角呢json to text before Then select x a y b json t
  • postgresql 中的锁定表

    我有一个名为 games 其中包含一个名为 title 该列是唯一的 数据库中使用PostgreSQL 我有一个用户输入表单 允许他插入新的 game in games 桌子 插入新游戏的功能会检查之前输入的游戏是否存在 game 与相同的
  • 提高 PostgreSQL 1 亿数据左连接查询性能

    我在用Postgresql 9 2 version Windows 7 64 bit RAM 6GB 这是一个Java企业项目 我必须在我的页面中显示订单相关信息 有三个表通过左连接连接在一起 Tables TV HD 389772 行 T
  • Postgres LIMIT/OFFSET 奇怪的行为

    我正在使用 PostgreSQL 9 6 我有一个这样的查询 SELECT anon 1 id AS anon 1 id anon 1 is valid AS anon 1 is valid anon 1 first name AS ano
  • PostgreSQL 在递归查询中找到所有可能的组合(排列)

    输入是一个长度为 n 的数组 我需要生成数组元素的所有可能组合 包括输入数组中元素较少的所有组合 IN j A B C OUT k A AB AC ABC ACB B BA BC BAC BCA 随着重复 所以AB BA 我尝试过这样的事情
  • Npgsql 参数化查询输出与 PostGIS 不兼容

    我在 Npgsql 命令中有这个参数化查询 UPDATE raw geocoding SET the geom ST Transform ST GeomFromText POINT longitude latitude 4326 3081
  • 部分唯一索引不适用于冲突子句 PostgreSQL

    表结构 create table example a id integer b id integer c id integer flag integer 部分索引 create unique index u idx on example a
  • 使用 NLog .NET Core 将日志记录到 PostgreSQL DB

    我尝试将日志记录集成到 NET Core 中的数据库 我能够设置 NLog 并将消息记录到 SQL Server 这很容易 但是当我尝试将 DB 切换到 PostgreSQL 时 似乎没有记录任何内容 以下是startup cs中的代码 p
  • postgresql:插入...(选择*...)

    我不确定它是否是标准 SQL INSERT INTO tblA SELECT id time FROM tblB WHERE time gt 1000 我正在寻找的是 如果 tblA 和 tblB 位于不同的数据库服务器中怎么办 Postg
  • 为 PostgreSQL 查询选择正确的索引

    简化表 CREATE TABLE products product no integer PRIMARY KEY sales integer status varchar 16 category varchar 16 CREATE INDE
  • 使用 PostGIS 拥有通用 GEOGRAPHY 列

    在 PostgreSQL 9 PostGIS 1 5 中 有没有办法创建 通用 GEOGRAPHY 列 我指的是接受 POINT 以及 POLYGON LINESTRING 等的列 到目前为止 我只在 Internet 上看到过像 GEOG
  • TimescaleDB 查询选择列值较上一行发生更改的行

    最近刚刚开始使用 TimescaleDB 和 Postgres 来处理大多数数据请求 然而 我遇到了一个问题 即我对时间序列数据的请求效率极低 它是一个可以是任意时间长度 具有特定整数值的数据系列 大多数时候 除非出现异常 否则该值将是相同
  • Django 模型:默认日期时间未转换为 SQL CURRENT_TIMESTAMP

    我正在使用 Django 模型创建 PostgreSQL DB 我有一个 DateTimeField 我想将当前时间戳设置为默认值 我知道有多个消息来源建议如何做到这一点 但是 当我在 Django 之外检查数据库时 默认时间戳不会显示 我

随机推荐