2011-01-21 3 views
0

Je suis en train de mettre à jour une base de données en direct en ajoutant de nouvelles tables.restauration de la base de données mysql

Y a-t-il un moyen, si ces mises à jour ne fonctionnent pas, de restaurer l'original?

Merci

+0

Si vous ne faites rien d'autre que d'ajouter de nouvelles tables, vous devriez juste pouvoir les "DROP". (Bien sûr, avoir trop de copies de sauvegarde n'est pas un gros problème, mais avoir trop peu est terrible.) –

Répondre

3

Si vous allez être modifier une base de données en direct, alors vous vraiment besoin de faire une sauvegarde avant de commencer, idéalement après avoir retiré l'accès de toute front- fin du site web, etc. afin qu'il n'y ait pas d'activité de base de données "active". (Cela pose moins de problème si vous utilisez InnoDB plutôt que des tables MyISAM, cela dit.) De plus, vous devriez idéalement empêcher tout accès à la base de données pendant que vous effectuez des modifications, sinon des changements pourraient être perdus si vous devez ramène la base de données à son état précédent.

Pour créer une sauvegarde, la solution la plus simple consiste à utiliser l'outil de ligne de commande mysqldump fourni avec MySQL. Cela va créer un fichier texte que vous pouvez utiliser pour restaurer la base de données à son état d'origine.

Comme un conseil, vous pouvez prendre l'avis spécial de l'option "--add-drop-table" car cela s'avérera utile si vous voulez écraser tout ce qui existe avec le contenu du fichier de sauvegarde. (NB: Ce sera bien sûr effacer TOUTES les données « actuelles ».)

Enfin, si vous allez faire des changements importants alors vous voulez vraiment:

  1. Créer un script qui exécute toutes les ALTERs nécessaires, etc. (Vous pouvez ensuite exécuter le script à partir de la ligne de commande via « mysql < [text file name] ».)

  2. Utilisez mysqldump pour vider le contenu actuel de la base de données, puis mettre en place un test base de données avec ces données afin que vous puissiez vous assurer que vos modifications fonctionnent comme prévu.

+0

Je pensais d'abord sauvegarder la base de données, en utilisant 'mysqldump -u root -ppassword live_db | mysql -u root -ppassword sauvegarde_db '. Je ne veux vraiment pas effacer les données actuelles. Je vais ajouter 4 tables à la base de données en direct. Donc, si quelque chose se brise, j'ai besoin de restaurer la base de données à la façon dont il était avant que ceux-ci ont été ajoutés. – terrid25

+0

Droit ok. J'ai le script sql avec la table CREATE etc etc des 4 nouvelles tables. J'ai aussi une sauvegarde de la DB et j'ai testé le Dscript, qui a ajouté 4 tables. Je suppose que mon inquiétude est, la DB en direct est de 1 Go. Donc je suppose que je vais devoir désactiver la base de données pendant que je la copie ... – terrid25

+0

@ terrid25 - Si vous ajoutez seulement de nouvelles tables (plutôt que de modifier celles qui existent déjà), et que cela fonctionne correctement sur une sauvegarde, alors vous devriez bien aller juste pour cela sur la base de données en direct. Sinon, je serais tenté de déconnecter les serveurs frontaux pendant que vous effectuez les sauvegardes/mises à jour selon ma réponse. –

5

Oui. En faisant une sauvegarde premier ..

+2

+1 De moi. (N'a pas pu résister à l'accent sur le "premier." Toutes mes excuses.) :-) –

+0

+1 et un crédit supplémentaire à @middaparka pour ** fortement en soulignant ** ça :) – BoltClock

+0

@middaparka: Pas besoin de s'excuser. : D – Mchl

Questions connexes