List:General Discussion« Previous MessageNext Message »
From:Luis Motta Campos Date:January 2 2008 4:12pm
Subject:Re: Database Migration Path / Activity List?
View as plain text  
Baron Schwartz wrote:
> On Jan 2, 2008 10:04 AM, Luis Motta Campos wrote:
>> Baron Schwartz wrote:
>>> What are the biggest changes you anticipate? I'd say they will be
>>>  the version upgrade, converting to InnoDB, and using 
>>> replication. It looks like you have planned well for all but 
>>> using replication.
>> That's interesting. What kind of activities (besides configuration,
>>  maybe?) are interesting to add?
> 
> Lots of experimentation!
> 
> Let me ask it another way: how are you planning to use replication? 
> -- for load balancing/scaling reads, backups, a hot standby machine?

OK, I guess a bit more of information can help. I have a very sensitive
database at the company, almost unprotected at the moment. It's big
hardware, lots of hot-replaceable parts, and a quite big energy
generator attached, but nothing guarantees our data between the last
backup and the present moment case the building burns down to the ground.

The database I/O activity obey the 80-20 rule: 80% reads and 20% writes.
I have an average of 80,000 read-queries per second (that's average - I
got 'nice' peaks sometimes, with 4 times more activity). We have 20,000
write-queries per second in the same database.

As we're addressing the risk of major disasters (like the building
burning down to ashes), the plan is spreading this database through the
two data centers we hire: one data center would hold the master
database, and a spare reading slave, and the other data center would
hold "the" reading slave and a spare master database.

Don't worry about connectivity issues: I have plenty of bandwidth
between those two sites, and I can ask for more. I just need to know in
advance how much to ask for, and I will surely get it.

The master/spare and slave/spare machines would be connected through
heartbeat and will keep the database in a DRDB filesystem. This will
guarantee that, in case of failure, the other machine can raise the same
IP address in it's own interface and continue operations after a short
delay.

Now, about the existing database: it runs Debian Stable, and a
pre-compiled mysql server. As I said before, it's a big machine, but
it's getting old (more than 2 years already), and must be replaced.

The system running on it is quite old, more than 10 years old. This
means that the design and implementation aren't nice. And the
maintenance added new improvements where needed (as InnoDB tables).

The basic idea is to completely re-design and re-implement the database
as soon as the new server is in place (being stability and failure
resistance the priorities fixed by management for the first stage).

>> Isn't predicting that the replication is one of the three biggest
>> changes I have in my database a bit of an exaggeration?
> 
> Definitely not.  It is a huge change.  From one server to a 
> two-server replication setup is a quantum leap.  You'll have all 
> kinds of new things to think about, such as data consistency, dealing
>  with replication lag, performance changes on the master due to 
> binary logging, etc.
> 
> It depends a lot on WHY you're using replication (see my earlier 
> question).

Well, I guess I don't need to worry about multi-master replication for
now, the application must be re-designed and re-implemented before we
can start thinking about this. It's currently quite hard to maintain,
and we don't know a lot of important things about it. There is a team
working on this already.

About data consistency, I would like to have some pointers: is this an
issue, provided that I stick to single-master architectures?

About binary logging, I must first read more about this. Thanks for the
warning, though.

Replication lag is another thing that worries me a lot - is there a
mathematical model I can use in order to forecast the expected average
replication lag?

The application can handle quite big replication lags at the moment.
It's not web-based, and there is no users directly interacting with it
at the present moment, what makes everything much simpler - you can have
a program waiting for 5 minutes to "see" a change without a lot of fuss
about it.

Sorry, I guess this email is a bit bigger than I was expecting... :(
I hope this gives you a general idea about my current problem.
Please feel free to ask more about it if you feel that this details
aren't enough.

Kind regards.
-- 
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}

Thread
Database Migration Path / Activity List?Luis Motta Campos2 Jan
  • Re: Database Migration Path / Activity List?Baron Schwartz2 Jan
    • Re: Database Migration Path / Activity List?Luis Motta Campos2 Jan
      • Re: Database Migration Path / Activity List?Baron Schwartz2 Jan
        • Re: Database Migration Path / Activity List?Luis Motta Campos2 Jan
          • Re: Database Migration Path / Activity List?Baron Schwartz2 Jan
  • Re: Database Migration Path / Activity List?Moon's Father3 Jan