使用环境:win10&win11 数据库Postpgres14.4-1
建议win防火墙和杀毒软件都关了。
- 停止拷贝源的Postgres服务,需要检查下是否停掉了所有的 postgre 开头的服务,有时候会开启多个,尤其是在数据库出现问题的时候;如果没有全部关闭,数据迁移都会失败。
具体操作:此电脑(右键)->服务和应用程序->服务,找到图中该项,右键选择 停止
2.迁移数据,将 postgresql 程序所在目录下的 data 目录中的数据全部拷贝到新的目录下;直接拷贝整个data目录就行,拷贝到安装目录。
3.修改注册表,找到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicespostgresql-x64-9.5ImagePath",将“-D”后的目录名修改为新的数据目录位置即可,如果目录路径中含有空格,需要用引号引起。(我这里是从一台电脑拷贝到另一台电脑,目录都是一样的,所以没有修改)
4.修改配置文件pg_hba.conf和postgresql.conf,保证数据库可以被主机访问(默认是本地127.0.0.1),尽量把无关的IP地址删除,一般都可以,可以再确认一下,也确认写法规范。
- 检查data目录,删除掉名为 postmaster.pid的文件(没有就略过)。
- 接下来检查data目录的权限,右键data目录->属性->安全,确认权限是否受限制。我遇到这里是下图这样,我对比之前安装的data目录属性,多了“ALL APPLOCATION PACKAGES”和“所有受限制的应用程序包”,关键还删不掉,提示是继承的权限,需要关闭继承。
关闭继承:右键data目录->属性->高级,左下角有更改权限-关闭继承,提示是否全部删除已经继承的权限,全部删除即可,权限为空。
关闭继承后可能权限为空,这时候不用慌,同样左下角“添加”即可,添加->选择主体->高级->立即查找,然后在下方找到需要添加的权限,
我是按照安装的data目录属性来设置,
主体选了下图中的几个主体,权限全设置为“完全控制”。
7.WIN + R cmd,进入bin目录:pg_resetwal.exe -f 你的数据启动目录、pg_ctl -D 你的数据启动目录。
8.最后开启Postgres服务。
具体操作:此电脑(右键)->服务和应用程序->服务,找到图中该项,右键选择 启动
附录:
如果报错,提示某些服务在未由其他服务或程序使用时将自动停止,类似下图
可以查看windows应用程序日志查看是什么原因。
在计算机管理——系统工具——事件查看器——Windows日志,找到PostgreSQL的错误日志。下图里可以查看到是权限不足,然后修改权限或者去 某应/某度 去搜索解决措施。