加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从文件系统备份中恢复PostgreSQL数据库

发布时间:2020-12-13 16:21:14 所属栏目:百科 来源:网络整理
导读:我有一个PostgreSQL 8.3数据目录备份.我需要将此备份中的数据库复制到新的PostgreSQL实例中.由于旧服务器的问题,我不能做数据库的pg_dump. 我已经找出了有问题的数据库的目录.例如,在MySQL中,您通常会关闭服务器,复制目录并重新启动它,数据库将可用.现在这不
我有一个PostgreSQL 8.3数据目录备份.我需要将此备份中的数据库复制到新的PostgreSQL实例中.由于旧服务器的问题,我不能做数据库的pg_dump.

我已经找出了有问题的数据库的目录.例如,在MySQL中,您通常会关闭服务器,复制目录并重新启动它,数据库将可用.现在这不适用于PostgreSQL,我怀疑是因为数据库没有在global / pg_database文件中列出.当PostgreSQL启动时,此文件似乎是自动生成的,那么如何告诉系统数据库在那里?

请注意,在PostgreSQL中,您的群集数据目录是一个独立的单元,根据文档 here,无法可靠地部分恢复.

您最好的希望是使用旧服务器的完整数据目录并在其上启动服务器,然后从您从那里获得的数据库转储进行恢复:

>获取一个适合新主机上配置的postgresql.conf(通过旧文件 – 您在此处更改的文件 – 以及新数据目录来定位自己)
>找出旧安装的PostgreSQL超级用户的用户名 – 很可能是postgres.
>在新主机上创建此用户名(UNIX用户),除非它已经存在.
>将旧数据目录提供(chown)给该用户,除非uid与旧服务器上的uid匹配.
>在旧数据目录中配置pg_hba.conf以允许从本地用户到相同postgres用户名的连接(这通常是默认设置,但检查).
>将旧数据库集群作为UNIX用户运行,其名称与旧数据目录的超级用户相同,例如对于用户postgres:

sudo -u postgres postgres -D old_data_directory

or with su:

su postgres postgres -D old_data_directory

>再次使用通常的用户名转储旧数据库postgres:

sudo -u postgres pg_dump -p /path/to/socket/for/old/directory database_name > dump_file.sql

becoming postgres with su analogous to above

>将dump_file.sql改编为新服务器的用户名等;在那里创建具有适当所有权的空数据库
>将数据库扫描到新服务器:

sudo -u postgres psql -p /path/to/socket/for/new/directory new_database_name

once again,getting postgres privileges using su analogous to above

这应该让你设定,或至少显示到达那里的良好途径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读