Wad*_*gan 7 postgresql space pg-dump disk pg-restore
我正在尝试从另一台服务器恢复使用此命令获取的pg_dump.
sudo -u postgres pg_dump --verbose --format=custom --file=pg-backup.sql -U postgres salesDB
Run Code Online (Sandbox Code Playgroud)
复制pg-backup.sql文件后,我正在尝试使用此命令进行恢复
sudo -u postgres pg_restore --verbose --jobs=`nproc` -f pg-backup.sql
Run Code Online (Sandbox Code Playgroud)
pg-backup.sql文件是13GB.pg-restore已经运行了4个小时,一直在我的屏幕上滚动数据.没有错误.
但是当我从psql会话中执行此语句时
SELECT pg_size_pretty(pg_database_size('salesDB'));
Run Code Online (Sandbox Code Playgroud)
我的大小为5377 kB.什么?它至少应该是1GB.我完全迷失了.所有这些数据都在我的屏幕上滚动,我无法证明它会在任何地方.没有磁盘使用.
救命
在pg_restore命令中没有"-f"标志的情况下尝试它.此外,您可能想尝试创建空的salesdb数据库并传入"-d salesdb".请注意,除非在双引号内创建,否则db名称将折叠为小写.
添加了示例步骤,以显示在还原运行时数据库的大小增加
-- sample pg_dump command
pg_dump -f testdb.out -Fc src_test_db
-- create the db to restore into
createdb sometestdb
-- restore with 4 parallel jobs, from the "testdb.out" file, into the db "sometestdb"
time pg_restore --dbname=sometestdb --jobs=4 testdb.out
-- In another window, every few seconds, you can see the db growing
psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
pg_size_pretty
----------------
4920 MB
psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
pg_size_pretty
----------------
4920 MB
psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
pg_size_pretty
----------------
5028 MB
psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
pg_size_pretty
----------------
5371 MB
Run Code Online (Sandbox Code Playgroud)
已解决 -据我所知,语法错误-f(输出文件)参数是无用的。我需要在pg_restore没有任何标志的情况下指定要使用的文件,仅作为命令行中的最后一个元素。-d salesdb需要该参数。我有 16 个 cpu,所以我设置了-j 15,这似乎很有帮助。我的最终命令行是
sudo -u postgres pg_restore -d salesdb --jobs=15 backup10.sql
Run Code Online (Sandbox Code Playgroud)
然后我用这个pg_database_size函数得到非常快的大小增量。
它正在增长。
| 归档时间: |
|
| 查看次数: |
3427 次 |
| 最近记录: |