AnyBackup-PostgreSQL 数据库恢复失败,提示错误信息:恢复失败,原因:实例正在运行。
关键字
PostgreSQL、实例正在运行
适用产品
- AnyBackup CDM 7.0.x
- AnyBackup Express 7.0.x
问题描述
在 AnyBackup 管理控制台上,执行 PostgreSQL 数据库恢复失败,执行输出中提示如下错误信息:
恢复失败,原因:实例正在运行。
问题影响
PostgreSQL 数据库恢复失败。
问题原因
在恢复机的恢复路径下存在正在运行的 PostgreSQL 实例导致恢复失败。
解决方案
为解决该问题,有如下两个方案:
方案一,将恢复机的恢复路径下的正在运行的实例关闭,执行步骤如下。
1. ssh 远程登录目标机,查看 PostgreSQL 数据库服务的启动用户,执行命令如下:
ps -ef|grep postgres
注意:上图示例中,/usr/bin/postgres -D /database/pgsql/data 进程是恢复机上正在运行的 PostgreSQL 实例,其对应的用户 postgres 即为 PostgreSQL 数据库服务的启动用户,-D 参数后面的 /database/pgsql/data 是 PostgreSQL 数据库的数据文件路径,具体以实际情况为准。
2. 切换到 postgres 用户,关闭方案一步骤1中正在运行的实例,执行命令如下:
警告:请确认恢复机上是否有业务或者重要数据正在使用,若该环境上有业务正在使用,关闭实例会导致业务中断。
su - postgres
/usr/bin/pg_ctl stop -D /database/pgsql/data
方案二,在恢复机上新建一个目录,将 PostgreSQL 数据库恢复到该目录下,执行步骤如下。
1. ssh 远程登录恢复机,新建一个目录,属主为方案一步骤1中 PostgreSQL 数据库服务的启动用户 postgres,权限为700,执行命令如下:
mkdir test
chown postgres test
chmod 700 test
注意:上图示例中,新建的目录为 /test ,具体以实际情况为准。
2. 登录 AnyBackup 管理控制台,点击定时数据保护>数据恢复>新建,选择要恢复的数据源,点击下一步,选择要恢复的时间点和数据,点击下一步,客户端选择目标机,选择用户名称,点击浏览,选择方案二步骤1中新建的目录 /test ,根据需要选择恢复选项,然后点击下一步,再点击完成,执行 PostgreSQL 数据库指定路径恢复。

更多信息
更多关于 PostgreSQL 操作介绍,请参考:PostgreSQL 介绍 。