利用shell脚本自动化备份数据库与手动备份还原数据库操作
1、在linux操作系统上手动备份数据库
mysqldump -h 服务器IP地址 -u root -p数据库密码 --databases 所要备份的数据库名称 > /路径/数据库.sql(自定义要生成的sql名称)
2、在linux操作系统上手动还原数据库
mysql -uroot -p密码 < 数据库.sql(如果不是在当前目录下要进行添加具体路径)我是在当前目录下存储运行的
记得要查生成的sql文件,可以进行更改的(不建议进行修改库名,但是大多数可以在表中进行造数据)
3、在linux操作系统上自动备份数据库与管理备份文件(记得要授权chmod +X shell脚本名称)
4、shell脚本具体代码(备份单个数据库)
#!/bin/bash
#数据库账号
user= XXXX
#数据库密码
password= XXXXXX
#被备份的数据库名称
dbname= XXXXXXX
#获取日期
date=$(date +%Y_%m_%d+%H%M%S);
#定义备份文件名称格式:库名_日期
bak=XXXX-${date};
#数据库ip地址
ip= XX.XXX.XX.XXX
if [ ! -f /home/datetime/$bak.sql ];then
mysqldump -u${user} -p${password} --host=${ip} --databases ${dbname} > /home/datetime/${bak}.sql
echo '备份完成'
else
echo '备份文件已存在!'
fi
# cd /home/datetime
# tar -zcvf ${bak}.sql.tar.gz ${bak}.sql
# 表示删除20分钟之内访问过的文件。
#find /home/datetime -name '*.tar' -amin +2 -ls -exec rm {} \;
#删除7分钟之前的备份文件(测试的时候方便调试)
#find /home/datetime -name "*.sql" -type f -mmin +7 -exec rm -rf {} \; > /dev/null 2>&1
#删除7天之前的备份文件
find /home/datetime -name "*.sql" -type f -mtime +6 -exec rm -rf {} \; > /dev/null 2>&1
#2>/dev/null
#意思就是把错误输出到“黑洞”
#>/dev/null 2>&1
#默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”
#2>&1 >/dev/null
#意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕
4、shell脚本具体代码(备份多个数据库我这里使用的是for循环)
#!/bin/bash
# Name:backmysql.sh
#备份目录
backupdir=/usr/local/mysqlbackup/mysqldata
#备份文件后缀时间
time=_` date +%Y_%m_%d_%H_%M_%S`
#需要备份的数据库名称
db_name1=xxx1
db_name2=xxx2
db_name3=xxx3
db_name4=xxx4
#mysql 用户名
db_user=root
#mysql 密码
db_pass=123456
#备份
for i in $db_name{1..4}
do
#备份指定数据库
mysqldump -u$db_user -p$db_pass $i > $backupdir/$i-$time.sql
#删除7天之前的备份文件
find /usr/local/mysqlbackup/mysqldata -name "$i-*.sql" -type f -mtime +6 -exec rm -rf {} \; > /dev/null 2>&1
done
5、创建定时任务
引进一个插件crontab 定时具体用法下篇分享
本文来自博客园,作者:ganfd,转载请注明原文链接:https://www.cnblogs.com/ganfd/p/16317809.html