Partage
  • Partager sur Facebook
  • Partager sur Twitter

Réplication multi bases - multi sites

Sujet résolu
21 novembre 2018 à 14:31:15

Bonjour

J'essai de mettre en place une réplication de bases de données qui me pose quelques problèmes.

J'ai plusieurs serveur ayant chacun une base de donnée de structure et de nom identique entre les serveurs (nommée test pour l'exemple). Chaque serveur a ses propres informations et donc les données des bases ne sont pas les mêmes.

Je souhaite répliquer ses bases sur un unique serveur pour pouvoir accéder à toutes depuis un point central.

Schématiquement ca donne ca :

SERVEUR_1                     SERVEUR_2                     SERVEUR_3                       ...

BD test                               BD test                               BD test                                ...

données A                       données B                        données C                        ...

       |____________________|____________________|

                                                      |

                                    SERVEUR_CENTRAL

                                BD test (du serveur_1) avec données A

                                BD test (du serveur_2) avec données B

                                BD test (du serveur_3) avec données C

Je souhaites distinguer les différentes bases et ne pas mélanger les données dans mon serveur central.

Quelle solution dois-je mettre en place ?  ( Réplication multi master ? ou plusieurs processus mysql ? Autre ?)

Je me suis penché sur la solution de réplication multi-master : Est ce que ca va me créer des tables différentes pour chaque master ou ca regroupe toutes les données dans une unique table de même nom sur mon slave ?

Merci pour vos réponses.

-
Edité par Zeilu 21 novembre 2018 à 14:36:15

  • Partager sur Facebook
  • Partager sur Twitter
21 novembre 2018 à 18:05:02

J'ai des doutes sur une telle faisabilité.

Car les base de données (PostgreSQL sur, pour MySQL je crois -à confirmer- ) c'est le système de base de données entier qui est répliqué, et non juste une base de données.

Or, tu veux que ton serveur central dépende de trois autres serveurs. Je ne crois pas que ce soit possible. En tout cas pas en temps réel.

Peut-être que le moins pire est de créer un système de sauvegarde / restauration, et de mettre à jour sur le serveur centrale les base de données depuis leurs sauvegardes respectives à interval régulier.

Mais ça peut être très long si les bases sont volumineuse.

  • Partager sur Facebook
  • Partager sur Twitter
26 novembre 2018 à 15:06:10

Bonjour Sebajuste.

Je ne comprends pas trop ce que tu veux dire par "c'est le système de base de données entier qui est répliqué".

Avec le système de réplication MASTER-SLAVE, on peut choisir quelle base de données est à synchroniser avec l'option "binlog-do-db."

Je me demande en fait si le sytème de réplication multi MASTER - un SLAVE va me créer plusieurs bases de données sur le slave ou une seule. Je vais faire les tests et voir ce que ca donne.

En effet, mes bases sont beaucoup trop volumineuse pour faire des sauvegardes / restaurations, sans compter le temps de transfert entre les serveurs.

  • Partager sur Facebook
  • Partager sur Twitter
3 décembre 2018 à 16:42:41

J'ai fait mes tests : Comme prévu, mes bases de données distante ayant le même nom, les commandes sql modifient toutes la même base sur mon esclave.

  • Partager sur Facebook
  • Partager sur Twitter
4 décembre 2018 à 10:25:41

Avec PostgreSQL, je conseillerais d'utiliser la réplication logique, qui permet de répliquer au niveau des objets (clef primaire) et non au niveau physique.  https://docs.postgresql.fr/10/logical-replication.html

Mais il semble que tu utilises MySQL. Peut être que le plus simple est de renommer chacun des bases distantes. Ainsi ton serveur centrale aurait bien les 3 bases de données distinctes synchronisées.

  • Partager sur Facebook
  • Partager sur Twitter
4 décembre 2018 à 11:16:08

Tu as regardé:

https://mariadb.com/resources/blog/multisource-replication-how-to-resolve-the-schema-name-conflicts/

Qui permet de faire de la réplication en changent les noms de schémas (et qui permettrait de faire ce que tu cherche à faire je pense, mais je ne sait pas si c'est compatible avec toutes les versions).

-
Edité par florent m 4 décembre 2018 à 11:17:26

  • Partager sur Facebook
  • Partager sur Twitter
4 décembre 2018 à 17:50:41

C'est spécifique à MariaDB ? De mémoire les schémas n'étaient pas disponible sur MySQL (mais en même temps, je ne suis plus trop au courant des dernières versions... )
  • Partager sur Facebook
  • Partager sur Twitter
4 décembre 2018 à 18:15:07

Ne serait-il pas plus simple de créer 1 couple de serveurs MASTER/SLAVE par installation ?

En gros chaque serveur distant à en face de lui une VM avec un serveur MySQL pour assurer la réplication sans problématique de nommage ...

Cela permet en plus de bien cloisonner tes installations et de ne pas mettre tous tes œufs dans le même panier ...

Mais je dis sûrement une grosse ânerie :-°

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
5 décembre 2018 à 9:35:08

J'y ai pensé aussi.

Mais l'avantage d'avoir les bases de données dans un seul système est de pouvoir faire une requète multi-base / multi-schema. 

  • Partager sur Facebook
  • Partager sur Twitter
6 novembre 2019 à 9:50:48

C'est en effet exactement ce que je cherchais. Merci.

Étant donné le besoin urgent lorsque j'ai posté ma question, j'ai adopté pour le changement de nom de base de donnée sur les masters mais il est bon de savoir que l'on peut faire plus propre et plus simple avec ta solution.

 

florent m a écrit:

Tu as regardé:

https://mariadb.com/resources/blog/multisource-replication-how-to-resolve-the-schema-name-conflicts/

Qui permet de faire de la réplication en changent les noms de schémas (et qui permettrait de faire ce que tu cherche à faire je pense, mais je ne sait pas si c'est compatible avec toutes les versions).

-
Edité par florent m 4 décembre 2018 à 11:17:26





-
Edité par Zeilu 6 novembre 2019 à 9:52:40

  • Partager sur Facebook
  • Partager sur Twitter