Last November we announced that we were using cgroups on our shared servers to protect users from each other and get rid of the “bad neighbor problem”. This works great but there is still one potential problem: many apps on a server use the shared MySql instance on that server and one user can still use more MySql resources than their fair share and therefore affect all other users on that MySql instance.
To fix that problem we have added another application to our one-click installer: a private MySql instance. This sets up a private MySql instance running as your user on the server. A few points about this instance:

  • It uses the globally installed MySql binaries and libraries. This means that if a security hole is found in that version of MySql we apply the patch for you and you don’t have to do anything.
  • On Centos-6 servers (web300 and over) it runs MySql-5.5 and on Centos-5 servers it runs MySql-5.0.
  • The MySql configuration files and data files are owned by you and the MySql processes run as you. This means that you have full control over your MySql instance: you can configure it however you like and you can stop it and start it whenever you like.
  • By default you get a cronjob that monitors your MySql instance every 20 minutes and restarts it if it’s down.
  • By default you get a cronjob that dumps all the databases in that instance every 24h and another one that deletes these dumps after a week. This is because MySql recommends backing up a dump of your databases rather than directly backing up the MySql data files.
  • Note that a private MySql instance can use between 50MB and hundreds of MBs of memory depending on how it’s configured and how much data you’re storing. So if you’re going to use it for anything non-trivial we recommend getting at least 512MB of memory on your account or using one of our new 1GB, 2GB or 4GB plans.