Sauvegardez MySQL sous Linux sans arrêter les services

par

dans

Vous connaissez probablement les deux façons régulières pour créer un instantané de votre base de données MySQL application cohérente. Nous allons ressasser :

 

 

  • Option 1. Suspendre le service MySQL
    Le service MySQL est arrêté pendant quelques secondes alors que la photo est créée puis a commencé à nouveau. La base de données (et généralement l’application sur le dessus, aussi) doivent être arrêtés. Cette disponibilité du service des impacts et de la performance (puisque tous les caches application / base de données sont effacées et doivent être reconstruites).

 

  • Option 2. Utilisez Dump en ligne
    Une décharge en ligne de chaque base de données est prise en utilisant la commande mysqldump qui copie une base de données pour le stockage accessible depuis le serveur MySQL. capacité de stockage supplémentaire et de stockage E / S sont nécessaires pour copier le fichier entier sur. Ce processus peut prendre un temps considérable.

 

Option 3. Locker les tables et flusher le disque

Cependant, je voudrais présenter une troisième option, conçu et testé par Jelmer Jaarsma .

  • Option 3. tables de base de données de verrouillage et rincer le disque.
    Le service MySQL est pas arrêté, mais verrouillé pendant quelques secondes (pour éviter toute modification des bases de données) , tandis que les tables ouvertes sont vidées sur le disque. Ensuite, l’instantané VMware est créé et la base de données est déverrouillée. Il n’y a aucun temps d’arrêt ou d’un service impact disponibilité et pas besoin de reconstruire le cache ou créer une copie complète de la base de données.

Alors, comment fonctionne cette chose?

Cette option utilise encore l’intégration régulière (à l’aide de pré-gel et les scripts de post-dégel) entre le logiciel de sauvegarde, la couche VMware et l’OS invité Linux dans la machine virtuelle.

  • pré-gel script
    • Créez deux fichiers de verrouillage temporaires et le script lancement d’arrière-plan. script de pré-gel se déroulera jusqu’à la base de données est verrouillée.
    • script Contexte videra tables sur le disque et la base de données d’écriture-lock.
    • Enfin, il supprime un fichier de verrouillage temporaire. Cela indique le script de pré-gel que la base de données est prêt pour snapshotting; le script se termine sans erreur
    • Avec le script de pré-gel terminée, Veeam va maintenant créer l’instantané (avec la base de données verrouillée)
  • LockTables scénario
(
echo "FLUSH TABLES WITH READ LOCK;" &&
sleep 5 &&
touch ${WAITFORSNAPSHOT} &&
rm -f ${WAITFORLOCK} &&
while [ -e ${WAITFORSNAPSHOT} ]; do sleep 1; done &&
echo "SHOW MASTER STATUS;" &&
echo "UNLOCK TABLES;" &&
echo "quit"
) | mysql --defaults-file=/root/.my.cnf
  • post-dégel script
    • Lors de la création de l’instantané, le script d’arrière-plan est toujours en cours, en gardant la base de données verrouillée.
    • Après l’instantané a été créé avec succès, le script de post-décongélation supprime le fichier 2 de verrouillage temporaire. Cela arrête le script d’arrière-plan, le déverrouillage de la base de données et l’exploitation continue de la base de données normale
    • Pas de temps d’arrêt; seulement quelques secondes base de données file d’attente de requête

Comment faire !

  • Activez l’option « Quiesce » dans votre client de sauvegarde sous l’onglet vSphere (dans configuration avancée)
  • Copiez ce fichier zip attaché à / root sur ​​votre serveur.
  • Faire les trois scripts exécutables
chmod +x /root/backup/locktables.sh
chmod +x /root/backup/pre-freeze-script.sh
chmod +x /root/backup/post-thaw-script.sh

  • Créer des liens symboliques vers / usr / sbin / scripts (où les outils VMware attend à trouver les scripts)
ln -s /root/backup/pre-freeze-script.sh /usr/sbin/pre-freeze-script
ln -s /root/backup/post-thaw-script.sh /usr/sbin/post-thaw-script

  • Réglez le mode d'accès correct aux scripts:
chmod 755 /usr/sbin/pre-freeze-script
chmod 755 /usr/sbin/post-thaw-script

  • Créer le répertoire temporaire
mkdir /var/run/veeam

  • S'il vous plaît définir le mot de passe pour MySQL en /root/.my.cnf pour l'accès automatisé. Voir ce post pour les détails .


 


Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Translate »