QA Help Wanted
MySQL Sun Oracle needs QA help. How do I know this? Because I’ve used their products.
We use MySQL 5.1.x “Enterprise” on several servers at work. We have several production servers that are replicated to slave servers as hot spares, reporting servers, and to a disaster recovery server. As part of our setup one of our backup servers needs to replicate from two different servers and databases to two different local databases. So, I need to run two instances of MySQL. There are three basic ways to accomplish this: run two instances of MySQL directing each to a different configuration file with appropriate port, directory, pid file settings; use mysqladmin to manage multiple instances; use mysqld_multi to start multiple instances. Mysqladmin has been deprecated and will be removed in 5.4, so I’m not investing energy in that solution. Option one will work, it just means more files to manage. Mysqld_multi allows using a single configuration file with definitions for each server instance. It’s straightforward and pretty easy to set up.
Mysqld_multi is a Perl script that parses a single config file containing multiple server instance definitions. There is just one problem. It doesn’t work. It throws the following error:
Unmatched right curly bracket at /usr/bin/mysqld_multi line 171, at end of line syntax error at /usr/bin/mysqld_multi line 171, near "}" Execution of /usr/bin/mysqld_multi aborted due to compilation errors.
As a programmer, and sysadmin, I expect that an error like that must be the result of some combination of version incompatabilities or poor configuration. Since I had just upgraded MySQL to the latest version this made sense. I updated all the packages on the server, rebooted, tried again.
Unmatched right curly bracket at /usr/bin/mysqld_multi line 171, at end of line syntax error at /usr/bin/mysqld_multi line 171, near "}" Execution of /usr/bin/mysqld_multi aborted due to compilation errors.
After way too much effort I pulled the script into a language aware editor and found that the script did, in fact, have an unmatched right curly bracket. I removed it. I ran it again, thinking that this couldn’t possibly be the problem. A large technology company like Sun Oracle wouldn’t let a product out the door with this kind of fundimental bug. They must have run this script at some time and found this error. No, they didn’t. Once the errant bracket was removed, the script ran. Perfectly.
Coincidentally, I just received our quote from Sun Oracle for “enterprise” support for MySQL. Seems kinda high.