web-dev-qa-db-fra.com

Sauvegarde automatique de la base de données MySQL sur un serveur Windows

Existe-t-il un moyen de sauvegarder automatiquement la base de données MySQL à certains moments de la journée pour les serveurs désignés ou d'envoyer un e-mail avec une pièce jointe. Selon vous, quel est le moyen le plus sûr et le plus sûr d'y parvenir?

31
Coderwannabe

J'utiliserais Windows Task Scheduler/cron (selon votre système) et mysqldump . Faites défiler vers le bas dans le lien, il comprend quelques informations sur la façon d'atteindre ce que vous voulez.

23
martin

La meilleure façon de le faire serait

mysqldump.exe --user=YourUserName --password=YourPassword --Host=localhost --port=3306 --result-file="Path\dump.sql" --databases "DatabaseName1" "Database2"


mysqldump.exe --user=root --password=root  --Host=localhost --port=3306 --result-file="c:\www\db\backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql" --default-character-set=utf8 --single-transaction=TRUE --databases "dbtest1" "dbtest2"

Le motif backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql créera un nom unique (backup20131010.sql) à chaque exécution

Il vous suffit maintenant d'appeler cette commande dans votre planificateur de tâches. C'est ça. :)

22
Tarun Gupta

Vous pouvez ajouter une de ces commandes à Windows task scheduler:

mysqldump –-user [username] –-password=[password] [database name] > [dump file]

ou de manière compacte:

mysqldump –u[username] –p[password] [database name] > [dump file]

ou:

mysqldump -u[user] -p[password] --result-file="c:\<path>\backup.%DATE:~0,3%.sql" [database]
7
Jess Stone

databaseW.2016,06,29-22,31,48-15.sql

@echo off
rem Backup Database (Daily,via Task Scheduler)
rem databaseW
set filename="c:\xampp\dbk\databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql"
c:\xampp\mysql\bin\mysqldump.exe --user=root --password=Dell@root --Host=localhost --port=3306 --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE --databases "databaseW"

Pour créer un fichier dont le nom est basé sur la date et l'heure, utilisez %date% et %time%. Notez que les 2 variables sont basées sur l'environnement local et la version du shell cmd

  • ouvrir les fenêtres cmd
  • contribution echo %time% et echo %date% le mien est 22:11:16.80, 06/29/2016 Wed
  • substr la variable par %variable:~startpos,length% Je veux que le temps soit délimité par une virgule, donc le cmd va echo %time:~0,2%,%time:~3,2%,%time:~6,2%,%time:~9,2%
  • pour obtenir un nom de fichier comme databaseW.2016,06,29-22,31,48-15.sql utilisation set filename="databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql"
  • vérifier à l'avance date et time
  • utilisez le --result-file option au lieu de >; Selon le Manuel Mysql, le jeu de caractères du fichier enregistré en utilisant ">" est UTF-16, tandis que le --result-file suit le --default-character-set
  • enregistrer dans le fichier BackpDay-databaseW.cmd
  • l'ajouter à une nouvelle tâche Action et définir un déclencheur (Planificateur de tâches Windows)
2
Mitoxys

J'ai fait le travail, similaire à ce que les autres ont expliqué à travers ... mais avec peu de différence et un travail supplémentaire:

1) J'ai fait un fichier batch
2) Exécuter ce fichier de commandes via le planificateur Windows
3) Planification appropriée pour cette tâche
4) Dans le fichier de commandes, ces étapes sont exécutées:

  • 4-1) Préparation d'un nom de fichier basé sur la date actuelle
  • 4-2) Vous avez une sauvegarde par mysqldump.exe dans le répertoire et le nom de fichier correspondants
  • 4-3) Création d'un fichier compressé via l'application 7-Zip (installez-le), puis supprimez la sauvegarde non compressée
  • 4-4) Mettez une copie sur notre serveur de fichiers réseau

Voici un exemple de script (.bat):

@echo off
set current=%date:~10,4%%date:~4,2%%date:~7,2%
set filename="E:\MySQL Backups\DBName-%current%.sql"
set filename2="E:\MySQL Backups\DBName-%current%.Zip"
echo %filename%
cd "E:\MySQL Backups"
C:\"Program Files"\MySQL\"MySQL Server 5.5"\bin\mysqldump.exe db_name --user=root --password=rootpass --Host="127.0.0.1" --port=instancePort --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE
echo backup-finished

if exist %filename% (
    "C:\Program Files\7-Zip\7z.exe" a %filename2% %filename%
    echo Zip-finished
    del %filename%
)
if exist %filename2% (
    copy %filename2% "\\192.168.x.x\MySQL Backups"
    echo copy-finished
)
1
MShNajar