AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1162877
Accepted
QGuy
QGuy
Asked: 2024-07-22 21:08:44 +0800 CST2024-07-22 21:08:44 +0800 CST 2024-07-22 21:08:44 +0800 CST

无法启动 PostgreSQL 数据库(数据丢失??)

  • 772

macOS Sonoma 14.2.1 (23C71),刚刚更新至 14.5 (23F79)

故事

周末,我有一个 Python 脚本 (norgis ALKIS-Import) 将大量数据导入我的 Postgres 数据库。今天我回来时,数据库仍在运行,但我无法访问它。我收到此错误消息:"base/5/2703": No such file or directory。重新启动 Mac 后,它不再启动。

备份

我有一个带有 RAID 10 的直接附加存储,我使用 rsync shell 脚本和 LaunchAgents 进行每日和每月备份。它只是将 var-16 文件夹复制到大存储。我尝试启动每一个每日备份 (7) 和每月备份,但它们都出现相同的错误。我还有一个几周前的备份,但我遇到了同样的错误。我简直无法解释为什么我的所有备份都在我未触碰任何备份的情况下被损坏了。

我尝试过的方法

  • 我在同一台 Mac 上创建了一个新的 Postgres 服务器并且它运行良好。
  • 我在另一台 Mac 上运行了服务器(它存储在外部 SSD 上),但仍然收到相同的错误消息。

这是启动服务器后,postgresql.log文件中的日志输出。

2024-07-22 14:29:58.728 CEST [9382] LOG:  listening on IPv6 address "::", port 5432
2024-07-22 14:29:58.728 CEST [9382] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-07-22 14:29:58.729 CEST [9382] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2024-07-22 14:29:58.744 CEST [9382] LOG:  could not open directory "pg_tblspc/.DS_Store/PG_16_202307071/pgsql_tmp": Not a directory
2024-07-22 14:29:58.744 CEST [9382] LOG:  could not open directory "pg_tblspc/.DS_Store/PG_16_202307071": Not a directory
2024-07-22 14:29:58.745 CEST [9385] LOG:  database system was interrupted while in recovery at 2024-07-22 14:23:35 CEST
2024-07-22 14:29:58.745 CEST [9385] HINT:  This probably means that some data is corrupted and you will have to use the last backup for recovery.
2024-07-22 14:30:03.952 CEST [9385] LOG:  database system was not properly shut down; automatic recovery in progress
2024-07-22 14:30:03.966 CEST [9385] FATAL:  could not open directory "pg_tblspc/.DS_Store/PG_16_202307071": Not a directory
2024-07-22 14:30:03.967 CEST [9382] LOG:  startup process (PID 9385) exited with exit code 1
2024-07-22 14:30:03.967 CEST [9382] LOG:  aborting startup due to startup process failure
2024-07-22 14:30:03.967 CEST [9382] LOG:  database system is shut down

我也不明白为什么它要在 .DS_Store 目录中执行某些操作。这些不是由 macOS 制作和使用的吗?

编辑

如果有人知道为什么我的所有备份也都损坏了,请回答。.DS_Stores 来自哪里,为什么 postgres 会尝试对 .DS_Store 文件执行某些操作?谢谢!

postgresql
  • 2 2 个回答
  • 39 Views

2 个回答

  • Voted
  1. Best Answer
    QGuy
    2024-07-22T21:47:38+08:002024-07-22T21:47:38+08:00

    因此,我的日志中目录中的某些目录/文件出现错误pg_tblspc:

    2024-07-22 14:29:58.744 CEST [9382] LOG:  could not open directory "pg_tblspc/.DS_Store/PG_16_202307071/pgsql_tmp": Not a directory
    2024-07-22 14:29:58.744 CEST [9382] LOG:  could not open directory "pg_tblspc/.DS_Store/PG_16_202307071": Not a directory
    

    我刚刚从正常运行的服务器复制了这个文件夹并将其替换到故障服务器上。我认为发生这种情况是因为 macOS 在该文件夹中创建了一些 .DS_Store 文件。

    现在它又启动并工作了!!:)

    • 0
  2. Phill W.
    2024-07-22T22:07:47+08:002024-07-22T22:07:47+08:00

    我使用 rsync shell 脚本和 LaunchAgents 进行每日和每月备份。

    请告诉我,在进行此类“备份”时,您是否关闭了数据库(或将其置于“备份模式”)。如果您不这样做,那么您从正在运行的数据库下复制的任何内容都可能毫无用处。

    Database != Files 
    

    请记住,PostgreSQL 所做的大部分工作都发生在正在运行的进程的内存中。您的数据只会在“某个时间”后写入磁盘,并且可以写入数据文件的任何部分。如果您的 rsync 正在读取文件,而 PostgreSQL 选择将数据写入该文件的开头,那么您的“备份”将丢失该数据。

    建议:使用数据库工具执行数据库作业。

    • 0

相关问题

  • OS X 上的 Postgresql 安装问题

  • 修复 mysql 命令行程序中的 Control-C?

  • 有哪些好的 PostgreSQL 管理工具?[关闭]

  • Access 通过 ODBC 连接到远程 Postgresql 数据库是否可用?

  • 哪个数据库服务器扩展性更好:PostgreSQL 还是 MySQL?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve