Wednesday, November 14, 2007

My MySQL wishlist

This is my personal whishlist for MySQL.

Please let me know if I'm wrong or if there is a workaround for any of these items.

1. Per user and/or per database quota
Would very useful in setups for shared hosting. This would also prevent one database from bringing down the whole server. Separate tablespaces on different mountpoint can ease the pain, but I consider that a nasty hack.

2. External authentication
I've seen numerous scripts which fetch the authentication info from ldap, a file, another database or some other authentication store. This should be integrated into mysql. The mysql grant tables should be pluggable so it is possible to write a custom authentication plugin. We already have plugable engines and function (UDF) so this shouldn't be that hard is it?

3. Database locator
So you've got hundreds of servers.... and a multitude of databases. How to connect to the right server to reach the database you needed? Something like oracle TNS would be helpful here. What about implementing TNS for MySQL or just using DNS? How do you solve this?

4. Saving extra metadata about the database.
A common way to store stuff like customerid, data classification, service classification (development, production, etc) would be helpful. Many people are already storing this info but there is no way MySQL Administrator, phpMyAdmin or other tools can use it.

5. better protection against run-away queries
I would like to set max_query_time to 2 minutes.... but how?

6. restore manager
So you've created a backup using mysqldump for all databases and you've got your binlogs....it would be great if there was a tool which would filter one table or one database from your backup and replay the binlogs for that database. Somewhat like xfsrestore -i. I would call it the see-what-you've-got-and-pick-wha- you-like feature. Point in time recover is just too hard for many people starting with MySQL.