Solved

Two-way MySQL replication?

Posted on 2014-02-01
6
429 Views
Last Modified: 2014-03-20
There are two web servers: server1 and server2. Server1 is the primary and server2 is the backup / redundant box.

We have failover DNS setup through DNSMadeEasy so that if there is an issue with Server1, the DNS will re-point to server2 until server1 can come back online.

Both of these servers run a single php / mysql based website.

Here's the question: if we setup MySQL replication, will that accomplish the following:

1. If server1 goes down, server2 will show up with all the content. (Content is in the database).

2. If users make changes or upload things to server2, when server1 comes back up, will the changes replicate back to server1?

Right now, the though is to use MySQL replication to replicate the data, and rsync to sync the files.

I know this can be done. the question is, what are the specifics? And, how long would it take a competent MySQL admin to set this up?
0
Comment
Question by:DrDamnit
  • 3
  • 3
6 Comments
 
LVL 34

Accepted Solution

by:
gr8gonzo earned 500 total points
ID: 39826736
I've done this exact setup before. It has other names, too:
"Dual master replication"
"Bi-directional replication"

There are several guides, but I've used this one successfully before:
http://www.neocodesoftware.com/replication/

It can take hours to set up, depending on how many databases and how much data is being replicated and the transfer speeds between servers.

The most common question for people new to this idea is, "How will I avoid primary key collisions?" The answer is that in the ini setup, you specify ID offsets so that each server inserts different IDs. Server A might insert odd-numbered IDs, while Server B inserts even-numbered IDs.

When you get into needing 3 or more servers, it's best to start considering clusters.
0
 
LVL 32

Author Comment

by:DrDamnit
ID: 39826792
It's a single database with 40 tables.

I am really only worried about the setup time. Replication time is dependent on network speeds available, etc... which I have little control over. The server receives relatively low traffic, but is mission critical to a client's business. So, it can't go down because "when we need it, we need it."
0
 
LVL 34

Expert Comment

by:gr8gonzo
ID: 39826796
Last time I set it up was about 3 years ago, so I can't remember the exact time, but I remember that when everything went perfectly, it took like 15 minutes. Usually there's always some problem, so I would count on a couple hours of troubleshooting and learning time when one step doesn't produce the intended result. It's one of those precise operations, so sometimes it takes more than one try to get it right.
0
Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

 
LVL 32

Author Comment

by:DrDamnit
ID: 39826797
Regarding primary key collisions: it should not make a difference for existing data (because the databases already have thousands of records. We should be able to setup the offsets for "new" records and avoid any sort of issue.

...that is, of course, unless someone modifies an old record with an existing ID. What happens then?
0
 
LVL 34

Expert Comment

by:gr8gonzo
ID: 39826805
That's correct. The offsets only impact NEW primary key IDs. It doesn't matter if you update an existing record on either server. The idea behind the replication is that ALL changes are copied to the other server, and both are simultaneously active (so you can make changes to either one at any time). If the one server is unavailable, the other server simply remembers the last point in time in the query log (binary log) where successful replication happened. So when server B comes back up, server A is able to send all of the activity that happened while  B was down.

That said, it is sometimes a good idea to introduce an INTENTIONAL delay in replication (if it's not in that guide, just google around - there's a way to do it). This way, if you have someone accidentally drop a table or delete data that brings down Server A, you don't replicate the deletion right away to B, and you can have that short window of time (e.g. 30 minutes or an hour) to save your butt.

For my purposes, I didn't introduce a delay but simply had my server B perform hourly, incremental backups of itself with a full daily dump.
0
 
LVL 32

Author Comment

by:DrDamnit
ID: 39944297
gr8gonzo... not sure if you saw this, but insight is invited:
http://www.experts-exchange.com/Database/MySQL/Q_28393565.html
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
PHP Sum Column in Table 3 28
resizeing PHP image 2 23
mysql left join sentence 7 22
php connect() failed error 25 17
I imagine that there are some, like me, who require a way of getting currency exchange rates for implementation in web project from time to time, so I thought I would share a solution that I have developed for this purpose. It turns out that Yaho…
Does the idea of dealing with bits scare or confuse you? Does it seem like a waste of time in an age where we all have terabytes of storage? If so, you're missing out on one of the core tools in every professional programmer's toolbox. Learn how to …
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now