2012-01-30 10 views
0

Je comprends que je peux utiliser la commande BACKUP et RESTORE de MySQL pour sauvegarder une base de données et revenir en arrière si nécessaire.Créer une sauvegarde/restauration de base de données MySQL

Ma question est, je serais en mesure d'exécuter cette façon:

sql="BACKUP my_db TO DISK my_backup_folder WITH FORMAT #"; 

if ($stmt = $this->connect->prepare($sql)) {  
$stmt->execute(); 
$stmt->close(); 
} else { 
    $error    = true; 
    $message['error'] = true; 
    $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE; 
    return json_encode($message); 
} 

Et la restauration faite de la même façon:

sql="RESTORE DATABASE my_db FROM DISK my_backup_folder WITH FILE #"; 

if ($stmt = $this->connect->prepare($sql)) {  
$stmt->execute(); 
$stmt->close(); 
} else { 
    $error    = true; 
    $message['error'] = true; 
    $message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE; 
    return json_encode($message); 
} 

Et dans chaque cas, ce qui fait # position pour , est-ce .bak? Et y a-t-il autre chose que je devrais ajouter en plus de ce qu'il y a là-dedans?

+1

Les commandes 'BACKUP' et' RESTORE' ont-elles été introduites? – Mchl

+0

@Mchl - Que voulez-vous dire? – Roland

+0

Selon ma réponse et le commentaire de @ Mchl, ce sont des commandes obsolètes et ne sont pas la meilleure façon d'aborder un système de sauvegarde pratique pour MySQL. – quickshiftin

Répondre

1

Un pic rapide sur la ligne de commande montre qu'il s'agit de commandes obsolètes. Je dirais que tout conseil sur l'utilisation des commandes obsolètes est un peu inapproprié. Prenez un pic au mysqldump. Il existe également d'autres options telles que LVM snapshots etc.

+0

OK. J'ai essayé d'utiliser mysqldump, mais cela ne fonctionne pas sur mon serveur local, et je n'ai pas pu trouver pourquoi. Mais maintenant j'essaie une autre solution, je suis en boucle sur la base de données et j'obtiens toutes les tables existantes et tout ce qui s'y trouve. Et je fais des fichiers avec 'fopen' et j'écris les données dedans, aussi avec des commandes sql comme' CREATE TABLE IF NOT EXISTS' et autres. Quoi qu'il en soit, cette méthode que j'ai demandée n'a pas fonctionné aussi bien. – Roland

+0

Juste mon avis, mais je recommanderais de comprendre pourquoi mysqldump ne fonctionne pas. C'est un outil standard et il semble que vous le réécriviez à ce stade. Je parie que lorsque vous passerez mysqldump au travail, vous ne pourrez pas le remplacer par vos propres trucs. Mais qui sait, il y a parfois du mérite à de nouvelles solutions. – quickshiftin

+0

En effet. Eh bien, certains ont dit que c'est parce que je suis en train de tester dans un environnement Windows, mais j'ai XAAMP qui fait fonctionner tous les processus, tout ce que je veux dire, c'est cette commande. Certains disent que je n'ai pas accès à l'écriture, mais pour d'autres procédures qui écrivent des œuvres. Donc, je ne pouvais pas comprendre pourquoi cela ne fonctionne pas. Et j'ai décidé de travailler avec ce que je sais que ça va marcher. – Roland

Questions connexes