Linux 系统下 MySQL 数据库的自动备份和手工恢复
来源:靑龍一笑的博客 作者:靑龍一笑 发布时间:2014-05-10 10:34:57 点击量:1122 评论:0
一、自动备份
1、创建数据库备份目录:
[root@RicenOS ricen_file]# mkdir -pv /usr/ricen_file/dbBackUp
2、编写数据库自动备份脚本:
[root@RicenOS ricen_file]# vi autobackupmysql.sh
内容如下:
#!/bin/bash
# 作者:靑龍一笑(C.S.Ricen)
# 功能:对 MySQL 数据库进行备份
#
# 指定数据库备份目录
Backup_DB_HOME="/usr/ricen_file/dbBackUp"
# 数据库连接帐号、密码
DB_User="root"
DB_Pass="webDB0918"
# 数据库备份程序
DB_Dump="/usr/local/mysql/bin/mysqldump"
# 备份的数据库列表
DB_Backup_List="/usr/ricen_file/db.list"
# 当前时间
CUR_TIME=`date +%Y%m%d`
# 备份文件保留天数
SAVE_DAYS=15
# 检查备份命令
if [ ! -f $DB_Dump ]; then
echo "错误:mysqldump 命令不存在!"
exit 1
fi
# 检查数据库列表
if [ ! -f $DB_Backup_List ]; then
echo "错误:数据库列表不存在!"
exit 1
fi
# 检查数据库备份目录
if [ ! -d $Backup_DB_HOME ]; then
mkdir -p $Backup_DB_HOME
fi
# 备份数据库
cat $DB_Backup_List | while read line
do
DB_NAME=$line
# 打包后的文件
DB_FILE="$Backup_DB_HOME/$DB_NAME-$CUR_TIME.sql.gz"
# 开始备份数据库
$DB_Dump -u$DB_User -p$DB_Pass --hex-blob --triggers --events --routines $DB_NAME | gzip > $DB_FILE
done
# 删除备份文件
find $Backup_DB_HOME -mtime +$SAVE_DAYS -exec rm {} \;
exit 0
# 作者:靑龍一笑(C.S.Ricen)
# 功能:对 MySQL 数据库进行备份
#
# 指定数据库备份目录
Backup_DB_HOME="/usr/ricen_file/dbBackUp"
# 数据库连接帐号、密码
DB_User="root"
DB_Pass="webDB0918"
# 数据库备份程序
DB_Dump="/usr/local/mysql/bin/mysqldump"
# 备份的数据库列表
DB_Backup_List="/usr/ricen_file/db.list"
# 当前时间
CUR_TIME=`date +%Y%m%d`
# 备份文件保留天数
SAVE_DAYS=15
# 检查备份命令
if [ ! -f $DB_Dump ]; then
echo "错误:mysqldump 命令不存在!"
exit 1
fi
# 检查数据库列表
if [ ! -f $DB_Backup_List ]; then
echo "错误:数据库列表不存在!"
exit 1
fi
# 检查数据库备份目录
if [ ! -d $Backup_DB_HOME ]; then
mkdir -p $Backup_DB_HOME
fi
# 备份数据库
cat $DB_Backup_List | while read line
do
DB_NAME=$line
# 打包后的文件
DB_FILE="$Backup_DB_HOME/$DB_NAME-$CUR_TIME.sql.gz"
# 开始备份数据库
$DB_Dump -u$DB_User -p$DB_Pass --hex-blob --triggers --events --routines $DB_NAME | gzip > $DB_FILE
done
# 删除备份文件
find $Backup_DB_HOME -mtime +$SAVE_DAYS -exec rm {} \;
exit 0
3、编写需要备份的数据库列表:
[root@RicenOS ricen_file]# vi db.list
内容如下:
dis
search
search
其中,dis、search 是需要备份的数据库名,每行指定一个。
4、给数据库自动备份脚本赋予可执行权限:
[root@RicenOS ricen_file]# chmod +x autobackupmysql.sh
5、创建一个 crontab:
[root@RicenOS ricen_file]# vi autobackupcron
内容如下:
0 3 * * * /usr/ricen_file/autobackupmysql.sh
其中,第一列为分钟,第二列为小时,第三列为日期,第四列为月份,第五列为星期,第六列为要执行的命令。
6、提交 crontab:
[root@RicenOS ricen_file]# crontab autobackupcron
查看 crontab 的命令如下:
[root@RicenOS ricen_file]# crontab -l
编辑 crontab 的命令如下:
[root@RicenOS ricen_file]# crontab -e
删除 crontab 的命令如下:
[root@RicenOS ricen_file]# crontab -r
二、手工恢复
1、进入到数据库备份目录,解压要恢复的数据库备份:
[root@RicenOS ricen_file]# cd dbBackUp/
[root@RicenOS dbBackUp]# gunzip dis-20140510.sql.gz
[root@RicenOS dbBackUp]# gunzip dis-20140510.sql.gz
2、登录 MySQL 数据库:
[root@RicenOS dbBackUp]# mysql -uroot -pwebDB0918
3、选择要恢复的数据库:
mysql> use dis
4、执行数据库恢复操作:
mysql> source /usr/ricen_file/dbBackUp/dis-20140510.sql
版权所有 © 2005-2023 靑龍一笑的博客 Powered by C.S.Ricen
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.
Copyright © 2005-2023 by www.ricensoftwares.com.cn All Rights Reserved.