Project

General

Profile

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 
 pkg install 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 
 rehash 
 </pre> 

 * Now uninstall MariaDB server: 
 <pre> 
 make deinstall 
 rehash 
 </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 
 </pre> 

 * Compile MariaDB with wsrep: 
 <pre> 
 cd maria-5.5-galera 
 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 
 rehash 
 </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> 
 And modify the two configuration parameters: 
 > 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 data/ mysql/ 
 </pre> 

 * Bootstrap the new Galera cluster 
 <pre> 
 service mysql.server.sh bootstrap 
 </pre> 
 *# The alternate way to bootstrap the cluster is like so: 
 <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

Back