PostgreSQL:在另一个驱动器上查找 Postgresql 数据库文件并恢复它
PostgreSQL : Find Postgresql database file on another drive and restore it
我正在处理 PostgreSQL 数据库,最近我们进行了服务器升级,在此期间我们将驱动器从 2Tb raid 硬盘更改为 SSD。现在我将 RAID 驱动器安装在一个分区上,甚至可以访问它。
接下来我要做的是从安装的驱动器中取出数据库并将其恢复到当前 运行 PostgreSQL。我怎样才能做到这一点?
root@check03:/mnt/var/lib/postgresql/9.1/main/global# ls
11672 11674 11805 11809 11811 11813_fsm 11816 11820 11822 11824_fsm 11828 11916 11920 pg_internal.init
11672_fsm 11675 11807 11809_fsm 11812 11813_vm 11818 11820_fsm 11823 11824_vm 11829 11918 pg_control pgstat.stat
11672_vm 11803 11808 11809_vm 11813 11815 11819 11820_vm 11824 11826 11914 11919 pg_filenode.map
root@check03:/mnt/var/lib/postgresql/9.1/main/global# cd ..
如您所见,我可以访问驱动器和文件夹,但我不知道下一步该怎么做。请告诉我。非常感谢。
您需要相同版本的 PostgreSQL (9.1),以及相同或更高的次要版本。将 main/
及其下方的所有内容复制到新位置。复制旧实例的配置并调整路径以适应新位置(main/
是 ''data directory''(有时也称为 PGDATA
))。启动新实例并仔细查看日志。您可能应该重建任何索引。
另请阅读精美文档中的 file layout。
编辑:如果您有机会 运行 旧配置,请阅读 backup and restore,这是一种更安全的数据传输方式。
- Postgres 二进制文件必须是同一版本
- 确保 postgres 不是 运行
- 使用
cp -rfp
或 tar | tar
或 cpio
或您喜欢的任何内容进行复制。确保保留文件所有者和模式(顶级目录必须是 0700,归 postgres 所有)
- 确保 postgres-startup(在 /etc/init.d/postxxx 中)引用新目录;有时有一个环境变量 $PGDATA 包含 postgres 数据目录的名称;也许您也需要对 new_directory/postgres.conf 进行更改(pg_log 等)
- 为了安全,重命名旧数据目录
- 重启 Postgres
- 尝试连接;检查日志。
额外:
- 经验丰富的 unix 管理员(如 BOFH ;-) 可能想要使用挂载点 and/or 符号链接(而不是复制)。别客气。 YMMV
- 经验丰富的 DBA 可能想要创建一个表空间,将其指向新位置并(有选择地)将数据库、模式或表移动到新位置。
我正在处理 PostgreSQL 数据库,最近我们进行了服务器升级,在此期间我们将驱动器从 2Tb raid 硬盘更改为 SSD。现在我将 RAID 驱动器安装在一个分区上,甚至可以访问它。
接下来我要做的是从安装的驱动器中取出数据库并将其恢复到当前 运行 PostgreSQL。我怎样才能做到这一点?
root@check03:/mnt/var/lib/postgresql/9.1/main/global# ls
11672 11674 11805 11809 11811 11813_fsm 11816 11820 11822 11824_fsm 11828 11916 11920 pg_internal.init
11672_fsm 11675 11807 11809_fsm 11812 11813_vm 11818 11820_fsm 11823 11824_vm 11829 11918 pg_control pgstat.stat
11672_vm 11803 11808 11809_vm 11813 11815 11819 11820_vm 11824 11826 11914 11919 pg_filenode.map
root@check03:/mnt/var/lib/postgresql/9.1/main/global# cd ..
如您所见,我可以访问驱动器和文件夹,但我不知道下一步该怎么做。请告诉我。非常感谢。
您需要相同版本的 PostgreSQL (9.1),以及相同或更高的次要版本。将 main/
及其下方的所有内容复制到新位置。复制旧实例的配置并调整路径以适应新位置(main/
是 ''data directory''(有时也称为 PGDATA
))。启动新实例并仔细查看日志。您可能应该重建任何索引。
另请阅读精美文档中的 file layout。
编辑:如果您有机会 运行 旧配置,请阅读 backup and restore,这是一种更安全的数据传输方式。
- Postgres 二进制文件必须是同一版本
- 确保 postgres 不是 运行
- 使用
cp -rfp
或tar | tar
或cpio
或您喜欢的任何内容进行复制。确保保留文件所有者和模式(顶级目录必须是 0700,归 postgres 所有) - 确保 postgres-startup(在 /etc/init.d/postxxx 中)引用新目录;有时有一个环境变量 $PGDATA 包含 postgres 数据目录的名称;也许您也需要对 new_directory/postgres.conf 进行更改(pg_log 等)
- 为了安全,重命名旧数据目录
- 重启 Postgres
- 尝试连接;检查日志。
额外:
- 经验丰富的 unix 管理员(如 BOFH ;-) 可能想要使用挂载点 and/or 符号链接(而不是复制)。别客气。 YMMV
- 经验丰富的 DBA 可能想要创建一个表空间,将其指向新位置并(有选择地)将数据库、模式或表移动到新位置。