Base de données : mysql
Par défaut, mysql est configuré pour créer sa structure dans un seul fichier de données nommé ibdata1.
Afin d'optimiser la libération de l'espace disque lors de la suppression de données volumineuses, nous avons optés pour la création d'autant de fichiers de données que de tables dans la base Sentinelle.
Pour cela nous utilisons l'option innodb_file_per_table
de mysql
ProcédureModification de la configuration de mysql
Paramétrage particulier
Rails est un framework utilisant massivement les accès à la base de données. Aussi, afin de customiser mysql au besoin de Sentinelle, nous allons créer un fichier de configuration spécifique :
sudo vi /etc/mysql/conf.d/sentinelle.cnf
Et entrez les informations suivantes
[mysqld]
max_connections=400
innodb_file_per_table
Puis on redémarre mysql
sudo service mysql restart
Création d'une base de données et d'un utilisateur pour notre Sentinelle
user="rails"
password=`pwgen 10 1`
sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql -e "CREATE USER $user@localhost IDENTIFIED BY '$password';"
sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql -e "GRANT ALL PRIVILEGES ON $user.* TO $user@localhost IDENTIFIED BY '$password' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;"
sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql -e "CREATE DATABASE IF NOT EXISTS $user;"
Remarque
Nous avons créé ici une base 'rails' dont l'utilisateur 'rails' a tous les droits.
Vous noterez également la définition d'un mot de passe aléatoire pour cet utilisateur rails.
Nous allons maintenant créer le fichier de configuration de Sentinelle pour l'accès à la base de données.
echo "production:
adapter: mysql2
pool: 200
database: $user
username: $user
password: $password
socket: /var/run/mysqld/mysqld.sock
encoding: utf8" > /home/sentinelle/alizes/config/database.yml