Vous êtes sur la page 1sur 7

Un proxy MySQL est un dispositif destiné à se placer entre les clients et les serveurs.

Ainsi les requêtes


peuvent-elles être redirigées de manière transparente vers les différents serveurs en fonction de leur
charge (répartition de charge), de leur disponibilité (haute disponibilité), de leur aptitude à écrire ou
seulement lire les données, ou des informations qu’ils contiennent (sharding).

Configuration de réplication master-master


Une réplication multi-master est une réplication dans laquelle il n’y a pas de serveur de référence unique.
Tous les serveurs sont accessibles en écriture, et chaque modification faite sur un serveur est répercutée
sur ses voisins. Un client peut donc se connecter indifféremment sur l’un ou l’autre des masters, en
lecture comme en écriture.

Prévention des collisions d’auto-incrément


Du fait que la création d’un nouvel enregistrement, dans une même table et sur deux serveurs diffé-
rents, risque de générer le même identifiant au même instant, il est nécessaire d’anticiper toute colli-
sion au niveau des auto-incréments. 

Une astuce consiste à attribuer les identifiants impairs au premier serveur et les identifiants pairs au se -
cond. Ainsi, le fichier my.cnf du premier master comporte-t-il les deux lignes suivantes :

auto_increment_increment = 2   

auto_increment_offset = 1

Le fichier du second master est également complété de la façon suivante :

auto_increment_increment = 2   

auto_increment_offset = 2

Condition préalable : faire écouter la base de données en réseau.


Sur le master 1 : configuration du fichier my.cnf

Redémarrer le serveur mysql


Création de l’utilisateur de réplication sur le master 1
Faire un show master status pour copier les fichier bin et la position à envoyer sur le second serveur :

Sur le master 2, configurer également le fichier my.cnf et s’assurer que la base écoute en réseau.
Redémarrer le serveur mysql

Créer un utilisateur aussi et lui donner les droits de réplications comme sur le premier master.

Arrêter le slave et renseigner les informations du master 1 sachant que vous êtes sur le master 2 :

Prendre à présent les informations du master 2 à copier sur le master 1 :


Retourner à présent sur le premier master.

Se connecter, arrêter le slave et faire les modifications ci-dessous :

A cette étape tout fonctionne. https://www.cloudjojo.com/how-to-setup-mysql-replication-on-


ubuntu-16-04-master-master/

Répartition de charges ou Load balancing avec NGINX


NGINX open source can forward TCP connections or UDP datagrams from clients to an
upstream group or a proxied server.

Installer la dernière version de nginx afin de faire du TCP/UDP load balancing (cf doc nginx https://
nginx.org/en/linux_packages.html#Ubuntu )

Pour avoir le dépôt de la version stable :


echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Ensuite, importer les clés :


curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add –

Mettre à jour et installer :


sudo apt update
sudo apt install nginx
https://docs.nginx.com/nginx/admin-guide/load-balancer/tcp-udp-load-balancer/

Load balancing refers to efficiently distributing network traffic across multiple backend servers.
 Prérequis
 latest NGINX open source 
 An application, database, or service that communicates over TCP or UDP
 Upstream servers, each running the same instance of the application, data-
base, or service

Configuring Reverse Proxy


Configurer un reverse proxy de telle sorte que le serveur nginx redirige les connexions tcp des
clients vers un groupe de serveurs, chaque serveur exécutant une même instance d’une base
de données. Pour ce faire, créer le block stream. A l’intérieur du block stream, il faut créer
également un groupe upstream de serveurs vers lesquels la charge sera répartie. Par défaut,
NGINX utilise la méthode round robin pour répartir la charge. Il s’agit d’une répartition équili-
brée. Vous avez la possibilité d’utiliser le paramètre least_conn afin que le load balancer redi-
rige les requêtes vers le serveur qui a le moins de connexions actives. Vous avez également
la possibilité d’attribuer à chaque serveur un poids avec le paramètre weight. Le serveur qui a
le poids le plus élevé recevra en priorité les requêtes par rapport aux autres. Il peut s’agir
du serveur qui a le plus de ressources physiques.
Créer ensuite le block server à l’intérieur duquel vous allez mettre le port
d’écoute et et le paramètre proxypass qui correspond au nom de de votre
groupe de serveurs (upstream)

Modifier le fichier nginx.conf dans le dossier /etc/nginx comme ci-des -


sous :
Redémarrer le serveur :

Serveur proxy : 10.0.0.12


Serveur master 1 : 10.0.0.8
Serveur master 2 : 10.0.0.10

Client 1 pour tester :


Sur les deux serveurs, créer un utilisateur qui aura à accès aux bases de données en réseau.
Se connecter à présent avec l’utilisateur, mais en utilisant comme adresse IP le serveur proxy
mysql sachant qu’il n’y a aucune base de données sur ce serveur.

Partie 3 :
Activation des logs mysql.

Après faire tail -f /var/log/mysql/mysql.log

La journalisation concerne la consignation des traces d’activités du système et de ses compo-


sants. Ses traces sont placées dans divers fichiers qu’on appelle des journaux ou log.
Comment supprimer son installation de Mysql totalement y compris les fichiers de configuration ?
1. sudo apt autoremove --purge mysql-server\* mariadb-server\*
2. sudo mv /var/lib/mysql /var/lib/mysql.bak ou rm -rf
3. sudo mv /etc/mysql /etc/mysql.bak ou rm -rf
4. sudo mkdir -p /etc/mysql/conf.d
5. sudo apt clean

Que faire si impossible de se connecter à Phpmyadmin sans mot de passe ? 

Décommenter dans /etc/phpmyadmin/config.inc.php, à 2 endroits différents, les lignes :

$cfg['Servers'][$i]['AllowNoPassword'] = TRUE

Vous aimerez peut-être aussi