Maison >base de données >tutoriel mysql >Introduction détaillée à la sauvegarde automatique par script shell de la base de données MySQL

Introduction détaillée à la sauvegarde automatique par script shell de la base de données MySQL

黄舟
黄舟original
2017-03-20 14:10:421424parcourir

Cet article présente principalement les informations pertinentes sur la sauvegarde automatique du script shell de la base de données MySQL. Il existe un bouton de fonction pour sauvegarder la base de données en arrière-plan du site Web ou de l'application, mais il doit être exécuté manuellement. Nous avons besoin d'une méthode sûre de sauvegarde automatique quotidienne. Les amis qui en ont besoin peuvent se référer au

sauvegarde automatique du script shell de la base de données MySQL

fréquemment. C'est une bonne habitude de sauvegarder votre base de données. Bien que la probabilité de corruption de la base de données ou de perte de données soit faible, une fois que cela se produit, il ne sert à rien de le regretter. Généralement, il existe un bouton de fonction pour sauvegarder la base de données en arrière-plan d'un site Web ou d'une application, mais il doit être exécuté manuellement. Nous avons besoin d’une méthode de sauvegarde quotidienne sécurisée et automatisée. Le script shell suivant vous permet de sauvegarder votre base de données MySQL quotidiennement en configurant Crontab.

#!/bin/bash
# 数据库认证
 user=""
 password=""
 host=""
 db_name=""
# 其它
 backup_path="/path/to/your/home/_backup/mysql"
 date=$(date +"%d-%b-%Y")
# 设置导出文件的缺省权限
 umask 177
# Dump数据库到SQL文件
 mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql

Grâce au script ci-dessus, nous pouvons exporter un fichier de sauvegarde SQL chaque jour, et le nom du fichier est généré en fonction de la date du jour. Au fil du temps, de nombreux fichiers de ce type seront générés et il est nécessaire de supprimer régulièrement certains anciens fichiers de sauvegarde. La ligne de commande suivante effectue cette tâche. Vous pouvez l'ajouter après le script ci-dessus.

# 删除30天之前的就备份文件
 find $backup_path/* -mtime +30 -exec rm {} \;

J'ai rencontré une fois un problème lors de l'utilisation du script ci-dessus. Crontab exécutait régulièrement l'exportation du script sans signaler d'erreur, mais l'exportation était un fichier SQL vide. Cependant, je me suis connecté à la console pour exécuter manuellement le fichier. script était La sauvegarde a réussi. Plus tard, il a été découvert que le script d'exécution de Crontab manquait d'informations sur l'environnement système et ne pouvait pas trouver mysqldump. La méthode de correction consistait à utiliser le chemin complet de mysqldump. La raison pour laquelle aucun message d'erreur n'est signalé est que mysqldump génère le message d'erreur sur stderr. Si vous ajoutez "2>&1" à la fin de la commande, vous pouvez voir le message d'erreur via une commande de redirection d'informations :

mysqldump -ujoe -ppassword > /tmp/somefile 2>&1

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn