Postgres在恢复时转储丢失的数据



我正在尝试恢复Postgres转储。我正在使用docker-compose来运行一个新的Postgres实例(用于转储的相同版本- Postgres 13),但是当恢复结束时,一些数据丢失了。我还在不同的pc上多次执行恢复,但似乎随机丢失了一些数据部分。我没有从日志中得到错误。

我用来恢复的命令如下:

gunzip -c dump.gz | docker exec -i image_name psql -U dbuser

另外,我试图提取转储文件并直接通过psql运行导入,但我也得到随机丢失的数据。

最后,我使用这里描述的参数成功地恢复了转储。具体来说,在我的docker-compose.yaml中,我放置了以下参数:

...
services:
db:
image: postgres
restart: always
command: >
-c fsync=off
-c synchronous_commit=off
-c full_page_writes=off
-c wal_level=minimal
-c autovacuum=off
-c wal_keep_size=0
-c archive_mode=off
-c max_wal_senders=0
-c maintenance_work_mem=3GB
-c wal_buffers=-1
-c shared_buffers=4GB
-c checkpoint_timeout=20h
-c max_wal_size=40GB
-c min_wal_size=10GB
...

最新更新