Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is database replication the way to go to keep production and development databases in sync?

I am not a DBA; however, my small company is using SQL Server for a project that we are working on. On the same SQL Server instance there is a MS Great Plains (Dynamics GP) database - as we pass data back and forth between the two databases (mainly a scribe process getting our data and transferring it into GP).

We are using database replication (snapshot) as a means of syncing our production and development (and soon DR) environments. Right now its set to replicate every three hours during core business hours - mainly to keep production and development up to date for us while we are working.

1) Is this the correct way of doing such a thing? Is there a better way? 2) Does this stress the server or the SQL Server? Is this a possible cause of GP database issues because they are on the same server and instance? 3) Replication only occurs on the non GP database - this shouldn't affect the GP database at all right?

Our database should stay rather small. In doing the snapshot, it is my understanding that tables get locked while the replication is going on. Do the tables stay locked until the entire replication is done or are they off loading after they are completed as the process continues?

like image 215
jharr100 Avatar asked Apr 09 '14 23:04

jharr100


2 Answers

There are many ways to sync a SQL Server with another. There is replication which you are currently using, log shipping, backup/restore, mirroring, and Always On to name a few methods.

The "best" method depends on your requirements. If you're concerned about disaster recovery, snapshot replication is not a great option and I would look into AlwaysOn Availability Groups.

If load on your production system is a concern I would look into nightly restoring a backup of the production system.

To answer your specific questions:
1) Is this the correct way of doing such a thing? Is there a better way?
This answer depends on your exact requirements

2) Does this stress the server or the SQL Server?
Doing something is always more work than doing nothing. Depending on many factors this could affect your production server.

3) Replication only occurs on the non GP database - this shouldn't affect the GP database at all right?
Your server only has a finite amount of hardware resources. It could affect the performance of queries against the GP database

like image 183
Cory Avatar answered Sep 19 '22 05:09

Cory


We have found that having replication in place also adds complexity when it comes to upgrades and schema changes. If you must have dev and prod in sync (and I would argue about that) Always On or log shipping would be my preferred techniques.

DR is a separate issue. You have to determine your Recovery Point Objective (RPO) and Recovery Time Objective (RTO) and adopt the appropriate technology to satisfy your requirements.

like image 23
Michael Green Avatar answered Sep 20 '22 05:09

Michael Green