postgreSQL 已关闭,但 pg_checksums 仍然表示必须关闭集群

postgreSQL is shut down but pg_checksums still says clusters must be shut down

我的 postgreSQL 数据库已损坏,因此我正在尝试使用 pg_checksum 修复它。

我正在使用 dockerdocker-compose,
docker-compose.yml 如下所示。

services:
  db:
    image: postgres
    volumes:
      - /home/AAA/BBB/data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=AAAA
      - POSTGRES_USER=BBBB
      - POSTGRES_PASSWORD=CCCC
      - POSTGRES_INITDB_ARGS=--encoding=UTF-8

而 postgresql 版本是:

root@2c0d76d14318:/# postgres --version
postgres (PostgreSQL) 13.1 (Debian 13.1-1.pgdg100+1)

但是当我在 docker 容器中尝试命令 pg_checksums -D /var/lib/postgresql/data --enable --progress --verbose - 显示在 https://postgreshelp.com/postgresql-checksum/ 中时,它会发出如下错误:

root@2c0d76d14318:/# pg_checksums -D /var/lib/postgresql/data --enable --progress --verbose
pg_checksums: error: cluster must be shut down

因此,我尝试通过 service postgresql stop 关闭 postgres 服务器,但它也出现以下错误:

root@2c0d76d14318:/# service postgresql stop
[warn] No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).

如果我再次尝试 pg_checksums 也是一样。

我真的很着急解决这个问题,但我不知道。

有人可以帮忙解决这个问题吗?

P.S。欢迎修复一些语法问题。抱歉,我不会说英语,所以有些短语可能很奇怪。提前谢谢你。

您在损坏之前启用 pg_checksums,而不是之后。

它需要彻底关闭集群,显然没有。它无法区分 运行 服务器和崩溃(不正常关闭)的服务器。您可以修复此问题,只需启动集群,让其自动恢复,然后干净地关闭它。但如果它已经损坏,这可能行不通。无论您需要做什么,pg_checksums 都可能不是完成它的工具。