更新时间:2024-11-25 gmt 08:00
gaussdb分布式版为源任务序列值同步-九游平台
gaussdb分布式版为源任务暂不支持同步序列值,如果同步的表中存在关联的序列,需要在任务结束后,参考以下内容手动同步序列值。
操作步骤
- 使用drs同步任务测试连接时的用户登录gaussdb分布式版实例。
- 执行如下语句,查询库中具有管理序列的表及其关联的序列。
set search_path to '';select d.refobjid::regclass::text as tablename, d.objid::regclass::text as seqname from pg_depend d where d.refclassid='pg_class'::regclass and d.objid in (select oid from pg_class where relkind in ('s','l')) union select a.adrelid::regclass::text,d.refobjid::regclass::text from pg_attrdef a join pg_depend d on (a.oid=d.objid) where d.refobjid in (select oid from pg_class where relkind in ('s','l')) and d.classid='pg_attrdef'::regclass order by tablename, seqname;
- 针对每个同步的表关联的序列,使用具有monadmin或者sysadmin的权限的用户在源库cn节点执行如下语句,查询所有节点对应的最新序列值next_new_val。
execute direct on all $$select last_value, increment_by, cache_value, (last_value increment_by * cache_value) as next_new_val from '
'$$; 其中
为2中查询结果中带schema的序列名,查询结果中的next_new_val为last_value increment_by * cache_value,考虑了序列值缓存的情况,保证序列值不会重复。 - 针对每个同步的表关联的序列,参考如下语句在目标库设置新的序列值。
select setval('
', ); 其中,
为3中查询出的next_new_val值中的最大值(自增序列,increment_by > 0)或最小值(自减序列,increment_by < 0)。 - 检查目标库的序列值。
针对每个同步的表关联的序列,使用如下语句获取目标库序列的新值。
select nextval('
'); 检查得到的结果是否大于等于(自增序列,increment_by > 0)或小于等于(自减序列,increment_by < 0)源库所有节点的序列值。
父主题:
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨