Réplication Mysql Master-Master – La bonne méthode

 

http://stackoverflow.com/questions/2366018/how-to-re-sync-the-mysql-db-if-master-and-slave-have-different-database-incase-o

Il vous faudra au préalable avoir créé les users avec les droits de réplication

Sur le serveur A

Dans une console car il faudra maintenir la connexion pour tenir le verrou à l’écriture

$ mysql

mysql> RESET MASTER;
Query OK, 0 rows affected (0.37 sec)

mysql> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.10 sec)

mysql> SHOW MASTER STATUS;
+---------------------+----------+--------------+---------------------------------------------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB                                        |
+---------------------+----------+--------------+---------------------------------------------------------+
| A-mysql-bin.000001 |     5235 |              | mysql,performance_schema,information_schema,test         |
+---------------------+----------+--------------+---------------------------------------------------------+
1 row in set (0.00 sec)

puis dumper les bases souhaitées depuis un terminal par exemple
mysqldump -uroot -p --all-databases > /a/path/mysqldump.sql
puis enfin dans la console mysql
UNLOCK TABLES;

 

Sur le serveur B

STOP SLAVE;

importer le dump

mysql < mysqldump.sql
RESET SLAVE;
CHANGE MASTER TO MASTER_HOST = 'serverA', MASTER_PORT = 3306, MASTER_USER = 'slaveuser',
MASTER_PASSWORD = 'xxxxx', MASTER_LOG_FILE = 'A-mysql-bin.000001', MASTER_LOG_POS = 5235;
SLAVE START;

On peut dors et déjà vérifier que la réplication se fait du serveur A vers le serveur B en ajoutant une db ‘bidon’ sur A elle apparaitra sur B. Pour la supprimer il faudra le faire depuis A (sur B ne doit se tenir aucune écriture)

 

Puis il suffit de vérouiller les table en READ sur serveur B et de faire la même chose dans l’autre sens

Sur B saisir dans mysql

mysql> RESET MASTER;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
+---------------------+----------+--------------+---------------------------------------------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB                                        |
+---------------------+----------+--------------+---------------------------------------------------------+
| B-mysql-bin.000001 |      107 |              | mysql,performance_schema,information_schema,test         |
+---------------------+----------+--------------+---------------------------------------------------------+

Puis sur A
CHANGE MASTER TO MASTER_HOST = 'serverB', MASTER_PORT = 3306, MASTER_USER = 'slaveuser', MASTER_PASSWORD = 'xxxxxx', MASTER_LOG_FILE = 'B-mysql-bin.000001', MASTER_LOG_POS = 107;
SLAVE START;

A ce stade tout devrait être en ordre et la syncro devrait fonctionner dans les deux sens.

 

Sur B ne  pas oublier de lever le verrou

UNLOCK TABLES;

 

 

 

linux: Identifier les sites web (dns) pointant sur une ip virtuelle/failover

 

Chez online.net, un certain nombre d’adresses ip doivent migrer.

Une fois avoir configurer le serveur pour qu’il fonctionne sur l’ancienne ip et la nouvelle conjointement il reste à configurer les dns de chaqu’un des sites hébergés.

Cette ligne de commande permet d’afficher les sites web accédant au serveur sur son ancienne ip 1.2.3.4

# tcpdump -i eth0 -s 0 -A 'dst host 1.2.3.4 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420' | grep Host\:

solution inspirée de ces deux articles

http://stackoverflow.com/…-response-header-and-response-body
http://serverfault.com/…capturing-traffic-coming-to-a-specific-virtual-interface

 

5 sep 2014: correction d’une erreur de guillemets typographiques