Pglogical questions and problems

From: "Joshua D(dot) Drake" <jd(at)commandprompt(dot)com>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Pglogical questions and problems
Date: 2016-04-12 22:46:36
Message-ID: 570D7ACC.8000807@commandprompt.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

Alright -- here we go PostgreSQL 9.5.2, Ubuntu Trusty, All packages from
apt.postgresql.org except PgLogical which is from 2Q:

I have the following setup:

Origin0->Replica0
Table: logical_test(id bigserial primary key)

Origin0:

SELECT pglogical.create_node(
node_name := 'origin',
dsn := 'host=192.168.1.65 port=5432 dbname=logical'
);

CREATE TABLE logical_test (id bigserial primary key);

SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

Replica0:

SELECT pglogical.create_node(
node_name := 'replica0',
dsn := 'host=192.168.1.66 port=5432 dbname=logical'
);

SELECT pglogical.create_subscription(
subscription_name := 'replica0relations',
provider_dsn := 'host=192.168.1.65 port=5432 dbname=logical',
synchronize_structure := TRUE,
synchronize_data := TRUE
);

Replicating from Origin0->Replica0 works. I then added Replica1:

SELECT pglogical.create_node(
node_name := 'replica2',
dsn := 'host=192.168.1.67 port=5432 dbname=logical'
);

SELECT pglogical.create_subscription(
subscription_name := 'logical_subscriber2',
provider_dsn := 'host=192.168.1.66 port=5432 dbname=logical',
synchronize_data := TRUE,
synchronize_structure := TRUE
);

The initial sync works, I end up with the table and all rows. However if
I perform an update and add or modify rows, only the origin and replica0
update. Replica1 provides the following:

2016-04-12 15:38:10 PDT [25712-2] ERROR: cache lookup failed for
replication origin 'pgl_logical_origin_replica084e3989'
2016-04-12 15:38:10 PDT [1192-89105] LOG: worker process: pglogical
apply 16384:1108649370 (PID 25712) exited with exit code 1

And continues to provide this rather non-useful message continuously in
a loop.

I tried dropping the subscription:

logical=# select pglogical.drop_subscription(subscription_name :=
'logical_subscriber2');
drop_subscription
-------------------
1

And dropping the tables:

logical=# drop table logical_test;
DROP TABLE

logical=# \d
No relations found.

Then add the subscription:

SELECT pglogical.create_subscription(
subscription_name := 'logical_subscriber2',
provider_dsn := 'host=192.168.1.66 port=5432 dbname=logical',
synchronize_data := TRUE,
synchronize_structure := TRUE
);

logical=# \d
List of relations
Schema | Name | Type | Owner
--------+---------------------+----------+----------
public | logical_test | table | postgres
public | logical_test_id_seq | sequence | postgres
(2 rows)

logical=# select count(*) from logical_test;
count
-------
1100
(1 row)

That is accurate but if I try to add rows from the Origin:

logical=# truncate logical_test;
TRUNCATE TABLE
logical=# select count(*) from logical_test;
count
-------
0
(1 row)

Replica0:

logical=# select count(*) from logical_test;
count
-------
0
(1 row)

Replica2:

logical=# select count(*) from logical_test;
count
-------
1100
(1 row)

Replica2 log:

2016-04-12 15:43:39 PDT [4881-1] LOG: starting apply for subscription
logical_subscriber2
2016-04-12 15:43:39 PDT [4881-2] ERROR: cache lookup failed for
replication origin 'pgl_logical_origin_replica084e3989'
2016-04-12 15:43:39 PDT [1192-100644] LOG: worker process: pglogical
apply 16384:1108649370 (PID 4881) exited with exit code 1

So what am I missing?

Origin pg_hba.conf:

hostssl replication postgres 192.168.1.66/32 md5
hostssl logical postgres 192.168.1.66/32 md5

Replica0 pg_hba.conf:

hostssl logical postgres 127.0.0.1/32 md5
hostssl logical postgres 192.168.1.66/32 md5
hostssl logical postgres 192.168.1.67/32 md5
hostssl replication postgres 192.168.1.67/32 md5

Replica2 pg_hba.conf:

hostssl logical postgres 127.0.0.1/32 md5
hostssl logical postgres 192.168.1.66/32 md5
hostssl logical postgres 192.168.1.67/32 md5
hostssl replication postgres 192.168.1.67/32 md5

All auth is done via .pgpass.

Sincerely,

JD

--
Command Prompt, Inc. http://the.postgres.company/
+1-503-667-4564
PostgreSQL Centered full stack support, consulting and development.
Everyone appreciates your honesty, until you are honest with them.

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2016-04-12 22:50:44 Re: fd.c: flush data problems on osx
Previous Message Julien Rouhaud 2016-04-12 22:31:19 Re: Choosing parallel_degree