J'ai une dB mysql avec 500 Go, composée principalement de tables innovées et d'une grande table myisam. Ma stratégie de sauvegarde actuelle consiste à copier les fichiers DB à un disque dur externe. Cela provoque un temps d'arrêt de ~ 4h. Mes besoins:
Compte tenu actuellement d'essayer de passer à Percona Xtrabackup. Est-ce la bonne solution pour mon cas d'utilisation? Je suis spécifiquement préoccupé de verrouiller la table de myisam et la courbe d'apprentissage.
Dans le son de cela, vous pouvez utiliser une infrastructure de DB différente.
Sur la base de vos besoins susmentionnés, j'ai une suggestion mais nécessiterait un peu de compromis.
Suggestion n ° 1 : utilisez la réplication MySQL sur le même serveur mais différent du même disque
Votre deuxième besoin (No need of real-time replication
) devrait adopter une légère bassin dans cette suggestion. Puisque vous avez un disque dur externe assez grand pour Xtrabackup, pourquoi ne pas utiliser de datadir pour une deuxième instance de MySQL sur la même boîte?
J'ai scripté mon propre service pour approvisionner une instance mysql dédiée aux ports 3307 - 3399. Voici mes messages passés à ce sujet:
Sep 17, 2012
: Syntaxe de commande MySQLServiceSep 30, 2011
: exécution de plusieurs instances sur le même hôteSuggestion n ° 2 : Utilisez la réplication MySQL sur le serveur différent
En contrepartie de votre premier besoin (Low Cost
), si vous avez accès à un serveur de produits de base avec un disque de disques adéquat, configurez la réplication MySQL sur ce serveur externe. De cette façon, vous pouvez exécuter des sauvegardes sur l'esclave comme suit
STOP SLAVE;
START SLAVE;
Vous pouvez le faire avec un impact zéro (aucune charge de serveur, aucun disque d'E/S sur le maître.
Suggestion n ° 3 : parallèle mysqldumps
Vous pouvez configurer des mysqldumps parallèles de bases de données ou de tables. Cela peut entraîner une fenêtre de temps plus courte pour les sauvegardes. Xtrabackup fait essentiellement une sauvegarde transactionnelle du point choisi avec des opérations sensibles à temps de manière à ce que le moment-temps de la sauvegarde soit à la fin de la sauvegarde. Avec des mysqldumps parallèles sur un esclave qui ne se réplique pas vous donne des sauvegardes dont le point à temps est le début de la sauvegarde. Faire MySqldump sur un esclave arrêté serait un moteur de stockage agnostique. En d'autres termes, peu importe que des tables soient innovées ou myisam.
Si vous appliquez ceci à la suggestion n ° 1, cela entraînera la charge de la charge de serveur et le disque d'E/S puisque la maîtrise et l'esclave résident sur la même machine.
Si vous appliquez cela à la suggestion n ° 2, il n'y a pas de pénalité sur le maître. Vous pouvez exécuter des sauvegardes à volonté sur l'esclave. Vous n'aurez pas non plus à vous préoccuper de tables myisam à verrouillage.
S'il vous plaît voir mes anciens messages sur faire des mysqldumps parallèles
Jul 24, 2012
: Comment copier une base de données MySQL qui est un mélange d'innoDB et de myisam sur le même serveur?May 22, 2012
: sauvegarde MySQL ServerOct 01, 2011
: sauvegarde rapide mysqlApr 17, 2011
: Comment puis-je optimiser un mysqldump d'une grande base de données?