我有一个PostgreSQL 8.3数据目录备份。 我需要从这个备份复制一个数据库到一个新的PostgreSQL实例。 由于旧服务器的问题,我不能做一个数据库的pg_dump。
我已经想出了哪个目录是针对数据库的。 例如,在MySQL中,您通常会closures服务器,将目录复制并重新启动,数据库将可用。 现在这不适用于PostgreSQL,我怀疑这是因为数据库没有列在global / pg_database文件中。 这个文件似乎是在PostgreSQL启动时自动生成的,那么如何告诉系统数据库在那里呢?
请注意,在PostgreSQL中,您的群集数据目录是一个独立的单元,无法可靠地在部分中进行恢复,如此处的文档所述。
你最好的希望是使用旧服务器的完整数据目录,并在其上启动一个服务器,然后从你从那里得到的数据库转储中恢复:
sudo -u postgres postgres -D old_data_directory或者用su:
su postgres postgres -D old_data_directory
sudo -u postgres pg_dump -p / path / to / socket / for / old /目录database_name> dump_file.sqlsu与上面类似
sudo -u postgres psql -p / path / to / socket / for / new /目录new_database_name再一次,使用苏类似于以上获得postgres特权
这应该让你设置,或者至less显示一个好path到达那里。