我正在 docker 上运行 PostgreSQL 服务器,并且我正在尝试设置 pg_checksums 进行有效性检查。
但是,为了执行此操作,服务器应该处于关闭状态,但是如果我尝试停止 postgres 服务器,docker 容器本身已关闭。 是的,这是一个自然的结果,因为 docker 容器本身就是这个过程。
那么,如何在 docker 容器上使用
pg_checksums
呢?容器上不可用吗?
我必须这样做几次,并且忘记了我采取的步骤,所以我希望将来能回到这里记住我所做的事情。
首先,停止 postgres 容器,然后运行:(您可能应该更改版本以匹配您的版本,并添加您需要的任何其他标志,例如
--user
)
docker run -it -v your-postgres-data:/var/lib/postgresql/data postgres:14 bash
pg_checksums --enable -D /var/lib/postgresql/data
这将输出类似的内容:
Checksum operation completed
Files scanned: 931
Blocks scanned: 3222
pg_checksums: syncing data directory
pg_checksums: updating control file
Checksums enabled in cluster
您可以通过以下方式检查完整性:
pg_checksums -D /var/lib/postgresql/data
Checksum operation completed
Files scanned: 931
Blocks scanned: 3222
Bad checksums: 0
Data checksum version: 1