What is database replication?

A database replicator is a piece of software that continuously records all changes made to one database and applies them to another database. This can be done in both directions or only in one direction, depending on the specific requirements.

What would I want to use replication for?

Here are a few examples of ways in which database replication can be useful :

Mobility

smartphone

Have you ever wanted to have a copy of the database server on your laptop, so you can work at home or on the road? Database replication is the solution! A replication system will allow an itenerant worker to have access to client data at all times without needing any internet connection. A simple synchronization at the end of the day will allow all the changes made during the day to be merged into the production database.

Inter-site synchronization

synchroniser Conditional replication — using per-table filtering — can allow inter-site synchronization : each site can be given access to only their own data, while all data can be merged together into mother site’s database. And other combinations are of course possible, depending on the specific requirements of your situation.

Webite backup and updating

backup Whether CMS, forum or blog (Joomla, PhpBB, WordPress, CMS Made Simple,¬†etc…), many websites store their data in a database (usually MySQL on PHP). Replication can provide a simple way to either have a regular backup of the website’s data (without needing to download the whole database file), or on the other hand, it can allow you to make changes to a local test copy of the database, before uploading them to the production website. As CopyCat supports MySQL, it would be easy to setup a replication tool for easily managing your websites.

Live database mirroring

Mirror your production database to another, so as to have an effective fail-over strategy in case one of the database servers goes down. This could also be used as a form of incremental backup.  

Load balancing

Two or more databases can be set up to replicate to each other or to a centralized database server, so as to balance the load of data serving or editing over serveral machines.