欢迎访问机房运维工作室

爱数知识库

AnyBackup-PostgreSQL 数据库恢复失败,提示错误信息:恢复失败,原因:实例正在运行。

频道:爱数知识库 日期: 浏览:32

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 介绍