As a young ambitious coder way back in the day, my very first dynamic web page was written in really awkward PHP with MySQL version point something as the back end persistence. I should really try and dig up that code just for old time’s sake. I’m sure its still on a 3.5″ “floppy” (they can hold thousands of pages of text…ok, maybe just hundreds) somewhere in my basement. Those were dark days.
Well MySQL has come a long way since then, and I’d be lying if it said its not my defacto now for web development. In fact, I never had any real complaints about it. By the time I was using it for more enterprise level systems, it had caught up in most ways. With the latest major release, MySQL 5.0, glorious enhancements like stored procedures, triggers, views, and transactions were introduced, creating more serious competition for larger commercial vendors. Well I couldn’t be more pleased with using it as the back end for an advanced web application. That was, until I found out about google-mysql-tools.
After reading an article the other day that describes a recent announcement that Google will be contributing some of its custom enhancements to the main MySQL code base, I discovered they have already released some fairly slick improvements for utilizing MySQL in a highly available, distributed environment. Since Google is considered by many to be the largest single user of MySQL, and they have successfully solved some rather difficult real-time web issues through their software, I figured this was well worth looking at.
Released as a patch that can be applied to MySQL4 or MySQL5, google-mysql-tools is aptly hosted on the Google Code website, and it offers some really slick enhancements to MySQL run in Linux using the InnoDB table structure. Some of these include partially synchronous replication between master and slave hosts, mirrored binlogs, replication of transactions, asynchronous background IO threads in InnoDB, and the monitoring of database activity on a per user, per table basis. I will definitely be applying this patch in my next MySQL5 install.