MySQL is a great database server. It has lots of flaws, but if
you work with its strong points and try to minimize its
weaknesses, it works fantastically well for a lot of use cases.
Unfortunately, if you bang on its weak points, sometimes you get
hit by falling bricks.
A couple of its riskiest weak points relate to unavailability of
an expected resource, particularly disk space and memory. For
example, Stewart Smith has blogged about the interesting results
you can get if you intentionally make malloc() fail. I think many
of us probably have some experience with filling up the disk and
causing the server to hang, breaking replication, or crashing
something.
I’m managing a couple of servers that have taught me some
interesting new lessons along these lines. They use
innodb_file_per_table, but their main (shared) tablespace is
fixed-size, and not very big. The tablespace tends to fill up
when there are long-running transactions …
[Read more]