PostgreSQL为源强制结束任务 本节主要介绍PostgreSQL为源强制结束任务 本小节介绍PostgreSQL为源的同步链路在强制结束任务后,如何清理源库逻辑复制槽、如何同步序列值以及如何在源数据库已经无法连接的情况下,重置目标库中自增或自减列关联序列的序列值。 清理源库逻辑复制槽 步骤 1 使用对应DRS任务的源数据库连接用户,登录该同步任务的源数据库。 步骤 2 查询同步任务选择的database对象所对应的流复制槽名称。 select slotname from pgreplicationslots where database 'database'; 注意 其中database为DRS同步任务中选择同步的database。 步骤 3 执行如下语句,删除对应的流复制槽。 select from pgdropreplicationslot('slotname'); 注意 其中slotname为步骤2中查询的流复制槽名称。 步骤 4 执行如下语句,查询流复制槽是否成功删除。 select slotname from pgreplicationslots where slotname 'slotname'; 查询结果为空表示DRS同步任务对应的流复制槽已成功删除。 同步序列值 如果未同步序列对象或者目标库为GaussDB(for openGauss),可忽略此节。 步骤 1 使用高权限账号(需要具有所有序列的USAGE权限)连接对应DRS任务同步的源数据库,执行如下语句。 select 'SELECT pgcatalog.setval('quoteliteral(quoteident(n.nspname)'.'quoteident(c.relname))', 'nextval(c.oid)');' as sqls from pgclass c join pgnamespace n on c.relnamespacen.oid where c.relkind 'S' and n.nspname !~'^pg' and n.nspname<>'informationschema' and not (c.relname'hwdrsddlinfoidseq' and n.nspname'public') order by n.nspname, c.relname; 查询结果为需要在目标数据库中执行的sql语句。 步骤 2 使用对应DRS任务的目标数据库链接用户连接该任务同步的目标数据库,在目标库中执行步骤步骤1中查询出的sql语句。 步骤 3 在目标库中执行如下语句,检查序列值同步结果。 SELECT n.nspname, c.relname, nextval(c.oid) from pgclass c join pgnamespace n on c.relnamespacen.oid where c.relkind 'S' and n.nspname !~'^pg' and n.nspname<>'informationschema' order by 1,2;