Hooray! http://code.google.com/p/mysql-master-master/

Am I crazy to be considering replicating 500+ databases? I think so...

On Tue, Feb 10, 2009 at 12:11 PM, Michael Addyman <
michael.addy...@googlemail.com> wrote:

> Walter, this is exactly why we went for separate application instances
> initially - it is the most flexible solution for scaling.
>
> However, we have since discovered that it's actually a lot more work to
> manage than we anticipated!
>
> We would love to continue using separate application instances (allowing us
> to move instances around depending on load), but setting up and maintaining
> replication is very time consuming.
>
> Does anyone know of any scripts / tools to ease replication / clustering
> setup / administration / maintenance?
>
> Thanks again,
>
> Michael
>
>
> On Tue, Feb 10, 2009 at 11:48 AM, Walter Heck <li...@olindata.com> wrote:
>
>> I think it would be good to think about scaling a bit more. What if
>> your requirements change from 500 application instances to 5000
>> instances? It is good to go with a solution now that can easily scale
>> over to multiple servers. Also, it would probably be good if you could
>> move databases over to other database servers when they require more
>> (or less) peformance.
>>
>> From these two requirements I would at least put every instance in
>> it's own database. That way, if you develop an easy way to move a
>> database over to another server easily and automated, you have an
>> extremely scalable approach. Then, you could have each database server
>> tuned the same way and just kind of "load balance" them by moving
>> databases from one server to another. If you don't want to change the
>> application's configuration every time a database moves to another
>> server, you could look at a simple MySQL proxy installation to hide
>> the server a database is on from the client application.
>>
>> These are my 2 cents :)
>>
>> Walter
>>
>> OlinData: Professional services for MySQL
>> Support * Consulting * Administration
>> http://www.olindata.com
>>
>>
>>
>> On Tue, Feb 10, 2009 at 12:39 PM, Michael Addyman
>> <michael.addy...@googlemail.com> wrote:
>> > Thanks for your comments Mike.
>> >
>> > 1. The largest table has 48 columns, the second largest 20 columns, and
>> the
>> > remainder less than 10 columns.
>> >
>> > 2. Each application instance (~30 tables) is between 50MB and 1GB.
>> >
>> > 3. Application instances are separate for many reasons including
>> > infrastructure/scaling flexibility and security.
>> >
>> > 4. Transactions and row locking are required.
>> >
>> > 5. Mostly writes, closely followed by updates, then reads
>> (out-of-database
>> > caching handles most reads)
>> >
>> > I have now thought of having 1 table type per database (i.e. ~30
>> databases).
>> > This would be easier and cheaper to manage than hundreds of databases,
>> and
>> > would also allow databases to be finely tuned to the table type, size,
>> > workload and writes : updates : reads ratio.
>> >
>> > However, re-developing the database layer to achieve this looks
>> incredibly
>> > difficult.
>> >
>> > An easy solution would be to have ~100 instances per database, resulting
>> in
>> > ~3000 tables per database, and ~5 database clusters.
>> >
>> > I think my final suggestion is the most suitable.
>> >
>> > What would your recommendations be?
>> >
>> > Many thanks
>> >
>> > Michael.
>> >
>> > On Tue, Feb 10, 2009 at 6:01 AM, mos <mo...@fastmail.fm> wrote:
>> >
>> >> At 05:03 PM 2/9/2009, Michael Addyman wrote:
>> >>
>> >>> Dear Geniuses,
>> >>>
>> >>> I have an application requiring ~30 InnoDB tables, which needs to
>> scale up
>> >>> to at least 500 application instances (500 instances * ~30 tables =
>> 15,000
>> >>> tables).
>> >>>
>> >>
>> >> Some of the questions people are going to ask are:
>> >> How large are each of the 30 tables?  # of rows and physical size?
>> >> What's the reason for having 500 separate application instances?
>> Security?
>> >> You're using InnoDb because you need transactions? Row locking?
>> >> What percentage of the queries will be updates compared to reads?
>> >>
>> >>  Discussions in the archives suggest I would be better off having
>> >>> independent
>> >>> databases for each of the application instances (i.e. 500 databases).
>> >>>
>> >>> However, it seems this would be much more difficult/expensive to
>> >>> manage/replicate/cluster than a single large database containing
>> 15,000
>> >>> tables.
>> >>>
>> >>> Storing all the data from all the application instances in ~30 large
>> >>> tables
>> >>> is not possible.
>> >>>
>> >>> Please could you give me your recommendations and experience?
>> >>>
>> >>
>> >> By creating 500 separate instances you are of course creating 500x the
>> >> amount of work.
>> >>
>> >> Mike
>> >>
>> >> --
>> >> MySQL General Mailing List
>> >> For list archives: http://lists.mysql.com/mysql
>> >> To unsubscribe:
>> >> http://lists.mysql.com/mysql?unsub=michael.addy...@gmail.com
>> >>
>> >>
>> >
>>
>
>

Reply via email to