gs_restore 报错

gs_restore -p 8000 -U erp_gk_dev -W ‘HmDEB!skJPeW3G7W’ -d erpdata_gk_dev -j 4 -F c -v erp_gk_dev_20250813_bak.dump > imp_erp_gk_dev_20250813_bak.log

如果恢复时有类似报错

restoring data for table “gwrcistest.demo_user” table demo_user complete data imported ! launching item 8801 TABLE DATA sync_mdm_customer_area Error from TOC entry 7798; 2604 1114378 DEFAULT id gwrcistest could not execute query: ERROR: permission denied to set parameter “session_replication_role” Command was: SET session_replication_role = replica;

一、为什么会产生这个报错

根本原因

1.备份表上定义了触发器

2.恢复操作包含数据导入

3.用户是普通用户,没有sysadmin权限

必须同时满足以上三点条件才会产生这个报错

如果导入的表有触发器并且恢复数据 gs_restore 在恢复时会指定session_replication_role = replica 在恢复完成后设置session_replication_role = origin(默认值),设置 SET session_replication_role

二、.session_replication_role是什么

官方文档解释

session_replication_role 是 PostgreSQL/GaussDB 的一个会话级参数,用于控制触发器和规则的行为

模式触发器状态使用场景
origin✅ 启用正常业务操作
replica❌ 禁用数据恢复、复制
local⚠️ 检查极少使用

.如何解决

gs_restore在导入数据表时 会尝试设置 session_replication_role = replica,以禁用触发器避免数据导入过程中的触发器干扰,但您的用户权限不足

在导入之前授予sysadmin权限,导入后再回收

ALTER USER gwrcistest WITH SYSADMIN;

ALTER USER gwrcistest NOSYSADMIN;

1 条回复

  1. Yuri 的头像

    11

Leave a Reply

Your email address will not be published. Required fields are marked *