MTR (MySQL Test Runner) est un puissant framework de test officiellement fourni par MySQL. Il est largement utilisé dans les tests de reprise après sinistre et de récupération après panne de MySQL. MTR peut vérifier efficacement la stabilité et la fiabilité de MySQL dans différents environnements en automatisant l'exécution de divers scénarios de test. Dans cet article, nous présenterons quelques concepts de base et l'utilisation de MTR, et démontrerons sa pratique d'application dans les tests de reprise après sinistre et de reprise après panne à l'aide d'exemples de code réels.
1. Concepts de base de MTR
2. Pratique d'application du MTR dans les tests de reprise après sinistre
Dans les tests de reprise après sinistre, nous devons généralement vérifier la capacité de reprise après sinistre et la haute disponibilité de MySQL. Ce qui suit est un exemple de fichier de test MTR simple, utilisé pour tester la fonction de commutation de base de données en veille de MySQL.
--source include/have_innodb.inc --connect (con1,127.0.0.1,root,,test) --send CREATE USER 'repl'@'%' IDENTIFIED BY 'password'; --send GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; --send FLUSH PRIVILEGES; --connection con1 RESET MASTER; SET @UUID := UUID(); CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_AUTO_POSITION=1; START SLAVE; --connection default ... --wait_timeout=300 --reconnect --connection con1 STOP SLAVE IO_THREAD; --connection default --reconnect --connection con1 START SLAVE IO_THREAD; --connection default --connection con1 EXECUTE start_slave_io_thread(); --connection default --connection con1 RESET SLAVE ALL; --connection default ...
Le fichier de test MTR ci-dessus doit d'abord déclarer l'utilisation du moteur InnoDB, puis créer un utilisateur nommé repl et l'autoriser. Ensuite, vous configurerez les paramètres pertinents de la bibliothèque maître-esclave et démarrerez le processus de réplication de la bibliothèque esclave. Au cours du test, la fonction de commutation de base de données de secours de MySQL a été testée en arrêtant et en démarrant le processus de réplication à partir de la base de données esclave. Enfin, vérifiez si l'état de MySQL revient à la normale en exécutant la commande RESET SLAVE ALL.
3. Pratique d'application du MTR dans les tests de récupération après panne
Les tests de récupération après panne visent principalement à vérifier la récupération des données et la cohérence de MySQL après une panne. Ce qui suit est un exemple de fichier de test MTR simple pour tester la fonction de récupération du journal binaire de MySQL.
--source include/have_binlog_format_row.inc --connect (con1,127.0.0.1,root,,test) --connection con1 CREATE TABLE t (id INT PRIMARY KEY, name VARCHAR(50)); --connection default --send UPDATE t SET name='test' WHERE id=1; --wait_timeout=300 --reconnect --connection con1 DROP TABLE t; --connection default --send INSERT INTO t VALUES (2, 'test2'); --wait_timeout=300 --reconnect --connection con1 SELECT * FROM t; --connection default ...
Le fichier de test MTR ci-dessus doit d'abord déclarer l'utilisation du format binlog basé sur les lignes, puis créer une table nommée t et insérer une donnée. Au cours du test, la fonction de récupération du journal binaire de MySQL a été testée en supprimant la table et en réinsérant les données. Enfin, vérifiez si les données sont correctement restaurées en exécutant une instruction SELECT.
IV.Résumé
À travers les exemples ci-dessus, nous pouvons voir que MTR peut réaliser des tests complets de MySQL en termes de reprise après sinistre et de récupération après panne grâce à une organisation flexible des cas de test et des étapes de test. Dans les applications pratiques, nous pouvons écrire des cas de test plus complexes en fonction de besoins spécifiques et les combiner avec d'autres outils et scripts pour améliorer encore l'effet des tests. J'espère que cet article pourra inspirer la pratique d'application de MTR et être utile aux lecteurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!