我试图将数据库从server1
移到server2
。我阅读了postgres的docummentation,我认为一切都是正确的,除了我从server1转储db后移动它并在server2上恢复大小不同。
SELECT pg_size_pretty(pg_database_size('db_name'));
pg_size_pretty
----------------
118 MB
(1 row)
select pg_size_pretty(pg_database_size('db_name'));
pg_size_pretty
----------------
81 MB
(1 row)
我已使用-a -Fc -Z9
标记进行转储,并使用pg_restore -U user -c -d db_name dump_file.dump
恢复
我的问题是:
感谢您阅读本文。
答案 0 :(得分:3)
这很好而且很正常。
转储和重新加载会产生一个更紧凑的数据库,因为表中没有死区,并且b-tree索引是新重新索引的,因此它们被重新打包并且平衡良好。如果您:
,您会发现尺寸相同或更接近VACUUM FULL;
REINDEX DATABASE mydb;
在主DB上。
但是,请注意,我强烈建议使用-1
选项恢复pg_restore
,除非您需要并行恢复。这样你就可以得到一个空DB或完全恢复。当然,您还应始终查看pg_dump
和pg_restore
的返回代码。
没有评论Rails部分,我不知道你指的是什么。请不要做这样的多重问题,他们很难明确回答,你会变得与众不同"正确"不同部分的答案。为新问题发布一个新的SO问题。