Enabling Galera clustering for MariaDB 10.1 27 mar 2016

One of the features I've been asked for repeatedly to add to MariaDB is Galera Clustering support. As of MariaDB 10.1 there's no separate Galera version, clustering support must now be added with the software from Galera. I'm just a casual user of MariaDB so I'm not running any of these advanced features myself.

Enabling Galera clustering for MariaDB 10.1

Galera promises some really cool stuff.

"Galera Cluster for MySQL is a true Multimaster Cluster based on synchronous replication. Galera Cluster is an easy-to-use, high-availability solution, which provides high system uptime, no data loss and scalability for future growth."

FreeBSD had a Galera port databases/galera already but that was not the version indicated by MariaDB to use for Galera clustering.

The port also forced the use of gcc to build and depends on devel/boost-libs which is an explosive mix. You should expect issues when mixing libraries built with gcc with libraries built with clang. Doesn't sound like a healthy mix for a high-availability clustering solution to me!

The port used a tarball downloaded from Launchpad which was not the latest from the Galera website and I couldn't find that latest version (which is also a requirement for MariaDB) on the Launchpad repository. I decided to see how far I could get with the tarball from the website.

The website's tarball does not include the documentation, so all of that had to go. This reduces the port and the number of dependencies drastically.
Furthermore there are some changes in the structure of the code, which caused issues as the REINPLACE_CMD (sed) statements didn't capture these correctly. Primarily I had to fix the ist and gu_asio.cpp/hpp files to get things to compile again.

Furtunately Ganbold recently reported issues with Galera and he has been testing the new ports and first results are promising. Not that this is now all rock-solid but we are far closer to having Galera Clustering MariaDB in FreeBSD ports!

If you want to test this, go ahead and update the databases/mariadb101-client, databases/mariadb101-server and databases/galera ports from my personal Github repo and give it a whirl.

Do let me know if you have a success or a failure! Aviary, Github, IRC, Mail, Twitter will all work...