Attending Percona Live Conference in London 2012

I am attending the Percona live conference in London on 4'th of December.

I will there hold a keynote about State of MariaDB & its growing Ecosystem and a session, together with Colin Charles, about Using NoSQL Techniques with MariaDB.

During the keynote there will be announcements that many of you should find exciting...

Sergei Golubchik will be there and talk about the new features in MariaDB 5.5 and MariaDB 10.0

Colin Charles will also have a talk about MHA: Getting started and moving past the quirks.

I am looking forward to again meet many of the hard core MariaDB and MySQL users in London!


Made by geeks, used by professionals

We just made some cool t-shirts and mugs for fans of MariaDB!

If you like them and like what we are doing with MariaDB, please make an order and wear it to work to support us!

All money we get goes, naturally, to the development of MariaDB.

Please add a comment if there is other MariaDB merchandise you would like to see!


Multi-source replication for MariaDB is here

I yesterday finished the work for the first version of multi-source replication for MariaDB.

I first want to thank Peng Lixun at Taobao for giving us the code that I used as a base for this patch. Their patch worked and was used in production, but didn't have all the features needed for a 'full solution'. I have now added those.

Typical use cases for multi-source replication are:
  • You are partitioning your data over many masters and would like to get it all together on one machine to do analytical queries on all data.
  • You have many databases spread over many MariaDB/MySQL servers and would like to have all of them on one machine as an extra backup.
The new syntax introduced to handle many connections:
  • CHANGE MASTER ["connection_name"] ...
  • FLUSH RELAY LOGS ["connection_name"]
  • MASTER_POS_WAIT(....,["connection_name"])
  • RESET SLAVE ["connection_name"]
  • SHOW RELAYLOG ["connection_name"] EVENTS
  • SHOW SLAVE ["connection_name"] STATUS
  • START SLAVE ["connection_name"...]]
  • STOP SLAVE ["connection_name"] ...
"connection_name" specifies with master you are working with.
The original old-style connection_name is an empty string ''.

Full documentation for the multi-source feature can be found here.
Feel free to add comments to the above page if you have any questions!

This is now pushed into the 10.0-MariaDB tree and will be merged into the MariaDB 10.0 tree to be included into MariaDB 10.0.0 in a few days.

By the way:
For those that missed the announcement, another new exciting thing that just was made available in MariaDB is the Cassandra storage engine.


Now is a good time to be part of the future of MariaDB

We are now working full time on MariaDB 10.0, with the intention to release a stable server by the end of this year.

The new MariaDB release numbers are explained in this article.

The first binary, MariaDB 10.0.0-alpha will be released shortly.

The new, already developed, features are:
  • Multi-source replication. This is now being tested and will be pushed into the main branch shortly.
  • EXPLAIN the *actual* plan on a *running* statement
  • New InnoDB from MySQL 5.6
  • Performance schema from MySQL 5.6
  • Better error messages (all error numbers now include descriptive text of what the number means)
  • Optimized read only transactions (for InnoDB). This includes support for TRANSACTION READ ONLY (from MySQL 5.6)
  • LIMIT ... ORDER BY optimization (similar to MySQL 5.6)

With the last ORDER BY optimization MariaDB 10.0 has all the optimization features of MySQL 5.6 + much more (MariaDB has still more than 10 man years work on the optimizer compared to MySQL 5.6)

In addition we are working on:
  • Support for automatic updating of timestamps in DATETIME (similar to what is in MySQL 5.6, but a different implementation)
  • Memory tables with efficient VARCHAR and BLOB support
  • Merging more code from MySQL 5.6

Other areas of interest are:
  • Better replication (including parallel replication that can concurrently update the same table)
  • Improved multi-master and multi-source
  • More status variables and better monitoring
  • Optimizations to be able to run MariaDB better in the cloud.

For a full list, see the Plans for 10.x page and look at the plans for MariaDB 10.0 and beyond.

We will actively continue to merge code from MySQL 5.6 into MariaDB 10.0, 10.1 and hope to have all important features done by 10.2.

The reason we will need up to three releases to merge MySQL 5.6 is that we are not that happy with several parts of the MySQL 5.6 code base and we have to rewrite and reinvent those parts of MySQL 5.6 to be able to include them in MariaDB. This will take time!

We will do this in several steps to be able to do a release of MariaDB 10.x roughly every 6 months with many new features in each release, not only from MySQL 5.6.  The aim is to have all data-on-disk formats and protocol formats compatible with MySQL 5.6 so that one can upgrade from MariaDB 5.6 or MySQL 5.6 to any MariaDB 10.x release trivially.

I would like to see MariaDB developed to be a practical database; a database which is used to solve the real life problems you are facing today and tomorrow. To be able to do that, we are now actively seeking users, developers, and companies to get involved and help us drive MariaDB in the directions that make the most sense to them.

The ways you and your company can participate are:

  • Contribute with developer time. If your organization has talented developers familiar with the MariaDB and MySQL codebases they can become part of the MariaDB team and contribute to the development of the MariaDB project.
  • Fund the development of specific features. You can find a list of suggested features to sponsor here or in our project planning tool Jira. Feel free to sign in and add more projects to either place!
  • Hire a developer that you dedicate to work on the MariaDB project.
  • Join the different MariaDB mailing lists and channels to discuss where we should together put our resources to take MariaDB to the next level.
Please connect with us and help us steer MariaDB into the future and beyond!


MariaDB Galera cluster released

While I was at Oscon and later at Froscon, one of the most frequent questions I heard was "When will you release MariaDB with Galera?"

Galera is a multi-master cluster solution for MySQL/MariaDB made by Codership.

The reason for the delay has been that we wanted, before the release, to do some QA testing of Galera so that we know how it performs, it's limitations and possible edge cases. Through this we did find some issues that Codership has acted upon.

Now it's finally released.

As this is the first release of MariaDB with Galera, we have labeled the release as 'alpha'. However, don't let the 'alpha' label scare you too much. Galera has been used in production by people I know and they are very happy with it.

Galera still has some rough edges, which Codership and we will work to eliminate over time.

See also Rasmus' blog about this.

Happy testing!


Fixing things the proper way

I short while ago one of our customers (through SkySQL) notified us of an unexpected problem in MySQL 5.5.25 regarding Query cache on partitioned tables.

Looking at the bug report (opened in 2010) one can see that the bug was marked in March 2012 as 'solved'. What was not made clear was that the solution was to disable the query cache for all partitioned tables.

Reading the bug report comments, I get the impression that the main reason for removing the feature was that the developers looking at the issue didn't really understand how the query cache works in detail and it was just easier to remove the feature than fixing it. (The problem was well understood but not how to fix it).

I talked this over with Sanja Byelkin, the creator of the query cache who now works on MariaDB, who concluded that this was a small issue and could easily be fixed.

'Easily' in this case was a 600 line patch (not including the test case) which added a new interface to the handler to register tables in a partition for the query cache.

One nice thing with his patch was that it allowed us to remove some MERGE table dependent code from the SQL level and move it to the MERGE storage engine code, where it should have been from the start. (In other words, the patch not only fixed a problem but also made the original code nicer and easier to maintain).

That is the proper way to fix a bug...

See also Daniel Bartholomew's blog about this.

The fix is in the MariaDB source repository and will be in MariaDB 5.5.27.


Lots of MariaDB releases...

Today we released MariaDB 5.5.23 as stable (GA). The last few days we have also released MariaDB 5.3.6 stable (second GA release) and MariaDB 5.2.12 and MariaDB 5.1.62.

The reason for doing the older releases was that we found a very serious security issue in all recent MariaDB / MySQL releases and we strongly recommend everyone to upgrade to one of the above releases ASAP. We have informed Oracle of the problem and they are likely to issue a new MySQL release soon!

That said, I am very happy that MariaDB 5.5 is finally available as a stable release and I wish you the best of luck with it!

MariaDB 5.5 includes all features from MySQL 5.5 and MariaDB 5.3 (with the exception of OQGraph for which we are awaiting a patch from the OQgraph developers to solve a compatibility issue).

MariaDB 5.5 is a drop in replacement for MySQL 5.5. Here is a
short list of the new features in MariaDB 5.5 compared to the MySQL 5.5 community release:

* Better optimizer (Faster complex queries and sub queries)
* Efficient thread pool
* Pluggabale authentication with PAM plugin
* Non-blocking client API Library
* More storage engines
* Microsecond precision
* Table elimination
* Virtual columns
* Extended user statstics
* MyISAM segmented key cache
* Group commit (Makes replication significantly faster!)
* Progress reporting for ALTER TABLE and LOAD DATA INFILE.
* Dynamic columns (a nosql feature)
* Spatial GIS extensions
* A lot of speed improvements like faster heap tables, character conversions etc.

For a full list, please see our Knowledgebase which has lists of features for each release.

We are also working on MariaDB-5.5-galera, a MariaDB cluster edition together with the Galera people. We expect that we will have a binary release of this soon.

If you want to know more about all the new features in MariaDB, you can find many of the MariaDB core developers, including me, at the MariaDB.org booth at the Percona Live conference in Santa Clara during Thursday or at the SkySQL / MariaDB conference on Friday.

We will also have a MariaDB BOF on Wednesday at 21.00 in Ballroom A.
Hope to see many of you there!


Free MariaDB(R) & MySQL(R) conference day

SkySQL recently announced the Solutions Day for the MySQL Database to be held on the 13'th of April at the Hyatt Regency Santa Clara.

At this conference you will, for the first time in 3 years, again see David Axmark and me on stage on a keynote about the state of MySQL and MariaDB and how we envision the future of these products!

There will also be a lot of tech talks about MySQL and MariaDB from the original MySQL creators as well as on related products from other people in the MySQL / MariaDB community.

Do register in advance, I look forward to seeing you there!

This day will be free for anyone to participate. There will also be free black vodka later in the evening.