pglogical in postgres 9.6
Hello. I'm trying to get pglogical setup between 2 postgres 9.6 instances.
I can get everything replicating over fine, my problem is that I can't seem
to get it to work in the mode where it does not try to copy all the data
over initially. On the source side, I'm doing this:
psql -U hireology -d $SRCDB -c "SELECT pglogical.create_node( node_name :=
'${SRCNODE}', dsn := 'host=localhost port=${SRCPORT} dbname=${SRCDB}
user=logical_replication')"
psql -U hireology -d $SRCDB -c "select
pglogical.create_replication_set('dw_repl', true, true, true, true)"
psql -U hireology -d $SRCDB -c "select pglogical.replication_set_add_table
('dw_repl', 'accounts', false)"
psql -U hireology -d $SRCDB -c "select pglogical.replication_set_add_table
('dw_repl', 'organizations', false)"
psql -U hireology -d $SRCDB -c "select
pglogical.replication_set_add_sequence ('dw_repl', 'accounts_id_seq',
false)"
psql -U hireology -d $SRCDB -c "select
pglogical.replication_set_add_sequence ('dw_repl', 'organizations_id_seq',
false)"
Note on the replication_set_add_table command, I'm sending false as the
third parameter which should tell it to not copy over the initial data. But
when I create the subscription on the target side, I can see in the logs
where it is issuing the copy command. And since I have the data already
there, I get duplicate key errors and it bombs out. Any suggestions?
Thanks,
Greig Wise
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
On 02/12/2018 02:11 PM, greigwise wrote:
Hello. I'm trying to get pglogical setup between 2 postgres 9.6 instances.
I can get everything replicating over fine, my problem is that I can't seem
to get it to work in the mode where it does not try to copy all the data
over initially. On the source side, I'm doing this:psql -U hireology -d $SRCDB -c "SELECT pglogical.create_node( node_name :=
'${SRCNODE}', dsn := 'host=localhost port=${SRCPORT} dbname=${SRCDB}
user=logical_replication')"psql -U hireology -d $SRCDB -c "select
pglogical.create_replication_set('dw_repl', true, true, true, true)"psql -U hireology -d $SRCDB -c "select pglogical.replication_set_add_table
('dw_repl', 'accounts', false)"
psql -U hireology -d $SRCDB -c "select pglogical.replication_set_add_table
('dw_repl', 'organizations', false)"
psql -U hireology -d $SRCDB -c "select
pglogical.replication_set_add_sequence ('dw_repl', 'accounts_id_seq',
false)"
psql -U hireology -d $SRCDB -c "select
pglogical.replication_set_add_sequence ('dw_repl', 'organizations_id_seq',
false)"Note on the replication_set_add_table command, I'm sending false as the
third parameter which should tell it to not copy over the initial data. But
when I create the subscription on the target side, I can see in the logs
where it is issuing the copy command. And since I have the data already
there, I get duplicate key errors and it bombs out. Any suggestions?
I don't know what is going on, but for those that might the pglogical
version you are using might be helpful.
Thanks,
Greig Wise--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
--
Adrian Klaver
adrian.klaver@aklaver.com
I downloaded it from git and compiled from source just today.
Looks like it's 2.0.0 based on the pglogical.control file that was in the
source. I'm not sure how else I'd know.
Greig
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
I downloaded from git and compiled from source. Based on the
pglogical.control file, it appears to be 2.0.0. Is there a better way to
determine the version?
Thanks,
Greig
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
On 02/12/2018 04:46 PM, greigwise wrote:
I downloaded from git and compiled from source. Based on the
pglogical.control file, it appears to be 2.0.0. Is there a better way to
determine the version?
In psql do:
\dx
Thanks,
Greig--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
--
Adrian Klaver
adrian.klaver@aklaver.com
On 02/12/2018 04:46 PM, greigwise wrote:
I downloaded from git and compiled from source. Based on the
pglogical.control file, it appears to be 2.0.0. Is there a better way to
determine the version?
Should have added that you need run the \dx in the database you
installed pglogical into.
Thanks,
Greig--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
--
Adrian Klaver
adrian.klaver@aklaver.com
hireology_tmp=# \dx
List of installed extensions
Name | Version | Schema |
Description
------------------+---------+------------------+--------------------------------------------------------------------
pglogical | 2.0.0 | pglogical | PostgreSQL Logical
Replication
pglogical_origin | 1.0.0 | pglogical_origin | Dummy extension for
compatibility when upgrading from Postgres 9.4
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
On 02/12/2018 06:09 PM, greigwise wrote:
hireology_tmp=# \dx
List of installed extensions
Name | Version | Schema |
Description
------------------+---------+------------------+--------------------------------------------------------------------
pglogical | 2.0.0 | pglogical | PostgreSQL Logical
Replication
pglogical_origin | 1.0.0 | pglogical_origin | Dummy extension for
compatibility when upgrading from Postgres 9.4
To get an answer you might to file an issue here:
https://github.com/2ndQuadrant/pglogical/issues
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
--
Adrian Klaver
adrian.klaver@aklaver.com
No need! I figured it out.
Had to put this "synchronize_data := false" on the create_subscription call.
Weird that there seem to be redundant parameters for this; one on the
replication set add and one on the create subscription. Maybe I'm not quite
understanding the usage on those or something. If anyone knows the
difference, I'd be interested to hear.
Greig
--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html
On Tue, Feb 13, 2018 at 1:46 PM greigwise <greigwise@comcast.net> wrote:
No need! I figured it out.
Had to put this "synchronize_data := false" on the create_subscription
call.
Weird that there seem to be redundant parameters for this; one on the
replication set add and one on the create subscription. Maybe I'm not
quite
understanding the usage on those or something. If anyone knows the
difference, I'd be interested to hear.Greig
--
Sent from:
http://www.postgresql-archive.org/PostgreSQL-general-f1843780.htmlYes. When you add a subscription with sync = true, then all tables in the
replication set(s) will be synced. But suppose you want to add a table
later to the replication set. Sync = true will sync only that one table. So
the latter is more granular.
Jeremy