Thread: Copying only incremental records to another DB..

Copying only incremental records to another DB..

From
Phoenix Kiula
Date:
Hi

We're trying PG on a new machine, so we copied our current (live)
database to that server. Tested the code and it's all working. Now, to
make that second server the main live server, we will need to copy the
db again including the new records since we copied for testing. Is
there any way to copy only the incremental records in all the tables?

Thanks

Re: Copying only incremental records to another DB..

From
Arndt Lehmann
Date:
On Jun 29, 1:10 pm, phoenix.ki...@gmail.com (Phoenix Kiula) wrote:
> Hi
>
> We're trying PG on a new machine, so we copied our current (live)
> database to that server. Tested the code and it's all working. Now, to
> make that second server the main live server, we will need to copy the
> db again including the new records since we copied for testing. Is
> there any way to copy only the incremental records in all the tables?
>
> Thanks
>
> --
> Sent via pgsql-general mailing list (pgsql-gene...@postgresql.org)
> To make changes to your subscription:http://www.postgresql.org/mailpref/pgsql-general

Hi Phoenix,

you could try using the tool "rubyrep". With rubyrep you can compare
one or multiple tables between databases and synchronize all changes.
    http://www.rubyrep.org

Best Regards,
  Arndt

Re: Copying only incremental records to another DB..

From
Scott Ribe
Date:
Shut down the postmasters and rsync. (Assuming same architecture & build
options...)

--
Scott Ribe
scott_ribe@killerbytes.com
http://www.killerbytes.com/
(303) 722-0567 voice



Re: Copying only incremental records to another DB..

From
Phoenix Kiula
Date:
On Tue, Jun 30, 2009 at 11:21 PM, Scott Ribe<scott_ribe@killerbytes.com> wrote:
> Shut down the postmasters and rsync. (Assuming same architecture & build
> options...)
>



You mean rsync the "data" folder, or the entire PG folder?

Architecture may be the same (same processor) but the setup is a touch
different: SCSI hard disks instead of SATA, and RAID10 instead of
RAID1. Plus, the version of PG is different: this is 8.2.9, that is
8.4.

Will this be a challenge?

Re: Copying only incremental records to another DB..

From
Scott Ribe
Date:
> You mean rsync the "data" folder, or the entire PG folder?

I meant the data folder.

> Will this be a challenge?

Yes, if you're using different major PG releases, then the data files are
not binary compatible.

--
Scott Ribe
scott_ribe@killerbytes.com
http://www.killerbytes.com/
(303) 722-0567 voice



Re: Copying only incremental records to another DB..

From
Alban Hertroys
Date:
On 29 Jun 2009, at 6:10, Phoenix Kiula wrote:

> Hi
>
> We're trying PG on a new machine, so we copied our current (live)
> database to that server. Tested the code and it's all working. Now, to
> make that second server the main live server, we will need to copy the
> db again including the new records since we copied for testing. Is
> there any way to copy only the incremental records in all the tables?


It would be nice if there were a tool that could do a diff between two
dumps resulting in a new dump with just the statements necessary to
apply the differences. I don't think there is such a tool yet though
(some light Googling does bring up such a tool for sqllite).
Implementing it does have a few challenges, changes to records with
foreign keys for example.

Barring the availability of such a tool, there are some tools out
there that can 'diff' two XML files and, seeing that the xml module
can export tables to a pre-defined XML format, you may be able to do
something using that. What to do with the resulting XML file is
another story, some XSLT could probably turn it back into SQL again.

If the changes aren't many you could probably also work from the
results of a normal diff from two text-dumps and glue them back
together into a usable dump file. Or just apply the changes by hand...

All of these methods involve a bit of work and none is foolproof
(unless the dump-diff tool does exist), but if approached well it
could result in a rather useful tool.

Alban Hertroys

--
If you can't see the forest for the trees,
cut the trees and you'll see there is no forest.


!DSPAM:737,4a6995d910131993413858!



Re: Copying only incremental records to another DB..

From
Thomas Kellerer
Date:
Alban Hertroys, 24.07.2009 13:07:
> It would be nice if there were a tool that could do a diff between two
> dumps resulting in a new dump with just the statements necessary to
> apply the differences. I don't think there is such a tool yet though
> (some light Googling does bring up such a tool for sqllite).
> Implementing it does have a few challenges, changes to records with
> foreign keys for example.

You might want to have a look at my SQL Workbench/J

It has a command that can compare the data of two databases for differences and can write the necessary DML statements
toupdate the target database to match the data from the source.  

Details can be found here:
http://www.sql-workbench.net/manual/wb-commands.html#command-data-diff

As it does not compare two dumps, but the databases directly, tt requires that connections can be made to both
databasesat the same time (so it's not possible to do an "offline-diff") 

Feel free to contact me if you have any questions (support email address is on the homepage).

Regards
Thomas

Re: Copying only incremental records to another DB..

From
Craig Ringer
Date:
Scott Ribe wrote:
>> You mean rsync the "data" folder, or the entire PG folder?
>
> I meant the data folder.
>
To be clearer: Do you mean that the folder you backed up is the folder
with the file "PG_VERSION" in it, and all its contents?

--
Craig Ringer

Re: Copying only incremental records to another DB..

From
Tom Lane
Date:
Craig Ringer <craig@postnewspapers.com.au> writes:
> To be clearer: Do you mean that the folder you backed up is the folder
> with the file "PG_VERSION" in it, and all its contents?

Careful --- there are multiple PG_VERSION files scattered around in a
Postgres data directory tree.  Your comment is correct with respect
to the topmost one, but I'm not certain it's a foolproof definition
of "the data directory".

            regards, tom lane

Re: Copying only incremental records to another DB..

From
Scott Ribe
Date:
> To be clearer: Do you mean that the folder you backed up is the folder
> with the file "PG_VERSION" in it, and all its contents?

In my case, yes, because I can copy the config files as well. In general, I
was thinking of the folder passed to postmaster via -D. But of course if you
don't want to copy some config files, or you have some table spaces off on
another volume, you may need to do something a little more involved.

--
Scott Ribe
scott_ribe@killerbytes.com
http://www.killerbytes.com/
(303) 722-0567 voice



Re: Copying only incremental records to another DB..

From
Alvaro Herrera
Date:
Scott Ribe escribió:
> > To be clearer: Do you mean that the folder you backed up is the folder
> > with the file "PG_VERSION" in it, and all its contents?
>
> In my case, yes, because I can copy the config files as well. In general, I
> was thinking of the folder passed to postmaster via -D. But of course if you
> don't want to copy some config files, or you have some table spaces off on
> another volume, you may need to do something a little more involved.

Actually it might be more complicated even if you don't have any
tablespace, if your config file specifies a data_directory other than
the default one.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.