Support #380
Updated by Daniel Curtis over 10 years ago
This guide a is to show how to build MariaDB with WSREP and Galera for a Multi-Master SQL database cluster. It is assumed that a FreeNAS jail has been setup as per Issue #329 and root access has been obtained. h2. Fix and prepare the Jail * Currently, I have noticed a bug that prevents a jail from upgrading properly. This is due to a conflict in GCC versions, to fix this lang/gcc47 must be removed along with one of its dependencies: <pre> pkg remove lang/gcc47 aria2 </pre> * Next update the ports tree: <pre> portsnap fetch portsnap extract </pre> * Once that is done, build mariadb55-server from the ports tree. This is to resolve the source dependencies for recompiling the MariaDB server later on with wsrep. <pre> cd /usr/ports/databases/mariadb55-server make install clean </pre> * Now uninstall MariaDB server: <pre> make deinstall </pre> * And now resolve a few dependencies before compiling the new MariaDB server: <pre> pkg install bzr bison boost-all scons </pre> * Install the check unit testing framework: <pre> mkdir /usr/local/src/ cd /usr/local/src wget http://sourceforge.net/projects/check/files/latest/download mv download check.tar.gz tar xzf check.tar.gz cd check-* ./configure make make install cd .. </pre> h2. Download and compile MariaDB with wsrep * Download the latest MariaDB from launchpad <pre> bzr branch lp:~maria-captains/maria/maria-5.5-galera maria-5.5-galera trunk </pre> * Compile MariaDB with wsrep: <pre> cd maria-5.5-galera trunk cmake . -DBUILD_CONFIG=mysql_release -DWITH_WSREP=ON -DWITH_INNODB_DISALLOW_WRITES=1 make make install </pre> * Install Galera from the ports tree <pre> cd /usr/ports/databases/galera make install clean </pre> * Copy the boot mariadb boot script <pre> cd /usr/local/mysql/support-files/ cp mysql.server /usr/local/etc/rc.d/mysql.server.sh </pre> *# The boot script also needs to be edited, like the following example: <pre> vi /usr/local/etc/rc.d/mysql.server.sh </pre> > basedir=/usr/local/mysql > datadir=/usr/local/mysql/data * Initialize and secure the MariaDB database <pre> cd /usr/local/mysql /usr/local/mysql/scripts/mysql_install_db cd .. chown -R mysql:mysql mysql/ </pre> * Bootstrap the new Galera cluster <pre> /usr/local/mysql/bin/mysqld --user=mysql --wsrep-new-cluster </pre> * Now in a second terminal connection run the @mysql_secure_installation@ script to do some post-installation hardening: <pre> /usr/local/mysql/bin/mysql_secure_installation </pre> By this point MariaDB should be able to be controlled by the service command: <pre> service mysql.server.sh bootstrap service mysql.server.sh stop service mysql.server.sh start </pre> h2. Configuring the Galera Cluster h2. Resources * https://mariadb.com/kb/en/getting-the-mariadb-source-code/ * https://mariadb.com/kb/en/generic-build-instructions/ * https://mariadb.com/kb/en/getting-started-with-mariadb-galera-cluster/ * https://code.launchpad.net/maria * http://www.fromdual.ch/building-galera-replication-from-scratch * https://mariadb.com/kb/en/starting-and-stopping-mariadb-automatically/ * http://planet.mysql.com/entry/?id=30931 * http://galeracluster.com/documentation-webpages/compiling.html