Base de données MariaDB
InfraRiver stocke toutes ses données dans une base MariaDB (infrariver, jeu de caractères utf8mb4).
Version
- MariaDB 10.4.3 ou plus récent (10.5, 10.6, 10.11 conviennent).
- Sur RHEL / Rocky 8, le flux installé par défaut (10.3) ne convient pas : activez un flux récent avant l'installation (voir Prérequis système).
- Sur RHEL / Rocky 9, le flux par défaut (10.5) convient.
Réglages recommandés
Ce fichier est l'étape 3 de l'installation. Ajoutez-le plutôt que de modifier my.cnf : /etc/my.cnf.d/infrariver.cnf
[mysqld]
# Jeu de caractères attendu par InfraRiver
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# Mémoire : la valeur de votre palier (voir Dimensionnement) — 2G pour 500 hôtes
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
# Connexions : InfraRiver en ouvre jusqu'à 70 au pire (deux services, deux moteurs chacun) ;
# la valeur par défaut (151) est trop juste si d'autres applications partagent la base.
max_connections = 250
# Repérer les requêtes lentes
slow_query_log = 1
long_query_time = 2
slow_query_log_file = /var/log/mariadb/slow.log
puis systemctl restart mariadb.
| Réglage | Pourquoi |
|---|---|
innodb_buffer_pool_size |
Le réglage qui compte le plus : la part de la base gardée en mémoire. Valeur par palier dans Dimensionnement. Sur une base dédiée, jusqu'à 70 % de la RAM de la machine. |
max_connections |
InfraRiver garde un réservoir de connexions par processus (portail, passerelle) : au pire 70 connexions avec les réglages par défaut (10 + 15 par moteur pour le portail, 4 + 6 pour la passerelle, deux moteurs chacun), sous les 151 de MariaDB. 250 laisse de la marge si d'autres applications utilisent la même base ou si vous agrandissez les réservoirs (DB_POOL_SIZE, voir Référence de server.conf). |
slow_query_log |
Permet de nous transmettre les requêtes lentes si une page ralentit. |
DB_MAX_STATEMENT_TIME (dans server.conf) |
Côté InfraRiver : interrompt une requête d'affichage trop longue, pour qu'elle ne continue pas à tourner après un délai dépassé du reverse proxy. Voir Référence de server.conf. |
Base locale ou distante
MariaDB tourne sur le serveur InfraRiver et n'écoute que localement :
DB_HOST=localhost dans server.conf.
Sur le serveur de base de données :
CREATE DATABASE infrariver CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'infrariver'@'<IP du serveur InfraRiver>' IDENTIFIED BY '<mot de passe fort>';
GRANT ALL PRIVILEGES ON infrariver.* TO 'infrariver'@'<IP du serveur InfraRiver>';
FLUSH PRIVILEGES;
Ouvrez le port 3306 du serveur de base au seul serveur InfraRiver, puis renseignez dans
/etc/infrariver/server.conf : DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, et redémarrez
infrariver et infrariver-ingest.
Chiffrer la connexion
Renseignez DB_SSL_CA dans server.conf avec le certificat de l'autorité qui signe celui du serveur MariaDB :
la connexion est alors chiffrée et le certificat vérifié (Référence de server.conf).
À défaut, placez les deux serveurs sur un réseau d'administration non partagé.
InfraRiver fonctionne sur un cluster déjà exploité chez vous (Galera, primaire/réplique), à condition :
- d'écrire sur un seul nœud (le primaire, ou une adresse virtuelle qui pointe vers un nœud d'écriture) ;
- de respecter la version minimale et le jeu de caractères ci-dessus ;
- de prévoir la mémoire et le disque du palier InfraRiver en plus des autres bases du cluster.
Droits du compte infrariver
Le compte doit pouvoir créer et modifier les tables de sa base : InfraRiver crée son schéma au premier démarrage
et le met à jour lui-même après chaque mise à jour du paquet. D'où ALL PRIVILEGES sur la base infrariver
seulement, et sur aucune autre base.