Quantcast
Channel: disponibilité – memo-linux.com
Viewing all articles
Browse latest Browse all 4

Heartbeat/mysql: Bascule esclave/maitre

0
0

Nous sommes dans la situation ou il faut redémarrer le serveur maitre

connection ssh sur les deux serveurs:

sur le maitre
#ssh maitre@IP

Arrêt du service heartbeat sur les deux serveurs

# service heartbeat stop
ou
#/etc/init.d/heartbeat stop
Même chose sur l’esclave
A partir de la, plus personne n’a accès à l’application web

MySql:

on va ce placer dans votre homedir sur les deux serveurs.
#cd /home

sur le serveur esclave on va récuperer la base mysql et la copier sur le serveur maitre:
[esclave]# mysqldump -u root -pMDP votre_bdd > votre_bdd.sql
[esclave]# scp votre_bdd.sql maitre@IP:/home

Passons sur le serveur maitre:

[maitre]#cd /home
on inject la la base:
[maitre]# mysql -u root -pMDP votre_bdd.sql > votre_bdd.sql

Maintenant, on va activer la replication de la base MySql du serveur maitre sur l’esclave: sur le serveur maitre: tout d’abord on va se connecter sur la base

[maitre]# mysql -u root -pMDP
Puis on bloque la base en lecture seul
mysql>: FLUSH TABLES WITH READ LOCK;

On repère la position de la base:
mysql > SHOW MASTER STATUS;
+---------------------+------------+---------------------+--------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+------------+---------------------+--
| mysql-bin.000003 | 73 | test,bar | foo,manual,mysql |
+---------------------+------------+---------------------------+
1 row in set (0.06 sec)

et on note:
mysql-bin.000003 ← le log bin à utiliser
73 ← la position du log
évidemment à adpater suivant le cas.

sur le serveur esclave:
on se connect aussi à la base mysql
[esclave]# mysql -u root -pMDP

on stop la réplication en cours
mysql>stop slave;

on fait une RAZ de la réplication
mysql>reset slave;

On va positioner le serveur esclave comme le maitre:
mysql> CHANGE MASTER TO MASTER_HOST = 'IP', MASTER_USER = 'repli', MASTER_PASSWORD = 'repli', MASTER_LOG_FILE = 'mysql-bin.000003', MASTER_LOG_POS = 73;

on démarre la réplication
mysql> start slave;
on vérifie qu’on a pas d’erreur
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.94.8.58
Master_User: repli
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 73
Relay_Log_File: GLPI_esclave-relay-bin.000024
Relay_Log_Pos: 660186
Relay_Master_Log_File: mysql-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
******
Last_Errno: 0
Last_Error:
******
Seconds_Behind_Master: 0
1 row in set (0.00 sec)

on se déconnect de mysql
mysql>exit;

sur le serveur maitre on dévérouille l’écriture sur la base
mysql> UNLOCK TABLES;
on se déconnect de mysql
mysql>exit;

et pour finir on lance le script de lancement automatique des services heartbeat/mon/http/myslq:

[maitre]#./startHA
sur le serveur maitre c’est le même script sauf le service Mon en moins:
[sclave]#./startHA

on vérifie que l’IP virtuel est actif sur le serveur maitre
[maitre]#ifconfig

eth0:0 Link encap:Ethernet HWaddr 00:22:19:D7:73:48
inet adr:10.94.8.56 Bcast:10.94.15.255 Masque:255.255.248.0
UP BROADCAST RUNNING MULTICAST MTU:1492 Metric:1
Interruption:16

et dans le navigateur firefox, on fait un test de connection:
http://appliweb.com

SI TABLE CRASHED :

d’après le log on répère la table dite crashed

connexion à mysql :
#mysql -u root -pMDP ;

on selectionne la base
mysql>use votre_bdd ;

on répare la table
mysql>repair table nomdelatable ;

on sort de mysql
mysql>exit;


Viewing all articles
Browse latest Browse all 4

Latest Images





Latest Images