本篇文章小编给大家分享一下MySQL利用Linux crontab定时备份代码实例,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
前言
虽说现在这世道有些爱情是有价的,但是数据是无价的,数据备份是尤为的重要,可以在你未来的某一天不小心删库了,不用着急跑路。
本文介绍的方案是利用pnux自身的crontab定时任务功能,定时执行备份数据库的脚本。
技术要点:
数据库备份dump命令
shell脚本
pnux定时任务crontab
数据备份dump
数据库都有一个导出数据库内数据和结构的命令,就是备份。
将备份的数据还原会将原来的数据中的表删了重建,再插入备份中的数据,这是恢复。
这一点需要注意,如果恢复之前的数据比备份的多,恢复后多的数据就没有了。
列出我常用的两种数据库的备份和恢复命令
postgresql:
备份 pg_dump -h [ip] -U [用户名] [库名] >[导出的.sql 文件]
恢复 psql -s [库名] -f [导出.sql 文件]
mysql:
备份 mysqldump -h -u [用户名] -p [库名] > [导出的.sql 文件]
恢复 mysql -u [用户名] -p [库名] < [导出的.sql 文件]
shell脚本
要完成一个功能完善的备份方案,就需要shell脚本。
我们要让这个脚本备份到指定路径,并压缩存放,最多30个,超过30个删除最早的,并记录操作日志。
啥也不说了,话都在脚本里,干了!
#用户名 username=root #密码 password=nicai #将要备份的数据库 database_name=l_love_you #保存备份文件最多个数 count=30 #备份保存路径 backup_path=/app/mysql_backup #日期 date_time=`date +%Y-%m-%d-%H-%M` #如果文件夹不存在则创建 if [ ! -d $backup_path ]; then mkdir -p $backup_path; fi #开始备份 mysqldump -u $username -p$password $database_name > $backup_path/$database_name-$date_time.sql #开始压缩 cd $backup_path tar -zcvf $database_name-$date_time.tar.gz $database_name-$date_time.sql #删除源文件 rm -rf $backup_path/$database_name-$date_time.sql #更新备份日志 echo "create $backup_path/$database_name-$date_time.tar.gz" >> $backup_path/dump.log #找出需要删除的备份 delfile=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | head -1` #判断现在的备份数量是否大于阈值 number=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | wc -l` if [ $number -gt $count ] then #删除最早生成的备份,只保留count数量的备份 rm $delfile #更新删除文件日志 echo "delete $delfile" >> $backup_path/dump.log fi
给脚本起个顾名思义的漂亮名字 dump_mysql.sh
给脚本赋予可执行权限 chmod +x dump_mysql.sh , 执行后脚本变绿了就是可实行文件
执行方法:./加脚本名称
chmod命令参数含义--
+ 代表添加某些权限
x 代表可执行权限
定时任务crontab
crontab是pnux自带的一个定时任务功能,我们可以利用它每天凌晨执行一次 dump_mysql.sh 脚本。
crontab用法:
crontab -l 查看定时任务列表
crontab -e 编辑(新增/删除)定时任务
运行crontab -e命令,打开一个可编辑的文本,输入00 01 * * * /app/dump_mysql.sh
保本并退出即添加完成。
内容解释:
00 01 * * * /app/dump_mysql.sh分两部分看,
第一部分 00 01 * * * 是定时任务的周期,第二部分 /app/dump_mysql.sh 到时间做的事情。
周期表达式是五个占位符,分别代表: 分钟、小时、日、月、星期
占位符用 * 表示 每 ,用在第一位就是每分钟,第二位每小时,依此类推
占位符用 具体数字 表示 具体时间 ,10用在第一位就是10分,用在第三位表示10号,依此类推
占位符用 - 表示 区间 ,5-7用在第一位就是5分到7分,用在第五位表示周5到周日,依此类推
占位符用 / 表示 间隔 ,5-10/2用在第一位就是5分到10分间隔2分钟,用在第二位表示5点到10点间隔2小时,依此类推
占位符用 , 表示 列表 ,5,10用在第一位就是5分和10分,用在第四位表示5月和10月,依此类推
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整