AnyBackup-PostgreSQL 数据库备份失败,提示错误信息:路径属主错误,请检查数据路径以及归档路径属主是否与发起任务用户一致。
关键字
PostgreSQL
适用产品
- AnyBackup CDM 7.0.x
- AnyBackup Express 7.0.x
问题描述
在 AnyBackup 管理控制台上,执行 PostgreSQL 数据库备份失败,提示如下错误信息:
备份失败,原因:路径属主错误,请检查数据路径以及归档路径属主是否与发起任务用户一致。
问题影响
AnyBackup 备份 PostgreSQL 数据库失败。
问题原因
对于上述问题,有如下两种原因导致:
- 原因一,授权实例的用户不是启动 PostgreSQL 数据库服务的用户。
- 原因二,PostgreSQL 数据库的归档路径的属主不是授权实例的用户。
解决方案
为解决该问题,需要将归档路径的属主与授权实例的用户保持一致,解决方案如下:
1. ssh 远程登录到 PostgreSQL 数据库服务器,确认启动 PostgreSQL 数据库服务的用户,执行命令如下:
ps -ef|grep postgres
注意:上图示例中,/usr/bin/postgres 就是 PostgreSQL 数据库服务进程,该进程的启动用户 postgres 就是启动 PostgresSQL 数据库服务的用户,如果授权实例的用户不是 postgres ,则为原因一导致备份失败,请按照步骤2解决。反之为原因二导致备份失败,请按照步骤3解决。
2. 操作员登录 AnyBackup 管理控制台,选择资源>客户端>默认组,选中 PostgreSQL 数据库服务器对应的客户端,选择权限配置,点击,再点击
展开实例,点击已授权,用户名填写步骤1确认的用户 postgres ,密码填写 postgres 的密码,重新授权,重新发起备份。
3. 在 PostgreSQL 数据库服务器中,切换到步骤1确认的 postgres 用户,登录 psql,查看归档路径,执行命令如下:
su - postgres
psql
show archive_command;
注意:上图示例中,归档路径为 /database/pgsql/arch ,具体以实际情况为准。
4. 退出 psql ,切换到 root 用户,目录切换到步骤3确认的归档路径的上一层目录 /database/pgsql/ 下,查看归档路径 arch 的属主是否是步骤1确认的授权实例的用户 postgres ,执行命令如下:
\q
su - root
cd /database/pgsql
ls -l
注意:上图示例中,归档路径 arch 的属主是 root,不是启动数据库服务的用户 postgres,所以导致备份失败,具体以实际环境为准。
5. 修改归档路径的属主为步骤1确认的授权实例的用户 postgres,执行命令如下:
chown postgres arch
ls -l
6. 重新发起备份。
更多信息
若数据路径的属主不是启动 PostgreSQL 数据库服务的用户,则 PostgreSQL 数据库服务无法启动,psql 也无法登录,所以导致 PostgreSQL 数据库备份失败并报如上错误的原因只能是授权实例的用户不是启动 PostgreSQL 数据库服务的用户或者归档路径的属主不是授权实例的用户。