MySQL数据库自动备份 - shell脚本和设置 - 有问题,需要修正
重要、数据库自动备份脚本:
第一步:创建bak目录,并创建bakmysql和bakmysqlold目录
mkdir /alidata/bak /alidata/bak/bakmysql /alidata/bak/bakmysqlold
第二步:在bakmysql目录下创建文件backup.sh并授权
touch bakmysql/backup.sh //创建bakmysql/backup脚本
chmod 755 backup.sh //755权限
第三步:在backup.sh加入如下shell代码:
#!/bin/bash #切换到backmysql目录下 cd /alidata/bak/bakmysql echo "You are in bakmysql directory" #移动已经有的bakmysql*文件 mv bakmysql* /alidata/bak/bakmysqlold echo "Old databases are moved to bakmysqlold folder" #定义现在的时间 Now=$(date +"%d-%m-%Y") #定义文件名称 File=bakmysql-$Now.sql #这个指令将数据库dbname备份到某$File文件,$File文件在上面定义了 mysqldump -uroot -p123456 dbname > $File echo "Your database backup successfully completed" #定义七天前的时间 SevenDays=$(date -d -7day +"%d-%m-%Y") #删除七天前的那个文件 if [ -f /alidata/bak/bakmysqlold/bakmysql-$SevenDays.sql ] then rm -rf /alidata/bak/bakmysqlold/bakmysql-$SevenDays.sql echo "You have delete 7days ago bak file " else echo "7days ago bak file not exist " fi
————请注意,以上shell脚本中的 [-uroot -p123456 dbname] ,需要改成你自己的数据库账号,密码,和需要备份的数据库名称。
————shell脚本实现原理:脚本先将/bak/bakmysql文件夹下bakmysql为文件名开头的备份文件移至/bak/bakmysqlold,再生成最新的备份文件,最后再判断/bak/bakmysqlold文件夹中七天前的文件是否存在,存在则删除,最后结束。这样就能自动备份最近七天的数据库脚本。
第四步:设置自动执行:
//首先 vi /etc/crontab //最后一行加入自动执行程序: 0 0 * * * root /bak/bakmysql/backup.sh //每天的0点0分执行backup.sh脚本 //然后,重启crontab /sbin/service crond restart
————如果没有设置crontab为开机自启动可以如下设置其开机自启动:chkconfig –level 35 crond on
————————————占位符
——————————————————————//////——欢迎光临,请多指教!可加QQ:349017128进行交流——//////——————————————————————