PostgreSQL 9.0.13执行pg_restore但没有证据表明正在使用磁盘空间

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.我完全迷失了.所有这些数据都在我的屏幕上滚动,我无法证明它会在任何地方.没有磁盘使用.

救命

bma*_*bma 6

在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)


Wad*_*gan 5

已解决 -据我所知,语法错误-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函数得到非常快的大小增量。

它正在增长。

  • 我认为您只是“接受”您选择的正确答案。 (2认同)