Blog

Compilation de sysbench 0.5 sur debian & benchmark de MySQL

Écrit le 26 04 2013 par Kévin MET _

Pourquoi compiler sysbench en version 0.5 alors qu'il suffit de faire apt-get install sysbench pour avoir la version 0.4.12 ? Tout simplement car la version 0.4.12 ne permet pas de bencher un cluster MySQL basé sur Galera. Nous allons donc compilé la version 0.5 et je vais ensuite vous montrer un exemple pour faire quelques benchmarks sur votre cluster.

Compilation de sysbench 0.5

Nous allons commencer par télécharger les sources et les désarchiver


# wget bazaar.launchpad.net/~sysbench-developers/sysbench/0.5/tarball/116?start_revid=116
# mv 116\?start_revid\=116 sysbench-0.5.tgz
# tar xvzf sysbench-0.5.tgz
# cd \~sysbench-developers/sysbench/0.5/

Il faut installer les dépendances et les outils nécessaires à la compilation


# aptitude install libtool build-essential automake

Si jamais vous n'avez pas MySQL sur votre machine il faudra également l'installer avec les sources.


# aptitude install mysql-client mysql-server libmysqld-dev

Il faut ensuite passer le ./configure avec les options nécessaires. Dans notre cas nous allons utilisé --prefix pour définir un dossier d'installation (/opt/sysbench). Pour que sysbench puisse compiler il faut également ajouter les includes et les libs de mysql. Pour cela on utilise --with-mysql-includes et --with-mysql-libs. Sur ma machine MySQL est installé dans /usr/local/mysql mais dans le cas d'une installation de MySQL via apt-get les includes et les libs ne sont pas dans le même chemin.

Exemple de ./configure dans le cas ou MysQL est dans /usr/local/mysql :


" ./configure --prefix=/opt/sysbench --with-mysql-includes=/usr/local/mysql/include --with-mysql-libs=/usr/local/mysql/lib

Exemple de ./configure dans le cas ou MySQL a été installé via apt-get :


# ./configure --prefix=/opt/sysbench --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

Enfin il ne reste plus qu'a éxécuter les traditionnels make et make install


# make
# make install

Si tout c'est bien passé vous devriez avoir le binaire de sysbench dans /opt/sysbench/bin/ :


# file /opt/sysbench/bin/sysbench 
/opt/sysbench/bin/sysbench: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped

Nous allons donc voir comment l'utiliser.

Utilisation de sysbench 0.5

Avant d'utiliser sysbench il faut préparer MySQL. On commence par créer une base sbtest qui sera utiliser par sysbench et on ajoute un utilisateur sbtest qui pourra se connecter de partout pour faciliter l'utilisation.


CREATE DATABASE sbtest;
GRANT ALL PRIVILEGES ON `sbtest`.* TO 'sbtest'@'%' IDENTIFIED BY 'sbpassword';

Nous devons commencer par préparer une table. Dans notre test nous allons créer une table de 1 000 000 de lignes.


# ./sysbench  --mysql-user=sbtest --mysql-password=sbpass --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 --mysql-host=192.168.1.7 --oltp-auto-inc=off --test=/root/sysbench/0.5/sysbench/tests/db/oltp.lua prepare

Dans notre exemple, MySQL tourne sur 192.168.1.7, on utilise l'option --oltp-auto-inc=off qui permet de jouer notre test un cluster Galera. Il faut bien veiller à utiliser --test qui pointe sur le fichier oltp.lua. Ce fichier est contenu dans l'archive que vous avez téléchargé pour installer sysbench dans le dossier ~sysbench-developers/sysbench/0.5/sysbench/tests/db/oltp.lua On peut ensuite lancer notre benchmark :


# ./sysbench --num-threads=50 --max-time=300 --max-requests=500000 --mysql-user=sbtest --test=oltp --mysql-host=192.168.1.7 --mysql-password=sbpass --oltp-test-mode=complex --oltp-table-size=1000000 --mysql-port=3306 --oltp-auto-inc=off --test=/root/sysbench/0.5/sysbench/tests/db/oltp.lua run

Vous pouvez ensuite jouez avec --num-threads= pour voir comment les performances évoluent en fonction du nombre de threads. Voilà, amusez vous bien 😃

♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.