Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
informatique:db:mysql [2016/03/31 12:39] – [Optimiser MySQL] bn8 | informatique:db:mysql [2016/12/06 17:50] (Version actuelle) – [Réplication Master-Master] bn8 | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
===== Benchmark de MySQL ===== | ===== Benchmark de MySQL ===== | ||
- | | + | <code sql>SELECT benchmark(100000000, |
| | ||
===== Reset un mot de passe root perdu ===== | ===== Reset un mot de passe root perdu ===== | ||
- | | + | <code bash>sudo / |
- | sudo mysqld_safe --skip-grant-tables & | + | sudo mysqld_safe --skip-grant-tables & |
- | mysql | + | mysql</ |
- | > update mysql.user set password = password(' | + | <code sql> |
- | > | + | update mysql.user set password = password(' |
- | > | + | flush privileges; |
- | sudo / | + | exit</ |
- | sudo / | + | <code bash>sudo / |
+ | sudo / | ||
===== Dump des privilèges des utilisateurs ===== | ===== Dump des privilèges des utilisateurs ===== | ||
- | | + | <code bash>mysql -B -N $@ -e " |
- | 'SHOW GRANTS FOR ''', | + | 'SHOW GRANTS FOR ''', |
- | ) AS query FROM mysql.user" | + | ) AS query FROM mysql.user" |
- | mysql $@ | \ | + | mysql $@ | \ |
- | sed ' | + | sed ' |
===== Réplication Master-Master ===== | ===== Réplication Master-Master ===== | ||
Ligne 38: | Ligne 39: | ||
log_bin = / | log_bin = / | ||
* Commenter la ligne : < | * Commenter la ligne : < | ||
- | * Exécuter la requête SQL suivante : < | + | * Exécuter la requête SQL suivante : < |
* Redémarrer le service //MySQL// | * Redémarrer le service //MySQL// | ||
* Sur serveur 2 : | * Sur serveur 2 : | ||
Ligne 49: | Ligne 50: | ||
master-password = mdpslave | master-password = mdpslave | ||
master-port = 3306</ | master-port = 3306</ | ||
+ | |||
+ | < | ||
+ | |||
* Redémarrer le service //MySQL// | * Redémarrer le service //MySQL// | ||
- | * Exécuter la requête SQL suivante : < | + | * Exécuter la requête SQL suivante : < |
- | * Pour savoir si la réplication se passe correctement exécuter la requête suivante : < | + | * Pour savoir si la réplication se passe correctement exécuter la requête suivante : < |
* Le résultat de cette requête devrais être a peu près : < | * Le résultat de cette requête devrais être a peu près : < | ||
| | ||
Ligne 67: | Ligne 71: | ||
...</ | ...</ | ||
* Les valeurs // | * Les valeurs // | ||
- | * Cette vérification est également possible depuis serveur 1 en exécutant la requête SQL suivante : < | + | * Cette vérification est également possible depuis serveur 1 en exécutant la requête SQL suivante : < |
* Le résultat de cette requête devrais être a peu près : < | * Le résultat de cette requête devrais être a peu près : < | ||
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | | | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | | ||
Ligne 74: | Ligne 78: | ||
+------------------+----------+--------------+------------------+ | +------------------+----------+--------------+------------------+ | ||
1 row in set (0.00 sec)</ | 1 row in set (0.00 sec)</ | ||
- | * Exécuter ensuite la requête SQL suivante : < | + | * Exécuter ensuite la requête SQL suivante : < |
* Sur serveur 1 : | * Sur serveur 1 : | ||
* Editer le fichier /// | * Editer le fichier /// | ||
Ligne 82: | Ligne 86: | ||
master-port = 3306</ | master-port = 3306</ | ||
* Redémarrer le service //MySQL// | * Redémarrer le service //MySQL// | ||
- | * Exécuter la requête SQL suivante : < | + | * Exécuter la requête SQL suivante : < |
- | * Vérifier que la synchronisation se passe correctement dans se sens également en exécutant la requête SQL : < | + | * Vérifier que la synchronisation se passe correctement dans se sens également en exécutant la requête SQL : < |
* Le résultat de cette requête devrais être a peu près : < | * Le résultat de cette requête devrais être a peu près : < | ||
| | ||
Ligne 99: | Ligne 103: | ||
...</ | ...</ | ||
* Les valeurs // | * Les valeurs // | ||
- | * Sur serveur 2, la requête SQL suivante < | + | * Sur serveur 2, la requête SQL suivante < |
La synchronisation est normalement opérationnel. | La synchronisation est normalement opérationnel. | ||
Ligne 105: | Ligne 109: | ||
===== Si ça se passe mal ===== | ===== Si ça se passe mal ===== | ||
- | *Si vous rencontrez une erreur du type : | + | ==== Could not find first log file name in binary log index file ==== |
+ | |||
+ | Si vous rencontrez une erreur du type : | ||
| | ||
| | ||
- | Voici la solution à appliquer | + | Voici la solution à appliquer : |
- | + | ||
- | *Sur le slave : | + | |
- | + | ||
- | stop slave; | + | |
- | + | ||
- | *Sur le master | + | |
- | flush logs; | + | * Sur le slave : <code sql>stop slave;</ |
- | | + | * Sur le master : |
+ | * Exécuter : <code sql>flush logs; | ||
+ | show master status;</ | ||
+ | * Noter le nom du log et la position | ||
+ | *Sur le slave : <code sql> | ||
+ | start slave;</ | ||
+ | ==== Resynchro complète d'une des machines sur l' | ||
- | | + | |
+ | * Exécuter les commandes SQL suivantes : <code sql> | ||
+ | FLUSH TABLES WITH READ LOCK; | ||
+ | SHOW MASTER STATUS;</ | ||
+ | * Copier | ||
+ | * Faire un dump des bases : <code bash> | ||
+ | * Exécuter la commande SQL suivante : <code sql> | ||
+ | * Sur l' | ||
+ | * Exécuter la commande SQL suivante : <code sql>STOP SLAVE;</ | ||
+ | * Importer le dump généré sur l' | ||
+ | * Exécuter les commandes SQL suivantes en adaptant les variables // | ||
+ | CHANGE MASTER TO MASTER_LOG_FILE=' | ||
+ | START SLAVE;</ | ||
+ | * Vérifier que la synchro est bien reparti à l'aide de la requête SQL : <code sql>show slave status\G;</ | ||
- | | ||
- | start slave; | ||
===== Optimiser MySQL ===== | ===== Optimiser MySQL ===== | ||
Ligne 130: | Ligne 147: | ||
Utiliser l' | Utiliser l' | ||
- | < | + | < |
# Get a list of all fragmented tables | # Get a list of all fragmented tables | ||
Ligne 146: | Ligne 163: | ||
===== Recrée l' | ===== Recrée l' | ||
- | < | + | < |
===== Extraire les dumps DB par DB d'un dump complet ===== | ===== Extraire les dumps DB par DB d'un dump complet ===== | ||
Ligne 152: | Ligne 169: | ||
Le script ci-dessous automatise cela : | Le script ci-dessous automatise cela : | ||
- | < | + | < |
IN=" | IN=" |