« MySQL/Réplication » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 29 :
Dans <code>/etc/mysql/my.cnf</code>, section <code>[mysqld]</code> :
* Définir un identifiant de serveur ; par exemple <code>1</code> :
<source lang=bash>
server-id = 1
</source>
* La réplication est basée sur les logs binaires, donc les activer :
<source lang=bash>
log-bin
# ou log-bin = /var/log/mysql/mysql-bin.log
</source>
 
Créer un nouvel utilisateur pour que le slave puisse se connecter :
Ligne 50 ⟶ 54 :
Dans <code>/etc/mysql/my.cnf</code>, section <code>[mysqld]</code> :
* Définir un identifiant de serveur différent du master et des autres slaves :
<source lang=bash>
server-id = 2
</source>
* Vérifier avec :
<source lang=sql>
Ligne 56 ⟶ 62 :
</source>
* Il est aussi possible de déclarer le nom de la machine slave dans le master (cf. <code>SHOW SLAVE HOSTS</code>) :
<source lang=bash>
report-host=slave1
</source>
 
Déclarer le master :
<source lang=sql>
Ligne 85 ⟶ 92 :
</source>
Exemple :
<source lang=bashsql>
*************************** 1. row ***************************
Slave_IO_State:
Ligne 94 ⟶ 101 :
</source>
Vérifier en particulier :
<source lang=bashsql>
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
</source>
On peut supposer une nature réplication asynchrone :
<source lang=bashsql>
Seconds_Behind_Master: 0
</source>
Voir aussi :
<source lang=bashsql>
mysql> SHOW GLOBAL VARIABLES LIKE "%SLAVE%";
</source>
Ligne 109 ⟶ 116 :
==== Sur le master ====
Vérifier les connexions des slaves :
<source lang=bashsql>
mysql> SHOW PROCESSLIST\G
[...]
Ligne 144 ⟶ 151 :
 
Dans ce cas, regarder la trace dans le log (généralement <code>/var/log/syslog</code>) :
<source lang=bashsql>
Oct 15 21:11:19 builder mysqld[4266]: 101015 21:11:19 [ERROR] Slave: Error 'Table 'mybase.form'
doesn't exist' on query. Default database: 'mybase'. Query:
Ligne 168 ⟶ 175 :
 
Pour supprimer une réplication :
<source lang=bashsql>
mysql> RESET SLAVE;
</source>
Ligne 175 ⟶ 182 :
 
Attention : <code>STOP SLAVE</code> arrêt la réplication. Elle peut être relancée manuellement ensuite, ou bien automatiquement lors de la relance du serveur MySQL. Pour éviter ce lancement automatique :
<source lang=bashsql>
slave-skip-start
</source>
 
Pour arrêter d'utiliser la réplication, vérifier que la configuration est bien vide :
<source lang=bashsql>
mysql> SHOW SLAVE STATUS;
Empty set (0.00 sec)