15/11/2024

WordPress

HyperDB : Utiliser plusieurs bases de données avec WordPress

I. Présentation

Ce plug-in pour WordPress permet d’améliorer la gestion native des bases de données au sein du CMS. Il permet de définir différents serveurs de bases de données à utiliser pour accéder à la base de données du site concerné.

Attention, ce plug-in ne permet pas de faire de la réplication de base de données, cette fonctionnalité devant être assurée en amont par MySQL directement avec la gestion master/slave. HyperDB est là uniquement pour permettre à l’application WordPress de basculer d’un serveur de base de données vers un autre en cas de panne.

Le failover est géré par HyperDB : Lorsque la connexion sur une base de données échoue, il tente d’accéder à un autre serveur contenant la base de données avec les mêmes données. Si la réplication n’est pas configurée, HyperDB effectue quelques tentatives de reconnexion avant de renoncer.

A voir également : Réplication MySQL

II. Infrastructure HyperDB

Voici l’infrastructure imaginée dans le cadre de la réalisation de ce tutoriel :

hyperdb1
Infrastructure WordPress HyperDB

 

III. Configuration d’HyperDB

Le plug-in HyperDB ne s’installe pas comme un quelconque autre plug-in, à savoir en positionnant les fichiers dans le répertoire « /wp-content/plugins/ ».

A. Modèle de configuration

Après avoir téléchargé les sources sur la page WordPress du plug-in, placez le fichier « db-config.php » à la racine de votre installation WordPress et ouvrez-le.

Dans ce fichier, il faudra définir la configuration des différents hôtes à utiliser. Pour cela, on s’appuiera sur la variable $database qui est en fait un tableau contenant différents paramètres :

- host (requis) : Nom de l’hôte (attribué au sein de la configuration HyperDB) – Spécifier « :port » avec le bon numéro s’il est différent du port par défaut qui est 3306.

- user (requis) : Nom d’utilisateur MySQL

- password (requis) : Mot de passe de l’utilisateur définit

- name (requis) : Nom de la base de données

Ainsi que différents paramètres optionnels mais qui nous serons utiles :

-read : Indique si l’hôte est accessible en lecture (par défaut : 1 = oui)

-write : Indique si l’hôte est accessible en écriture (par défaut 1 = oui)

- dataset : Nom du dataset utilisé (défaut : global)

- timeout : Timeout en secondes pour une réponse TCP (défaut : 0.2 seconde)

Ainsi, on définira nos hôtes sous cette forme :

$wpdb->add_database(array(
'nom-option' => valeur,
));

B. Définir l’hôte maître

Commençons par créer la configuration pour le serveur MySQL Master. Nous obtiendrons :

$wpdb->add_database(array(
'host' => DB_HOST,
'user' => DB_USER,
'password' => DB_PASSWORD,
'name' => DB_NAME,
));

On peut laisser les différentes variables « DB_* » puisque cela permet d’aller chercher les valeurs directement définies au sein de la configuration de WordPress. Pour notre serveur master, cela fait très bien l’affaire. Par exemple, "DB_HOST" aura pour valeur ce que vous avez définit pour ce paramètre dans le fichier de configuration WordPress "wp-config.php".

Note : On ne précise pas les directives « read » et « write » cela signifie que l’on indique que ce serveur est accessible aussi bien en lecture qu’en écriture comme la valeur par défaut est « 1 ».

C. Définir l’hôte esclave

Après avoir définit l’hôte master, on peut s’attaquer à la configuration de l’hôte slave. La principale différence sera au niveau de l’hôte, et, des accès autorisés sur le serveur.

Voici la configuration :

$wpdb->add_database(array(
'host' => DB_SLAVE1,
'user' => DB_USER,
'password' => DB_PASSWORD,
'name' => DB_NAME,
‘read’ => 1,
‘write’ => 0,
));

Les principales différences sont le changement du nom d’host, il faut définir un nom unique pour chaque hôte définit, on choisira donc « DB_SLAVE1 » dans ce cas. De plus, on indique que ce serveur est accessible en lecture (facultatif car implicite) mais pas en écriture.

Pas en écriture tout simplement car lors d’un processus de réplication MySQL, le serveur slave est accessible uniquement en lecture.

IV. Configuration de WordPress avec HyperDB

Après avoir configuré le fichier « db-config.php », il est nécessaire de configurer WordPress pour l’associer à HyperDB. Pour cela, éditez le fichier « wp-config.php » de WordPress.

Recherchez dans ce fichier la déclaration « DB_HOST » qui doit normalement avoir pour valeur l’adresse IP du serveur Master, correspondant probablement au serveur MySQL utilisé actuellement.

Définissez une seconde option pour le DB_SLAVE1 comme ceci :

/** MySQL master */
define('DB_HOST', 'localhost');
/* MySQL slave */
define('DB_SLAVE1', 'localhost');

Sauvegardez et fermez le fichier wp-config.

Enfin, copiez le fichier « db.php » du plug-in HyperDB dans le répertoire « wp-content » de votre installation WordPress. Donnez le propriétaire de ce fichier pour que ce soit l’utilisateur « www-data » qui le soit :

chown –R www-data:www-data wp-content/db.php

Maintenant, votre WordPress est désormais capable de gérer plusieurs serveurs MySQL afin d’améliorer la disponibilité de votre site web. N’oubliez pas de configurer correctement la réplication MySQL maître/esclave également pour assurer le bon fonctionnement de l’infrastructure (voir lien dans première partie).

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “HyperDB : Utiliser plusieurs bases de données avec WordPress

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.