1、首先自己建一个目录,我建的目录路径为/root/bak/bakmysql
建立目录步骤:
cd /root(切换路径到root目录下)→mkdir bak(新建名称为bak的文件夹)→cd bak(进入bak目录下)→mkdir bakmysql(新建名为bakmysql的文件夹)
2、写备份脚本
#!/bin/bash
## 定义变量
back_dir=/root/bak/bakmysql
date=$(date +%Y%m%d%H%M)
## 进入备份目录
cd $back_dir
echo "$(date): begin to backup..."
## 用MYSQLDUMP备份
mysqldump -uroot -ppassword --default-character-set=UTF8 --single-transaction --quick --master-data=2 --flush-logs --add-drop-database --triggers --routines --events --databases databases_name > $back_dir/databases_name .$date.sql
if [ $? -eq 0 ] ## 如果命令成功
then
echo "backup successed!"
## 打包病压缩备份文件
tar -zcvf jlr.$date.tar.gz jlr.$date.sql && rm -f jlr.$date.sql
## 删除3天前的备份文件
find ./jlr.*.gz -mtime +3 -exec rm -f {} \;
else ## 如果备份失败
echo "backup failed!"
fi
echo "$(date): end backup."
3、设置该脚本为自动定时执行
将路径切换到/etc下面→编辑crontab文件(vim crontab)
最后一句为刚刚新增加的
然后保存退出
4、当以上工作都完成后执行整个定时备份的脚本也就完成了,
最后要说的就是,以上仅仅是一个简单的常规步骤,当然也还可以后其他的一些方法。比如在编辑crontab文件的时候,也可以直接执行crontab -e命令然后把最后那一行追加到文件中也可以。
我本人在做个定时脚本的时候也不是像上面说的那样简单,出现过各种问题,所以在这里将一些需要注意的地方列出来警示自己,也可以给各位提供一个参考
在做这个工作的时候:首先,你要确定自己的解决方案,需要用到哪些技术或者工具;其次,你要对自己用的技术和工具有一定的认识和了解
比如说上面的脚本我用到了mysqldump来备份数据库,用到了linux的crontab来实现定时,当时用的客户端连接工具是Xshell
这个时候你就需要对mysqldump的一些命令和参数有一定的了解了,比如说上面脚本中的
mysqldump -uroot -ppassword --default-character-set=UTF8 --single-transaction --quick --master-data=2 --flush-logs --add-drop-database --triggers --routines --events --databases databases_name > $back_dir/databases_name .$date.sql
这其中有许多参数,可以根据自己的实际需要去设置。比如我要备份的不是一个数据库,而是这个服务器上的所有数据库,这个时候就可以将--databases databases_name改为--all-databases。还有一点就是在代码中有一个 --flush-logs主要是关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。当要使用该功能是需要修改mysql配置文件my.cnf。将“log_bin = /var/log/mysql/mysql-bin.log”的注释去掉,如果远my.cnf中没有这一句的话就在文件中添加上,如图所示:
鉴于本人目前水平,只能理解到这么多了,所以,以上所述均做参考,具体应用的时候,结合自己的实际情况而定