Vous êtes ici : Accueil / Debian GNU/Linux / Serveurs / MySQL / Installer l'engine MySQL Pinba sur Debian

Installer l'engine MySQL Pinba sur Debian

Par Pierre-Yves Landuré Dernière modification 12/01/2019 18:47

Pinba est un moteur MySQL destiné à la collecte de données statistiques. Il a été développé à l'origine pour collecter des informations sur les performances d'applications PHP.

Ce guide est testé sur:

  • Debian 7.0 Wheezy
  • Debian 9.0 Stretch

Ce guide est testé avec ces versions du logiciel:

  • 1.2.0

Prérequis

Ce guide nécessite:

Ce guide recommande:

    Installation

    Détectez le proxy de commande (command ou sudo):

    cmdProxy='command'
    command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'

    Détectez les versions logicielles disponibles:

    libmysqlclientDev='libmysqlclient-dev'
    [ -n "$(command apt-cache pkgnames 'default-libmysqlclient-dev')" ] && libmysqlclientDev='default-libmysqlclient-dev'
    libprotobufLite='libprotobuf-lite7'
    [ -n "$(command apt-cache pkgnames 'libprotobuf-lite10')" ] && libprotobufLite='libprotobuf-lite10'
    libprotobuf='libprotobuf7'
    [ -n "$(command apt-cache pkgnames 'libprotobuf10')" ] && libprotobuf='libprotobuf10'

    Détectez l'instance du serveur MySQL ou MariaDB installé:

    mysqlServer='mysql'
    grep 'MARIADB' '/usr/include/mysql/mysql_version.h' > '/dev/null' && mysqlServer='mariadb'

    Détectez le chemin d'installation des plugins Mysql:

    mysqlPluginPath='/usr/lib/mysql/plugin/'
    mariaDBLibPath="$(command find '/usr/lib' -name 'mariadb*' -type d | sort | tail -n 1)"
    [[ -e "${mariaDBLibPath}/plugin" ]] && mysqlPluginPath="${mariaDBLibPath}/plugin"

    Préparation de l'environnement

    Installez les logiciels nécessaires:

    ${cmdProxy} apt-get install build-essential protobuf-compiler \
    libjudydebian1 libevent-dev libjudy-dev git libevent-2.0-5 libtool \
    libevent-core-2.0-5 libevent-extra-2.0-5 libevent-openssl-2.0-5 \
    libevent-pthreads-2.0-5 automake libprotobuf-dev \
    "${libmysqlclientDev}" ${libprotobufLite} ${libprotobuf}

    Mise en place du logiciel

    Téléchargez les sources:

    command wget 'https://raw.github.com/biapy/howto.biapy.com/master/various/sf-downloader' \
    --quiet --no-check-certificate --output-document='/tmp/sf-downloader'
    command chmod +x '/tmp/sf-downloader'
    source="$(${cmdProxy} /tmp/sf-downloader \
    --generic='http://pinba.org/' \
        --tgz 'pinba' 'pinba_engine-VERSION.tar.gz')"

    Obtenez les sources de MySQL:

    command pushd '/tmp'
    command apt-get source "${mysqlServer}-server"
    command popd
    mysqlSource="$(command find '/tmp' -maxdepth 1 -type d -name "${mysqlServer}-*")"
    mysqlIncludePath='/usr/include/mysql'
    [[ -e '/usr/include/mariadb/mysql_version.h' ]] && mysqlIncludePath='/usr/include/mariadb'
    command cp "${mysqlIncludePath}/mysql_version.h" "${mysqlSource}/include"
    [[ -e "${mysqlIncludePath}/mariadb_version.h" ]] && command cp "${mysqlIncludePath}/mariadb_version.h" "${mysqlSource}/include"
    command cp "${mysqlIncludePath}/my_config.h" "${mysqlSource}/include"

    Obtenez les options de configuration du serveur MySQL installé:

    mysqlOptions="$(VISUAL="$(command -v 'cat')" command mysqlbug \
    | command grep 'Configured with' \
    | command sed -e 's/.*configure -v //')"

    Générez les scripts de configuration:

    command pushd "${source}"
    command aclocal
    command automake --add-missing
    [[ -e "${source}/buildconf.sh" ]] && ${source}/buildconf.sh
    [[ -e "${source}/sparsehash/autogen.sh" ]] && ${source}/sparsehash/autogen.sh
    command automake
    command popd

    Configurez les sources:

    ${source}/configure \
    --with-mysql="${mysqlSource}" \
    --with-judy \
    --with-protobuf \
    --with-event \
    --libdir="${mysqlPluginPath}" \
    CXXFLAGS="-fno-rtti"

    Corrigez les sources pour permettre la compilation avec l'option -fno-rtti:

    command sed -i \
    -e 's/<< typeid(TypeParam).name()//' \
    "${source}/sparsehash/src/hashtable_test.cc"

    Placez-vous dans le dossier des sources:

    command pushd "${source}"

    Compilez le logiciel:

    command make

    Installez le logiciel:

    ${cmdProxy} make install

    Quittez le dossier des sources:

    command popd

    Activation de l'engine

    Configurez le serveur MySQL pour utiliser l'engine Pinba:

    command mysql --execute="INSTALL PLUGIN pinba SONAME 'libpinba_engine.so';" --user=root

    Créez une base de données pour Pinba:

    command mysql --execute="CREATE DATABASE pinba DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;" --user=root

    Initialisez le contenu de la base de données:

    command mysql --user=root 'pinba' < '/tmp/pinba_engine/default_tables.sql'

    Supprimez les sources:

    command rm -r "${source}" "${mysqlSource}"

    Configuration de l'engine

    Installez le fichier de configuration pour l'engine Pinba:

    ${cmdProxy} wget 'https://raw.github.com/biapy/howto.biapy.com/master/mysql/pinba.cnf' \
      --quiet --no-check-certificate --output-document='/etc/mysql/conf.d/pinba.cnf'
    ${cmdProxy} service "${mysqlServer}" restart

    Vous pouvez ajuster la configuration de Pinba à votre besoin en modifiant le fichier pinba.cnf, puis en redémarrant le serveur MySQL pour prendre en compte les modifications:

    ${cmdProxy} vim '/etc/mysql/conf.d/pinba.cnf'

    Si le serveur PHP générant les statistiques stockées dans Pinba est sur un autre hôte que le serveur MySQL, ouvrez le port d'écoute de Pinba sur le réseau (dangereux, assurez-vous de disposer d'un pare-feu):

    # ${cmdProxy} sed -i -e 's/^pinba_address/#pinba_address/' '/etc/mysql/conf.d/pinba.cnf'
    # ${cmdProxy} service "${mysqlServer}" restart

    Remerciements