Thread: Postgresql 8.4 replication using Londiste

Postgresql 8.4 replication using Londiste

From
"Maria L. Wilson"
Date:
Interested in using Londiste to set up replication of only one column in
a particular database to another database on a remote Postgres server.
I've installed and configured londiste on the servers - that was no
problem.  I just don't see anything in the docs that specify how to
replicate only one column - not the entire table.  Anybody out there
have any expertise in this that can point me in the right direction?

thanks!
Maria Wilson
NASA/Langley Research Center
Hampton, Virginia 23666

Re: Postgresql 8.4 replication using Londiste

From
Craig James
Date:
On 6/8/11 12:39 PM, Maria L. Wilson wrote:
> Interested in using Londiste to set up replication of only one column in a particular database to another database on
aremote Postgres server.  I've installed and configured londiste on the servers - that was no problem.  I just don't
seeanything in the docs that specify how to replicate only one column - not the entire table.  Anybody out there have
anyexpertise in this that can point me in the right direction? 
Londiste is a table-level replicator.

You might be able to create one table with the column you want replicated (plus a primary key), another table with the
restof the columns, and a view to give your app the original view.  Even so, you have to replicate the one column plus
thePK, unless the data you're replicating is unique and can be its own PK. 

On the other hand, I've noticed that Londiste doesn't know when you change a table.  You might be able to create your
one-columntable (plus PK), start replication with Londiste, then do ALTER TABLE to add the rest of the columns.  A hack
forsure. 

Craig

Re: Postgresql 8.4 replication using Londiste

From
Dimitri Fontaine
Date:
"Maria L. Wilson" <Maria.L.Wilson-1@nasa.gov> writes:
> Interested in using Londiste to set up replication of only one column in a
> particular database to another database on a remote Postgres server.  I've
> installed and configured londiste on the servers - that was no problem.  I
> just don't see anything in the docs that specify how to replicate only one
> column - not the entire table.  Anybody out there have any expertise in this
> that can point me in the right direction?

That's supported in skytools3, currently in release candidate status.

Those are the arguments you can give to the add table command:

  londiste <ini> provider add table --trigger-arg ...

-- Optinal arguments:
--      SKIP                - The actual operation should be skipped (BEFORE trigger)
--      ignore=col1[,col2]  - don't look at the specified arguments
--      pkey=col1[,col2]    - Set pkey fields for the table, autodetection will be skipped
--      backup              - Put urlencoded contents of old row to ev_extra2
--      colname=EXPR        - Override field value with SQL expression.  Can reference table
--                            columns.  colname can be: ev_type, ev_data, ev_extra1 .. ev_extra4
--      when=EXPR           - If EXPR returns false, don't insert event.

Regards,
--
Dimitri Fontaine
http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et Support

Re: Postgresql 8.4 replication using Londiste

From
Dimitri Fontaine
Date:
Craig James <craig_james@emolecules.com> writes:
> On the other hand, I've noticed that Londiste doesn't know when you change a
> table.  You might be able to create your one-column table (plus PK), start
> replication with Londiste, then do ALTER TABLE to add the rest of the
> columns.  A hack for sure.

And it stopped working somewhere in the 2.1 branch, I would guess by
2.1.9 from memory.  Now the trigger notices when you ALTER TABLE and
will queue events with the new columns by itself.  Well, that might also
depend on which trigger you use, but the default one is now smart
enough.

Skytools3 ahead! :)

Regards,
--
Dimitri Fontaine
http://2ndQuadrant.fr     PostgreSQL : Expertise, Formation et Support