Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 02/18/21 dans toutes les zones

  1. Objectif : L'objet principal de ce tutoriel est la réplication d'une base de données entre deux nas Synology d'un réseau local. Cette réplication peut avoir diverses utilisations, dans ce tutoriel je l'ai appliquée à la redondance d’un site Wordpress. Préambule : Il existe de nombreux tutoriels sur le web concernant la réplication d'une base de données SQL ou MariaDB et celui-ci en est largement inspiré. En le mettant en place sur mes deux nas Synology je me suis heurté à plusieurs problèmes. Il m'a fallu combiner les informations de plusieurs sites avant d'obtenir le résultat voulu. Depuis plusieurs mois que cette réplication est fonctionnelle, j'ai pu évaluer sa résilience et je dois dire que je suis surpris du résultat. Que ce soit l'arrêt d'un des deux nas ou la modification ou la mise à jour d'un des sites la synchronisation des deux bases reste effective. J’ai même récemment écrasé la base de données en important, à l’aide de phpMyAdmin, une ancienne sauvegarde sur l’un des nas et celle-ci a été immédiatement répliquée sur le deuxième nas. Pour l’application à la mise en place d’une redondance d’un site Wordpress présent sur les deux Nas d’un même réseau, en plus de la réplication de la base de données Wordpress, il faut synchroniser bilatéralement le contenu du répertoire wp-content. EDIT du 9/1/2022 : Pour l'accès au site en redondance totale, il faut faire, sur les deux nas, un virtual host avec le même nom wordpress.ndd. (Avec dsm7, faire un portail de serveur du paquet wordpress). N'étant pas un professionnel de l'informatique, mon vocabulaire peut s'avérer inadapté et la méthode employée peut sans doute être simplifiée. N'hésitez pas en m'en faire part, je modifierai en conséquence. Prérequis : Deux nas présents sur le même réseau local. Sur l’un des nas (nas1), MariaDB10, phpMyAdmin et Wordpress ont été installés et un site Wordpress est fonctionnel et accessible de l’extérieur. EDIT du 9/1/2022 : avoir une sauvegarde du site (répertoire wordpress) y compris de la base de données wordpress. Personnellement j'utilise le plugin gratuit "Updraft plus". Sur le nas2 Webstation et les différentes versions de PHP et Apache sont installées. Putty et WinSCP installés sur un PC de réseau avec accès au deux nas en mode vrai root (voir tuto https://www.nas-forum.com/forum/topic/57289-tuto-acc%C3%A8s-ssh-et-root-via-dsm-6/). Pour que le nas2 puisse prendre le relais du nas1 en cas de défaillance de ce dernier, il faudra utiliser l'IPV6 et mettre en place le tuto suivant : Application du protocole IPV6. Accès redondant à votre réseau local Sans cela une intervention manuelle sera nécessaire afin de modifier la redirection des ports du routeur vers le nas2. Préparation du nas 2: Installer MariaDB10, phpMyAdmin et Wordpress sur le nas 2 Sur le bureau, cliquer sur MariaDB10, cocher la case « activer la connexion TCP/IP » et sélectionner le port 3306. Faire de même sur le Nas 1. Les pare-feux des deux nas doivent être réglés pour n’autoriser l’accès à ce port que depuis le réseau local. phpMyAdmin : après installation, si la base de données phpMyAdmin n’apparaît pas, vous devez avoir une notification dans la partie basse, il suffit de suivre les instructions pour créer la base. Pour la suite, il faut autoriser la connexion de phpMyAdmin entre nas. Pour cela utiliser WinSCP en root et éditer le fichier /volume1/web/phpMyAdmin/config.inc.php Nota : Pour dsm7 remplacer web par web_packages Et ajouter la ligne suivante après la ligne 35 : $cfg['AllowArbitraryServer'] = true; Profitez-en pour renseigner la clé $cfg['blowfish_secret'] =' ' en insérant 32 caractères entre les apostrophes si ce n’est pas déjà fait. Faire cette opération sur les deux nas. Synchronisation du dossier wp-content Dans mon cas j'ai synchronisé le répertoire volume1/web_packages/wordpress/wp-content du nas1 sous dsm7 avec le répertoire volume1/web/wordpress/wp-content du nas2 sous dsm6. Pour cela j'ai utilisé Cloud Sync(dsm7) avec WebDAV(dsm6). Si les deux Nas ont la même version du dsm, il y a plusieurs façons de faire une synchronisation bilatérale des dossiers wp-content. EDIT du 9/1/2022 : J'ai validé ce tuto avec deux nas sous DSM7. Pour la synchronisation du dossier web_packages/wordpress/wp-content j'ai utilisé "Synology Drive ShareSync". A la création de la synchronisation, bien paramétrer une synchronisation unidirectionnelle du nas1 vers le nas2, avec effacement des fichiers du nas2 non présents sur le nas1. Un fois la synchronisation terminée (coche verte : cela peut prendre du temps) rendre la synchronisation bidirectionnelle. Nous voilà prêts pour la réplication des BdD. Réplication des bases de données wordpress Master-Slave Pour cette réplication on trouve de nombreux tutoriels sur internet. Je me suis largement inspiré de celui-ci : http://www.responsive-mind.fr/replication-mysql-master-master/ Sur les deux nas accéder en root à phpMyAdmin. Dans l’accueil, onglet réplication vous devez avoir ceci : EDIT du 12/12/2023 dans une nouvelle version de PhpMyAdmin on a : Réplication de l'original et Réplication des répliques Nous allons donc commencer par faire une réplication nas1 (maître) vers nas2 (esclave). Sur le nas 1 cliquer dans réplication maître sur « configurer » Dans le menu déroulant sélectionner « Ignorer toutes les bases de données, répliquer : » et dessous sélectionner wordpress. Copier les 4 lignes à ajouter à la fin du fichier my.cnf…..sauf que ce fichier n’existe pas encore ! On crée donc un fichier texte que l’on renommera my.cnf une fois édité avec les 4 lignes sans oublier d’ajouter : [mysqld] en tête de fichier. Pour les étourdis (comme moi) : Lorsque l’on renomme le fichier ne pas oublier de prendre également l’extension txt, pour cela bien démasquer les extensions. Avec WinSCP en root placer ce fichier dans /var/packages/MariaDB10/etc/ où l’on trouvera : my_port.cnf et synology.cnf . Les trois fichiers doivent avoir les mêmes droits 0644 et appartenir au même propriétaire : root. A ce moment-là redémarrer MariaDB10 pour prise en compte : Dans putty en root sur le nas, lancer la commande : /usr/syno/bin/synopkg restart MariaDB10 On revient sur phpMyAdmin du nas 1, sélectionner la BdD wordpress (la structure apparait dans la fenêtre de droite) puis l’onglet SQL. Entrer la commande suivante : GRANT REPLICATION SLAVE ON *.* TO 'synchro'@'192.168.1.15' IDENTIFIED BY 'motdepasse'; synchro : utilisateur de replication vous êtes libre du nom. 192.168.1.15 : à adapter c’est l’IP locales du nas 2 Motdepasse : au choix (je vous avouerais que j’ai gardé le même pour tous les mots de passe de ce tuto) N’oubliez pas les apostrophes. Nous allons maintenant vider les caches des privilèges et des tables, tout en les verrouillant en lecture seule, à l’aide des commandes suivantes (re-cliquer sur SQL pour entrer la commande): FLUSH PRIVILEGES; FLUSH TABLES WITH READ LOCK; Laisser cette instance de phpMyAdmin ouverte et ouvrir une seconde instance La BdD wordpress étant sélectionnée sur cette nouvelle instance, aller dans l’onglet exportation et cliquer sur exécuter pour télécharger la BdD. Refermer cette instance. Revenir sur l’instance précédente De retour sur l’onglet SQL taper : SHOW MASTER STATUS; Nous obtenons ceci : On note la position (ici 185432) et le nom du fichier ( ici mysql-bin.000003) Sur phpMyAdmin du nas 2 créer une BdD wordpress (nouvelle base de données donner-lui le même nom wordpress puis créer). Sélectionner wordpress à gauche puis l’onglet Importer. Choisir le fichier qui vient d’être téléchargé wordpress.sql puis cliquer sur exécuter en bas. L’importation est assez longue. Wordpress étant toujours sélectionné, entrer les instructions suivantes dans l’onglet SQL : STOP slave; CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='synchro', MASTER_PASSWORD='motdepasse', MASTER_LOG_POS=185432, MASTER_LOG_FILE='mysql-bin.000003'; START slave; On revient sur phpMyAdmin du nas1, wordpress toujours sélectionné, déverrouiller les tables : UNLOCK TABLES; Il ne reste plus qu’à redémarrer MariaDB10 sur les deux nas ( /usr/syno/bin/synopkg restart MariaDB10 dans putty) puis à vérifier le résultat dans l’onglet réplication. Sur le nas 1(accueil, onglet réplication, afficher l’état du maître) : Sur le nas 2 (accueil, onglet réplication, afficher l’état du slave) : Remarquez la première ligne : « waiting for master to send event » ainsi que Yes en face de « Slave_IO_Running » et « Slave_SQL_Running » . Master_Log_File et Master_Position sont identiques au valeurs master du nas1. Si vous avez une erreur vous pouvez tenter de réparer à l’aide de l’instruction sous ce tableau : gestion des erreurs/ignorer l’erreur courante. Parfois ça marche 😉 sinon il faudra recommencer à FLUSH PRIVILEGES; FLUSH TABLES WITH READ LOCK; car vous avez probablement manqué quelque chose. Si vous avez n'avez pas d'erreur, la réplication du nas 1 vers le nas 2 est maintenant effective. Mais pour une parfaite redondance des sites il faut maintenant faire la même chose dans l’autre sens. Réplication Master-Master Nous allons commencer par créer le fichier my.cnf dans le nas2 de la même façon que pour le nas1. Puis on redémarre MariaDB10. Dans phpMyAdmin du nas 2, wordpress étant sélectionné entrer les instructions suivantes dans l’onglet SQL : GRANT REPLICATION SLAVE ON *.* TO 'synchro'@'192.168.1.10' IDENTIFIED BY 'motdepasse'; SHOW MASTER STATUS; Puis reporter les info file et position sur phpMyAdmin du nas 1: STOP slave; CHANGE MASTER TO MASTER_HOST='192.168.1.15', MASTER_USER='synchro', MASTER_PASSWORD='motdepasse', MASTER_LOG_POS=123456, MASTER_LOG_FILE='mysql-bin.789123'; START slave; Redémarrer le service MariaDB10 sur les deux nas et vérifier les informations obtenues dans phpMyAdmin onglet "réplication"/état du serveur slave de chaque nas : « waiting for master to send event » ainsi que Yes en face de « Slave_IO_Running » et « Slave_SQL_Running »: EDIT du 9/1/2022 : Idem, si vous avez une erreur vous pouvez tenter de réparer à l’aide de l’instruction sous ce tableau : gestion des erreurs/ignorer l’erreur courante. Voilà. Si tout à bien fonctionné toute modification sur l'un des sites sera reproduite sur le second. Si vous notez des erreurs ou des maladresses ou si vous réalisez d'autre applications de la réplication de bases de données n'hésitez pas à poster ici.
    1 point
  2. @.Shad. Dans le paragraphe Pi-hole + serveur DNS local Il peut être intéressant de rappeler/préciser que si le serveur DNS se trouve sur l'hote (Synology DNS Server), il faut renseigner l'@IP de l'interface virtuelle dans DNS1. (Si j'ai bien compris!)
    1 point
Ce classement est défini par rapport à Bruxelles/GMT+01:00
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.