We are currently running moodle with multiple front-end webservers (serving out of a shared storage SAN) and a networked MySQL server on the back-end. The load on our MySQL server is getting a little high* during peak usage (multiple classes in labs taking tests simultaneously), and we're planning on aggressive growth over the next few years. We've got some money ear-marked for upgrades this year, but given the coming budget shortfalls in the state of California, we're not expecting to have the fiscal resources for upgrade over the next few years.
We're planning on rolling out a MySQL cluster to replace our current single-server database**. We'll be rolling this out in 3-4 months, but wisdom (obtained through last minute panic, admittedly) suggests we should begin our planning now. I'm attaching a graphic to show the current proposal (since a picture is worth a thousand words, it should explain things better than I can). We're planning on using MySQL 5.1, as it should be finalized by then. The blue lines indicate a 1GB ethernet network, and the green lines denote our 1GB Fibre Channel SAN links.
Does anyone else have experience upgrading to a MySQL cluster, and can you offer any advice on either: a) things to do, or just as importantly, b) things to avoid?
Thanks in advance!
- Kevin Metcalf
* Our scraping of the CPU usage over time shows we are above 80% utilization during peak times. This usage spans 5-10 consecutive minutes, which tends to make me nervous.
** Technically, we have a master-slave replicator setup, but we only use the slave for backups (you don't have to take the master down), and for "emergency promotion" should the master ever fail.
I don't have much experience in clustering but at San Francisco State we were running into similar performance problems. I also just attended the mysql conference up here in santa clara and as great as clustering is, it's not the recommendation in most cases. The takeaway I got is that unless your database is running thousands of queries per second than vertical scaling is likely a better solution.
Can I ask briefly, are you on myISAM or InnoDB? Have you done much performance tunning or are you out of the box? How big are your largest tables, likely quiz and log releated? What portion of your CPU load is spent on disk I/O?
The solution we came to at SFSU was to switch from myisam to INNODB and throw a whole bunch of RAM at the buffer_pool. By installing enough RAM to cover the whole database, minimum 15 gigs in our case, we made it so every table could exist in memory. Now writes occur to disk only for ACID compliance. There were a lot of other factors and issues to consider and I'm trying to write up something longer for this forum or another, but I'd be happy to talk to you about them.
In any case,
I'd recommend reading up here:
I know this is quite an old post, and this is probably a shot in the dark; however, I seem to be struggling to find some relevant info on how to proceed with a project that I am working on. I don't know if you still check the Moodle forums or what.
Essentially, my organization would like to move to Moodle 2.0 from our currently existing mixed 1.8 - 1.9 farm. We have a very disorganized and poorly pieced together environment (from what I can tell), and was essentially looking for guidance on how to proceed. I was looking MySQL clustering, etc. to attempt to establish a MySQL HA solution for our Moodle farm; however, from what I have read this is not the way to go with Moodle.
My understanding is that SFSU is ran like a well-oiled machine, so if you could assist with some manner of guidance in any way shape or form it would be much appreciated.
If you would like to you may email me at my personal email address:
You're post got me thinking more about mysql cluster and testing it out myself. It's a fun tool and I think you could see a good setup with moodle on it. But I'm still scared of some of the customizations and performance bottlenecks that appear when switching to this type of system. Anyway there is a good whitepaper from mysql about cluster and evaluating when/where to use it and how to do a basic setup. I'd recommend taking a look at it if you haven't already. I found it very informative:
Has anyone else tried NDB clustering with Moodle 1.9?