MySQL: sauvegardes incrémentales automatisées des tables InnoDB - mysql, backup, innodb

Je sais qu'il y a eu des questions similaires / connexes sur SO et ailleurs, et je pense au moins que je comprends les différentes options.

Nous avons une base de données MySQL (Community Edition) assez largeavec les tables InnoDB. Je voudrais prendre des photos quotidiennes de la base de données à sauvegarder hors site. Actuellement, j'utilise un script mysqldump qui est exécuté par cron.daily. Cependant, il faut 3 heures pour écrire la copie. Donc, ça doit être incrémental.

Comme nous sommes l'édition communautaire et ne pouvons pas nous permettreEnterprise ne dispose pas d’InnoDB hotcopy, solution viable car non bloquante. L’autre option consiste à activer la journalisation binaire et à effectuer des mises à jour incrémentielles. Mais cela semble être une douleur colossale et propice aux erreurs: débusquage et rotation des journaux , enregistrer des horodatages, etc. Le conseil semble être d'éviter cela si possible.

La dernière option consiste donc à configurer la réplication avec une configuration maître-esclave. J’ai scanné la documentation mais je ne sais pas ce qui constitue un "maître" et ce qui constitue un "esclave". Quelques questions:

  • Un esclave est-il un processus mysqld séparé?
  • L'esclave peut-il fonctionner sur la même machine que le maître?
  • Une fois le paramétrage effectué, une intervention est-elle nécessaire ou le Maître va-t-il appliquer toutes les mises à jour?
  • Pour faire mes sauvegardes sans impacter le maître, je suppose que je peux simplement exécuter mysqldump sur l'esclave?
  • Et enfin, est-ce une solution raisonnable pour conserver une sauvegarde pour la copie hors site?

Merci richard

Réponses:

2 pour la réponse № 1

Un esclave est-il un processus mysqld séparé?

il n'est pas nécessaire d'utiliser un démon mysql séparé,
en maître, vous activez le journal binaire
en esclave, vous configurez relay-bin et les informations pertinentes sur le maître
(voir http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html)

L'esclave peut-il fonctionner sur la même machine que le maître?

Oui mais ne fais pas ça ,
car une fois que la machine s'est écrasée,
votre maître et votre esclave sont partis
(DTP)

Une fois le paramétrage effectué, une intervention est-elle nécessaire ou le Maître va-t-il appliquer toutes les mises à jour?

le maître poussera fidèlement toutes les mises à jour,
master enregistre les sqls d'écriture en log binaire,
et esclave devrait obtenir le journal binaire

cependant,

  1. le verrouillage de la table pourrait entraîner un délai de réplication sur l'esclave
  2. Echec de la requête en écriture qui ne peut pas être exécutée sur un esclave

vous pouvez traiter la réplication est juste une méthode qui permet à TOUTES les sqls de s'exécuter sur le maître,
copie sur esclave,
et exécuter à nouveau dans l'ordre de réception
(c'est ce que fait le journal binaire)

Pour faire mes sauvegardes sans impacter le maître, je suppose que je peux simplement exécuter mysqldump sur l'esclave?

Bien sûr, ceci est le but d'avoir l'esclave
Cependant, il y aura un peu de retard ...
quand vous videz les données,
vous pouvez bloquer la table en écriture (en supposant qu'innodb ait un impact moindre),
alors que le maître pourrait continuer à écrire

Et enfin, est-ce une solution raisonnable pour conserver une sauvegarde pour la copie hors site?

oui, c'est considéré comme une reprise après sinistre mysql


1 pour la réponse № 2

Un esclave est-il un processus mysqld séparé?

Ce peut être le cas, mais il s’agit plus généralement d’un serveur MySQL distinct installé sur une machine différente.

L'esclave peut-il fonctionner sur la même machine que le maître?

Oui, si vous devez le faire, attribuez-lui simplement un numéro de port différent et un ID_serveur différent.
Notez que ce n’est pas vraiment une sauvegarde si c’est sur la même machine.

Une fois le paramétrage effectué, une intervention est-elle nécessaire ou le Maître va-t-il appliquer toutes les mises à jour?

Le maître ne push n'importe quoi, l'esclave pulls les mises à jour.

Pour faire mes sauvegardes sans impacter le maître, je suppose que je peux simplement exécuter mysqldump sur l'esclave?

Oui, mais si maître et esclave s'exécutent sur le même ordinateur, exécutez mysqldunmp. volonté ralentissez ce serveur.

Et enfin, est-ce une solution raisonnable pour conserver une sauvegarde pour la copie hors site?

Oui, hors site est le mot clé ici.
Je placerais l'esclave hors site, ce qui est bien plus logique que d'avoir l'esclave sur la même machine.

Voici un tutoriel
http://www.howtoforge.com/mysql_master_master_replication


questions connexes
Menu