我正在试验使用pglogical 9.6的2节点双向复制。当我设置pglogical.conflict_resolution = 'last_update_wins‘时,我能够一直导致seg错误。
我创建了一个BEFORE DELETE触发器来防止在复制表中插入一些值。
CREATE TRIGGER TR_REP BEFORE DELETE
ON table_for_repl
FOR EACH ROW
EXECUTE PROCEDURE check_value();
CREATE OR REPLACE FUNCTION public.check_value()
RETURNS trigger AS
$BODY$
BEGIN
IF OLD."origin"::text = 'test' then
RETURN OLD;
ELSE
RETURN Null;
END IF;
END;
$BODY$
LANGUAGE plpgsq;此触发器适用于正常的删除操作。当我为复制打开它(ALTER TABLE table_for_repl ENABLE replication TRIGGER TR_REP;),并且我再现了触发器应该阻止插入时的情况(即该函数将返回Null)。我得到了:
background worker "pglogical apply 16384:1892658794" (PID 4250) was terminated by signal 11: Segmentation fault.
terminating any other active server processes
recovered replication state of node 1 to 0/1764C38
database system was not properly shut down; automatic recovery in progress在pglogical 11上重复出现错误
发布于 2019-04-04 23:21:12
分段错误总是一个bug,除非它是由硬件问题或数据损坏引起的。
你应该向2ndQuadrant提交一个bug;这是他们的软件。
确保将复制器包含在错误报告中。
https://stackoverflow.com/questions/55514283
复制相似问题