l0b*_*0b0 8 postgresql upgrade restore
我正在运行自定义 Linux 发行版的虚拟机上测试从 PostgreSQL 8.2.1 到 9.2 的升级。升级过程如下:
pg服务pg_dumpallpg服务/var/pg;这是一个简单的单服务器设置)initdbreindexdb 所有数据库referential_constraints视图此过程在一台主机上运行良好,备份和恢复顺利。在另一台具有不同数据库点 1 到 7 的机器上工作正常,但服务器不会启动,除非我添加sleep 1after initdb,即使这样,转储的数据也无法恢复,因为“数据库系统正在启动”。处理这个问题的标准方法是什么,除了这些可怕的黑客:
sleep在任一操作之前花一些时间,编辑:“解决方案”毕竟不起作用。如何确保数据库准备好运行还原?
initdb 在完成之前不会返回,因此在它和服务器启动之间不应该有任何暂停。PostgreSQL 中存在一些错误,它在没有先将所有内容刷新到磁盘的情况下完成。我现在不知道还有什么,但 bug 的本质是你并不总是知道它们。
如果使用pg_ctl命令启动数据库,请使用“-w”参数等待启动完成后再返回。它没有做任何花哨的事情——它只是“准备好了吗?” 为你循环。
请注意,如果您的服务器崩溃并需要在服务器启动之前重放大量数据,则 pg_ctl 等待时由“-t”设置的超时可能太低。
在对源数据库进行 pg_dump 之前没有理由对它们进行 VACUUM。虽然它可能会加快转储速度,但真空本身需要的时间比这种改进要长。
| 归档时间: |
|
| 查看次数: |
3560 次 |
| 最近记录: |