更改 PostgreSQL 的数据路径

更改 PostgreSQL 的数据路径

我将 PostgreSQL 作为服务运行。

在管理 - 服务中,我可以看到以下路径

"C:\Program Files\PostgreSQL\8.4.3-3.1C\bin\pg_ctl.exe" runservice -w -N "pgsql-8.4.3-3.1C" -D "C:\Program Files\PostgreSQL\8.4.3-3.1C\data\"

-D "C:\Program Files\PostgreSQL\8.4.3-3.1C\data\"用于数据路径。

但是我该如何改变这种情况?我想通过以下方式启动此服务

"C:\Program Files\PostgreSQL\8.4.3-3.1C\bin\pg_ctl.exe" runservice -w -N "pgsql-8.4.3-3.1C" -D "C:\pgsql\data\"

我该如何改变它?

答案1

如果您重新安装 Postgre 并在安装过程中选择数据文件夹,则会更容易。

否则你必须阅读有关 pg_ctl 的内容: http://www.postgresql.org/docs/current/static/app-pg-ctl.html

答案2

  • 关闭服务
  • 使用以下方式取消注册 Windows 服务pg_ctl unregister -N YourServiceName(当前服务名称显示在控制面板的“服务”应用程序中)
  • 将数据目录移动到新位置
  • 确保新目录的权限允许 postgres 用户访问文件
  • 再次验证新目录的权限是否正确
  • 使用注册windows服务
    pg_ctl register -N PostgreSQL -U windowsuser -P windowspassword -D c:\somedir\newdata
  • 使用启动新服务net start PostgreSQL

所有这些都在手册中描述(请参阅 jorani 发布的链接)

答案3

如果您不想重新安装,您也可以通过注册表中的以下项进行更改:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\postgresql-9.0\ImagePath HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\postgresql-9.0\ImagePath HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\postgresql-9.0\ImagePath

将版本号更改为您正在使用的版本。

这些键是实际执行的命令。将数据目录移动到所需位置并设置权限后,重新启动系统,一切就绪。我承认,修改注册表是最安全的方法。

相关内容