首页 > 解决方案 > 恢复时 Postgres 转储丢失的数据

问题描述

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

我用来恢复的命令如下:

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

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

标签: postgresql

解决方案


最后,我使用此处描述的参数成功恢复了转储。详细地说,在我的 中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
      ...

推荐阅读