Pour débuter cette année 2011, je vais vous pousser à passer sous MariaDB pour que vous puissiez profiter immédiatement de sa toute puissance.

MariaDB n'est pas encore disponible sur MacPorts, j'ai dû chercher un peu avant de bien comprendre comment je pouvais l'installer à partir des sources.

Avant de commencer, je vous annonce qu'à l'heure où j'écris cet article, je tourne sous OSX 10.6.6 fraîchement formaté et que la version de MariaDB est la 5.2.4.

Pré-requis

  • Une version récente de OSX (Leopard ou Snow Leopard)
  • Xcode installé avec les Utilitaires UNIX
  • Se débrouiller avec le Terminal

Téléchargement

Allez sur la page dédiée au téléchargement de MariaDB et téléchargez les sources de la dernière version (mariadb-VERSION.tar-gz) dans votre dossier (Downloads par exemple) :

tar xzf mariadb-5.2.4.tar.gz  
cd mariadb-5.2.4  

Installation

Pour compiler MariaDB, il y a déjà des binaires tout prêts et qui ne demandent qu'à être lancés pour nous épargner une configuration fastidieuse. Travaillant sur une architecture Pentium, il vous suffira de choisir le bon binaire dans le dossier BUILD :

mariadb-5.2.4% ls BUILD | grep pentium  
compile-pentium  
compile-pentium-debug  
compile-pentium-debug-max  
compile-pentium-debug-max-no-embedded  
compile-pentium-debug-max-no-ndb  
compile-pentium-debug-openssl  
compile-pentium-debug-yassl  
compile-pentium-gcov  
compile-pentium-gprof  
compile-pentium-icc  
compile-pentium-icc-valgrind-max  
compile-pentium-icc-yassl  
compile-pentium-max  
compile-pentium-myodbc  
compile-pentium-mysqlfs-debug  
compile-pentium-pgcc  
compile-pentium-valgrind-max  
compile-pentium64  
compile-pentium64-debug  
compile-pentium64-debug-max  
compile-pentium64-gcov  
compile-pentium64-gprof  
compile-pentium64-max  
compile-pentium64-max-sci  
compile-pentium64-valgrind-max  
mariadb-5.2.4%  

Personnellement, je veux tous les moteurs de stockage disponibles alors je choisi la version max de la configuration et comme j'aime savoir où sera installé MariaDB, je demande seulement de configurer l'installation :

mariadb-5.2.4% sudo BUILD/compile-pentium-max -c  
# ...
Configuration summary for MariaDB Server version 5.2.4-MariaDB

  * Archive Storage Engine:          yes
  * Aria Storage Engine:             yes
  * Blackhole Storage Engine:        yes
  * CSV Storage Engine:              yes
  * Cluster Storage Engine:          no
  * Collection of Authentication Plugins: plugin
  * Example Storage Engine:          plugin
  * Federated Storage Engine:        plugin
  * FederatedX Storage Engine:       yes
  * Graph Storage Engine:            no
  * IBM DB2 for i Storage Engine:    no
  * InnoDB Storage Engine:           no
  * Memory Storage Engine:           yes
  * MyISAM MERGE Engine:             yes
  * MyISAM Storage Engine:           yes
  * PBXT Storage Engine:             yes
  * Partition Support:               yes
  * XtraDB Storage Engine:           yes

  * Installation prefix:             /usr/local/mysql
  * System type:                     apple-darwin10.6.0
  * Host CPU:                        i386
  * C Compiler:                      i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)
  * C++ Compiler:                    i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)
  * Debug enabled:                   no
  * Community Features:              yes

---

You can find information about MariaDB at  
http://kb.askmonty.org/

Remember to check the platform specific part of the reference manual for  
hints about installing MariaDB on your platform. Also have a look at the  
files in the Docs directory.

Thank you for choosing MariaDB!

mariadb-5.2.4%  

Si vous êtes ok avec cela, il vous suffira de relancer la commande sans l'option -c et le tour sera joué.

Note : j'ai tenté d'installer MariaDB sans ces binaires et à chaque fois, je ne pouvais pas initialiser mes bases de données donc si quelqu'un sait pourquoi, ce serait cool de m'en informer.

Déploiement

Pour déployer faites simplement un sudo make install :

mariadb-5.2.4% sudo make install  

Les fichiers vont migrer dans le répertoire prefix : /usr/local/mysql.

Tester votre serveur (optionnel)

MariaDB est livré avec toute sa batterie de tests unitaires, si vous voulez lancer et tester votre serveur (cela prend quelques heures), vous pouvez lancer les tests ainsi :

mariadb-5.2.4% cd /usr/local/mysql/mysql-test  
/usr/local/mysql/mysql-test% sudo ./mysql-test-run.pl
vardir: /usr/local/mysql/mysql-test/var  
Removing old var directory...  
Creating var directory '/usr/local/mysql/mysql-test/var'...  
Installing system database...  
Checking supported features...  
110111  0:20:07 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/mysql-test/var/tmp/ is case insensitive  
MariaDB Version 5.2.4  
 - skipping ndbcluster
 - skipping SSL, mysqld not compiled with SSL
Collecting tests...  
 - adding combinations for binlog
 - adding combinations for rpl
 - adding combinations for innodb_plugin
Using server port 60211

==============================================================================

TEST                                      RESULT   TIME (ms)  
------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009  
worker[1] mysql-test-run: WARNING: running this script as _root_ will cause some tests to be skipped  
binlog.binlog_multi_engine               [ skipped ]  No ndbcluster tests(--skip-ndbcluster)  
ndb.loaddata_autocom_ndb                 [ skipped ]  No ndbcluster tests(--skip-ndbcluster)  
ndb.ndb_alter_table                      [ skipped ]  No ndbcluster tests(--skip-ndbcluster)  
ndb.ndb_alter_table2                     [ skipped ]  No ndbcluster tests(--skip-ndbcluster)  
ndb.ndb_alter_table3                     [ skipped ]  No ndbcluster tests(--skip-ndbcluster)  
# ...
federated.federated_transactions         [ pass ]     25  
federated.federated                      [ pass ]    785  
federated.federated_bug_13118            [ pass ]     16  
federated.federated_bug_25714            [ skipped ]  Need bug25714 test program  
federated.federated_bug_32426            [ pass ]     37  
main.connect                             [ pass ]  10375  
main.pool_of_threads                     [ skipped ]  Test requires: 'have_pool_of_threads'  
------------------------------------------------------------
The servers were restarted 701 times  
Spent 5166.285 of 7795 seconds executing testcases

Completed: All 1159 tests were successful.  
federated.federated_transactions         [ pass ]     25  
federated.federated                      [ pass ]    785  
federated.federated_bug_13118            [ pass ]     16  
federated.federated_bug_25714            [ skipped ]  Need bug25714 test program  
federated.federated_bug_32426            [ pass ]     37  
main.connect                             [ pass ]  10375  
main.pool_of_threads                     [ skipped ]  Test requires: 'have_pool_of_threads'  
------------------------------------------------------------
The servers were restarted 701 times  
Spent 5166.285 of 7795 seconds executing testcases

Completed: All 1159 tests were successful.

/usr/local/mysql/mysql-test%

Note : n'oubliez pas de désactiver votre pare-feu sinon vous allez avoir plusieurs notifications système durant les tests et je suppose que cela altère le bon déroulement de ceux-ci.

Vous constaterez qu'il y a pas mal de tests passés dû à des options de compilation manquantes... IMHO, il faut compiler avec toutes les options debug etc. pour passer l'intégralité des tests.

Initialiser et lancer votre serveur

Comme avec MacPorts, il faut initlialiser le serveur avec cette commande :

/usr/local/mysql% sudo ./bin/mysql_install_db --user=mysql
Password:  
Installing MariaDB/MySQL system tables...  
OK  
Filling help tables...  
OK  
# ...
/usr/local/mysql%

Assignez un mot de passe à votre utilisateur MariaDB root, lancez votre serveur et testez son bon fonctionnement :

/usr/local/mysql% ./bin/mysqladmin -u root password 'new-password'
/usr/local/mysql% sudo ./bin/mysqld_safe 
110112 15:15:22 mysqld_safe Logging to '/usr/local/mysql/var/HOSTNAME.local.err'.  
110112 15:15:22 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var

^Z
zsh: suspended  sudo ./bin/mysqld_safe  
/usr/local/mysql% bg
[1]  + continued  sudo ./bin/mysqld_safe
/usr/local/mysql% ./bin/mysqladmin ping -u root -p
Enter password:  
mysqld is alive  
/usr/local/mysql%

Modification du $PATH

Rappel : cette partie vous permettra d'accèder aux binaires mysql sans devoir vous déplacer dans le répertoire /usr/local/mysql/bin.

Si vous avez un fichier .bashrc (ou .zshrc selon votre Shell) dans votre répertoire home, tapez seulement la commande en ligne 3, sinon faites le tout :

/usr/local/mysql% cd ~
% touch .zshrc
% echo export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH" >> .zshrc
% source ./.zshrc
% echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/local/bin/:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
%

A vous maintenant de gérer votre nouveau serveur de base de données :

% mysql -u root -p 
Enter password:  
Welcome to the MariaDB monitor.  Commands end with ; or \g.  
Your MariaDB connection id is 4  
Server version: 5.2.4-MariaDB Source distribution

This software comes with ABSOLUTELY NO WARRANTY. This is free software,  
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;  
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

MariaDB [(none)]>  

Mémo

Lancer votre serveur MariaDB :

% sudo mysqld_safe &

Accéder à votre serveur :

mysql -u root -p  

Arrêter votre serveur :

mysqladmin shutdown -u root -p  

Importer un dump de votre précédent serveur :

mysql -u root -p < mysql_dump_060111  

Joris Berthelot