How to synchronize development and production database

Viewed 19223

Do you know any applications to synchronize two databases - during development sometimes it's required to add one or two table rows or new table or column. Usually I write every sql statement in some file and during uploading path I evecute those lines on my production database (earlier backing it up). I work with mySQL and postreSQL databases.

What is your practise and what applications helps you in that.

13 Answers

For PostgreSQL you could use Another PostgreSQL Diff Tool . It can diff two SQL Dumps very fast (a few seconds on a db with about 300 tables, 50 views and 500 stored procedures). So you can find your changes easily and get a sql diff which you can execute.

From the APGDiff Page:

Another PostgreSQL Diff Tool is simple PostgreSQL diff tool that is useful for schema upgrades. The tool compares two schema dump files and creates output file that is (after some hand-made modifications) suitable for upgrade of old schema.

Have scripts (under source control of course) that you only ever add to the bottom off. That combined with regular restores from your production database to dev you should be golden. If you are strict about it, this works very well.

Otherwise I know lots of people use redgate stuff for SQLServer.

If you write your SQL statements for your development database (which are, I imagine, series of DDL instructions such as CREATE, ALTER and DROP), why don't you keep track of them by recording them in a table, with a "version" index? You will then be able to:

  1. track your version changes
  2. make a small routine allowing the "automatic" update of your production database by sending the recorded instructions to the database.

I really like the EMS tools.

There tools are available for all popular DB's and you have the same user experience for every type of DB.

One of the tools is the DB Comparer.

Siebel (CRM, Sales, etc. management product) has a built-in tool to align the production database with the development one (dev2prod).

Otherwise, you've got to stick with manually executed scripts.

Navicat has a structure synchronisation wizard that handles this.

I solve this by using Hibernate. It can detect and autocreate missing tables, columns, etc.

Related