postgresql - 恢复时 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
...
推荐阅读
- android - 如何使用 Google 的应用内更新 API 指定哪些更新需要立即更新以及哪些更新是灵活的?
- java - 有没有办法通过用 Java 编码将一个 html 文件替换为另一个文件?
- proxy - 如何解决 Cloud Foundry 的代理错误?
- javascript - Lodash 将数组转换为对象
- sql - MD5 : Generate excel's files
- reactjs - Openlayers 修改交互
- c++ - 如何通过时间跟踪屏幕?
- java - 休眠延迟加载不适用于 java 11 中的 forEach()
- c# - 必须至少有一个字母的正则表达式
- python - XML file processing subtags or make the number of subtags consistent