利用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 定时具体用法下篇分享

 

posted @ 2022-05-27 15:24  ganfd  阅读(468)  评论(0编辑  收藏  举报