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