La meilleure façon d'Archiver la base de données MySQL en direct

nous avons une base de données MySQL en direct qui est 99% INSERTs, environ 100 par seconde. Nous voulons archiver les données chaque jour afin de pouvoir exécuter des requêtes sans affecter la base de données principale, en direct. De plus, une fois l'archive terminée, nous voulons effacer la base de données en direct.

Quelle est la meilleure façon de le faire sans (si possible) Inserts de verrouillage? Nous utilisons INSERT DELAYED pour les requêtes.

24
demandé sur DavidM 2008-09-15 21:50:23
la source

6 ответов

http://www.maatkit.org/ a mk-archiveur

archive ou efface les lignes d'une table vers une autre table et/ou un fichier. Il est conçu pour "grignoter" efficacement les données en très petits morceaux sans interférer avec les requêtes critiques de traitement des transactions en ligne (OLTP). Il accomplit ceci avec un plan de requête non-retracking qui garde sa place dans la table de requête en requête, de sorte que chaque requête subséquente fait très peu de travail pour trouver plus archivable rangée.

une autre alternative est de simplement créer une nouvelle table de base de données chaque jour. MyIsam a quelques avantages pour cela, puisque les INSERTs à la fin de la table ne bloquent généralement pas de toute façon, et il y a un type de table de fusion pour être tous ensemble. Un certain nombre de sites Web enregistrent le trafic httpd vers des tables comme celle-ci.

avec Mysql 5.1, il y a aussi des tables de partitions qui peuvent faire la même chose.

13
répondu Alister Bulman 2008-09-15 22:18:42
la source

Sons comme la réplication est la meilleure solution pour cela. Après la synchronisation initiale, l'esclave reçoit les mises à jour via le Binaire Log

j'utilise des tables de partitions mysql et j'ai obtenu de merveilleux résultats dans tous les aspects.

2
répondu Eduardo Xavier 2009-05-19 20:49:34
la source

la réplication MySQL fonctionnerait parfaitement pour cela.

Master -> le serveur live.

Esclave -> d'un autre serveur sur le même réseau.

1
répondu Seun Osewa 2008-09-16 04:13:56
la source

MK-ARCHIVER est un outil élégant pour archiver des données MYSQL.

http://www.maatkit.org/doc/mk-archiver.html

1
répondu 2009-07-09 04:41:53
la source

pouvez-vous garder deux bases de données en miroir? Ecrivez à l'un, Gardez le second comme une archive. Changez toutes les 24 heures (ou la durée que vous jugez appropriée). Dans la base de données qui était l'archive, insérez toute l'activité d'aujourd'hui. Alors les deux bases de données devraient concorder. Utilisez ceci comme le nouveau live db. Prenez la base de données archivée et faites ce que vous voulez. Vous pouvez sauvegarder/extraire / lire tout ce que vous voulez maintenant que son n'est pas activement écrit.

C'est un peu comme avoir un miroir raid où vous pouvez prendre un lecteur hors ligne pour la sauvegarde, resync il, puis prendre l'autre lecteur pour la sauvegarde.

0
répondu Doug T. 2008-09-15 21:57:25
la source

Autres questions sur