欢迎来到阿八个人博客网站。本
阿八个人博客
网站提供最新的站长新闻,各种互联网资讯。
喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术!
URL链接:https://www.abboke.com/jsh/2019/0702/4433.html
1190000019637923
沟通很重要,沟通的渠道很重要。当团队需要配合的时候,要想办法将自己当下做的事情,以最有效的方式通知给团队其它成员,以避免不必要的伤害。
比如,刚刚发生了如下事情:
有一测试系统,历史的任务是完成上线前的最后一次测试,然后:
A 为了给客户演示系统的使用方法,在此系统上添加了大量的供演示用的支撑数据。
B 为了删除生产环境下冗余数据,用生产环境下的数据覆盖了测试的数据。
导致:
A很无奈:覆盖数据前竟然不和我打招呼!
B很无辜:测试系统不就是用来测试而可以随时覆盖的吗?
以上是闲谈,如果我们每日都对数据进行备份呢?是不是就可以解决A、B两个人的问题?
脚本
#!/bin/bash
# 备份数据库脚本
# 设置变量
MyUSER="用户名。建议使用ROOT,防止权限问题" # DB_USERNAME
MyPASS="密码" # DB_PASSWORD
MyHOST="主机名" # DB_HOSTNAME
Port="端口号" # 例3306
# 设置备份路径(该路径必须存在,且可写)
DEST="/请使用实际的绝对路径" # 比如:/home/username/backups/DB
# 接收通知的邮件
EMAIL="3792535@qq.com"
# 备份保留天数
DAYS=8
# 查找mysql、MYSQLDUMP、GZIP的位置 (该脚本依赖于GZIP,如果没有安装的话,先安装)
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
# 以 年-月-日 的格式来获取当前日期
NOW="$(date +"%Y-%m-%d_%s")"
# 创建备份文件夹 目标文件夹/时间/mysql
MBD="$DEST/$NOW/mysql"
install -d $MBD
# 不需要备份的数据表
SKIP="information_schema
another_one_db"
# 获取所有的数据表
DBS="$($MYSQL -h $MyHOST -u $MyUSER -p$MyPASS -P $Port -Bse 'show databases')"
# 备份数据表
for db in $DBS
do
skipdb=-1
if [ "$SKIP" != "" ];
then
for i in $SKIP
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ] ; then
FILE="$MBD/$db.sql"
$MYSQLDUMP -h $MyHOST -u $MyUSER -p$MyPASS $db > $FILE
fi
done
# 压缩、归档,发送邮件通知
cd $DEST
tar -cf $NOW.tar $NOW
$GZIP -9 $NOW.tar
echo "MySQL backup is completed! Backup name is $NOW.tar.gz" | mail -s "MySQL backup" $EMAIL
rm -rf $NOW
# 删除历史的冗余备份文件
find $DEST -mtime +$DAYS -exec rm -f {} \;
使用方法
打开shell, 醒看先执行脚本中的第一句/bin/bash,看是否执行成功。执行成功,说明/bin存在bash。不成功,说明/bin下不存在bash(个别系统不存在)
panjiedeMac-Pro:~ panjie$ /bin/bash
bash-3.2$
bash-3.2$ exit
exit
然后复制脚本代码 -> 保存为backup.sh -> 在backup.sh的同级目录下,执行bash backup.sh。执行后将在目录文件夹中,生成如下文件:
2019-07-02_1562042395.tar.gz
即为备份文件
恢复备份
备份经过了1次打包(tar),一次压缩(gzip)。在使用时,先进行解压,再解包。
# gzip -d 2019-07-02_1562042395.tar.gz
# ls
2019-07-02_1562042395.tar
# tar -zxvf 2019-07-02_1562042395.tar
# ls
x 2019-07-02_1562042395/
x 2019-07-02_1562042395/mysql/
x 2019-07-02_1562042395/mysql/apply.sql
x 2019-07-02_1562042395/mysql/mysql.sql
x 2019-07-02_1562042395/mysql/sys.sql
x 2019-07-02_1562042395/mysql/schedule.sql
x 2019-07-02_1562042395/mysql/performance_schema.sql
x 2019-07-02_1562042395/mysql/measurement.sql
有了sql文件,恢复相信不成问题了吧。
定时任务
未完待续