On Fri, Jun 01, 2001 at 10:00:01AM -0700, Kenneth Kopelson wrote:
>
> I am hoping there are people who use MySQL for serious business
> applications on this list.

We're occasionally serious here. Other times, it just depends on the
sort of mood that people seem to be in. :-)

(I just think it's dangerous to equate "expert" and "serious business"
given what I've seen at some companies...)

> HERE IS MY QUESTION:
> 
> I have need for multiple servers to share the same database files.

Instead of replication?

Folks have done that before. Often times they'll put the data files on
a Netapp and point a cluster of MySQL servers at it. It's VERY
important, of course, to have really fast (switched) network
connections between the MySQL servers and the Netapp.

> We are implementing a site that will have hundreds of thousands of
> users at the same time, so we need a large pool of Linux servers
> that are load-balanced.

That is a lot of users. How many simultaneous MySQL sessions to you
think that will equate to? Will you have some sort of connection
pooling at the application layer?

> Then, all these servers, each of which will run Apache and MySQL (or
> another database if MySQL just can't handle the load), needs to
> access the single large RAID disk array through a giga-bit network
> connection.

Why not separate the Apache servers from the MySQL servers? It would
seem to be easier to scale that way.

> Certainly, this is not uncommon, as any large database driven
> website needs to have a similar setup (like eBay, Microsoft, Apple,
> Amazon, etc.).

You'd be surprised. Some rather high-traffic sites have been able to
get away with a single monster database server that had lots of
clients talking to it. I don't know that should say who this
particular example is, but they managed to handle a lot of traffic
using this model with [gasp!] Oracle.

> The servers need to be setup in a cluster to provide the required
> high-availability.  Also, replication will NOT work, as we need
> changes to the database to be immediately available to everyone
> else, and managing 100 or more replicated databases would be a
> nightmare.

You're going to really need 100 servers?

> So, how do we get support in MySQL so that multiple instances of the
> mysqld daemon running on separate machines can all access the same
> database files located on a central server?  I can see how the file
> system of the central database server could be exported through NFS
> (or something similar) so that all the machines in the cluster can
> access the database files.  I also imagine the daemons would need to
> have some sort of locking mechanism to avoid stepping on each other.

You'll find a very brief mention of what you need to know here:

  http://www.mysql.com/doc/S/y/System.html

What this documentation doesn't say, however, is that this model
really only works with MyISAM tables. I'm pretty sure it doesn't do
you any good with InnoDB, BDB, or Gemini tables. And those are the
ones whith more granular locking and better performance in heavy
update situations.

If you can tolerate a small amount of latency in propogating updates,
you could have a single (very beefy) master server which only gets the
update queries and many slaves which you can load balance the read
queries across. The master probably ought to be a many-CPU Solaris or
Linux box, given the sort of loads you're talking about.

If you can keep the updates on a single server, you'd be able to use
InnoDB or Gemini tables, which should give you good update
performance.

Just some ideas...

[Grr. ispell just decided not to work right. Sorry for any horrible
spelling in this note...]

Jeremy
-- 
Jeremy D. Zawodny, <[EMAIL PROTECTED]>
Technical Yahoo - Yahoo Finance
Desk: (408) 349-7878    Fax: (408) 349-5454    Cell: (408) 439-9951

MySQL 3.23.29: up 8 days, processed 50,950,321 queries (67/sec. avg)

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to