A while ago, I posted the following regarding a currently large Moodle implemtnation that we are trying to 'upgade':
Well, its been months and I have learned a lot mainly through personal experience and the Moodle forums here. While we have all the physical resources to accomplish this, I am affraid we lack the technical expertise to proceed. Our team consist of myself and myself alone, and while I am willing to learn everything I need to do (i.e. corresponding technologies to enable HA, etc.) there has been something in particular I have been having some issues with. We want to use MySQL (as the company will be purhcashing an Enterprise edition of MySQL); however, I feel as if a lot of our issues as of late are all MySQL related. I have looked into a load balanced MySQL enviornment; however, the only thing that ever comes up is MySQL Cluster (which Moodle doesn't play well with to begin with). The two SQL servers we have are currently overloaded, and future plans are make one giant Moodle instance as opposed to all the individual silos we currently operate. From a DB perspective this will become one giant DB. Replication, etc. is not really my concern atm as I have succesfully configured that with hearthbeat. I am more affraid that if we are having issues with DB time outs and general performance issues with segrated DB's across multiple SQL servers, how one giant instance is going to work. Tuning will only accomplish so much...
Any tips for MySQL loadbalancing in very large implemtations?
Christopher L. Medina
It sounds a lot like you should be engaging a Moodle Partner to help you with this - what happens to Moodle if you got a better job offer elsewhere - having such a complex environment with only one person with the knowledge supporting it is quite a high risk for your organisation.
Most Moodle partners have a lot of experience in high-load environments - I work for the Moodle Partner Catalyst IT and we have offices in UK/AU/NZ - feel free to drop me an e-mail if there's anything we can do to help. You can also see a list of Moodle partners here:
Moodle isn't really set up to work with mysql clusters - you're much better off having a single (well tuned) DB server on the biggest hardware you can source. - then some form of backup/failover db as it sounds like you already have.
Thank you for your responce. If I am not mistaken I attempted to contact Catalyst IT a few months ago in regards to our situation (I think, I'm not entirely sure). Either way, this may be something I should try and convince my boss to do. Currently the Moodle partners that I have contacted don't really offer assistance in 'self hosting' solutions. The ones that I have spoken to thus far (I won't mention any names) say that hosting and the technologies used to support a well oil hosted enviornment is there 'bread and butter'. I have heard some of them say that they have plans to start working on programs to assist with self hosted solutions, but I digress...
Either way, thank you for the information. I guess based off the information you provided that our MySQL configuration is not fine tuned enough to be able to handle all of our users. I will look more into this and see what I can find. In anyone's experience what does it take to max out a MySQL server? Our enviornment in particular consist of 2 primary MySQL VM's with the following specs:
6 Gigs of Ram
Plenty of SAN storage
Between these two serverse, we distribute all of our Moodle sites (currently each on seperate Schemas / DB's).
There are a lot of concurrent users, and quite a lot going on (i.e. quizes, and a few custom modules for plagerism checking, etc.) As stated before we are currently have what appears to be MySQL issues, and my concern is attempting to setup one Giant Moodle site (which would have one giant MySQL DB) would carry over these issues. I will keep looking into tuning the MySQL servers, and see if this will help.
Christopher L. Medina
Just curious, have you tried using SSD drives yet?
If your DB is taking a hit, I might suggest trying a RAID10 array with SSD. (depending on storage requirements)
- no latency
- huge IOPS
Provided this is your bottleneck!
How does this work:
2 MySQL servers?
Also why can't you loadbalance/cluster provided they are in the same datacenter with low latency?