linux服务器上mysql的定时备份
新建mysql备份脚本文件,取名为mysql.sh
touch mysql.sh
使用vim mysql.sh 编辑文件,添加下列内容
#!/bin/bash
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/data/mysqldump
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=Cipher171!
#将要备份的数据库
database_name=cipher_authorization_v1.5.4
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
#找出需要删除的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi
根据具体的参数填写上面的内容,数据库账号密码,备份保存目录等等参数。
使用crontab命令添加定时任务。
1.使用下面的命令,编写执行定时任务的命令。
crontab -e
添加下面的内容(表示每分钟执行一次该命令,具体写法下翻。)
* * * * * sh /data/mysqldump/mysql.sh
关于定时执行脚本的写法:
在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
每个域之间使用空格或者制表符分隔。格式如下:
minute hour day-of-month month-of-year day-of-week commands
合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday)
除了数字还有几个个特殊的符号就是"*"、"/“和”-"、",",*代表所有的取值范围内的数字,"/“代表每的意思,”/5"表示每5个单位,"-“代表从某个数字到某个数字,”,"分开几个离散的数字。
-l 在标准输出上显示当前的crontab。
-r 删除当前的crontab文件。
-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。
使用crontab -l 命令查看当前的crontab
到备份的目录查看有没有备份文件
可以看到,每隔一分钟,脚本命令就执行一次,备份目录就新增一个备份sql文件。
经验总结:
1.利用mysqldump的mysql备份命令完成脚本。
2.利用crontab的定时执行任务的功能来执行脚本文件(文中的mysql.sh文件)
两者结合,就可以实现linux服务器定时备份mysql啦!