linux设置定时任务备份mysql数据库
1.用root登录服务器,先看服务器能否远程连接数据库,不能的话执行 yum install mariadb 语句,安装完毕之后就能远程连接mysql数据库
2.编写定时任务执行文件
#!/bin/bash
backupdir=/data/mcoop/backup
user=root
port=3307
password=nkNXJFhEoMjH0Ero
host=172.27.0.8
file=increment
echo "backup start" `date` >> $backupdir/backup_history.log
#case `date +%u` in
# 1)
echo "logic full backup" >> $backupdir/backup_history.log
mysqldump -u$user -p$password -h$host -P$port -e --single-transaction --max_allowed_packet=503316480 --net_buffer_length=16384 --opt --default-character-set=utf8 --hex-blob mcoop --skip-triggers | gzip >$backupdir/mcoop_`date +%Y%m%d%H%M%S`.zip
# ;;
# *) echo "error" >> $backupdir/backup_history.log
# ;;
注解:
(1、执行 /usr/bin/mysqldump;
(2、--opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的合称,一般都要使用,具体意思自行搜索;
(3、-u数据库用户名 -p数据库用户密码 -h数据库地址 -P端口号 数据库名 > 导出的文件路径;
(4、`date +%Y%m%d%H%M%S`是shell中生成当前时间,包括时分秒,格式如2019-11-05,所以成功导出时生成的文件名为 mcoop_20191105030001.zip;
(5、下载生成的 sql文件 ,用文本编辑器打开检查,本地导入测试数据库,看是否有问题;
3.查看定时任务
crontab -l
4,vi root 编辑定时任务 编辑完成后,点ESC,然后:wq
00 03 * * * /bin/sh /data/mcoop/backup/backup.sh 每天凌晨3点执行一次上述的命令文件,备份数据库
时间格式
分钟 小时 日期 月份 周 命令
数字范围 0-59 0-23 1-31 1-12 0-7 echo "hello" >> abc.log
特殊字符的含义
*(星号) 代表任何时刻都接受。
,(逗号) 代表分隔时段的意思。
-(减号) 代表一段时间范围内。
/n(斜线) 那个 n 代表数字,每隔 n 单位间隔。
eg1: 每年的五月一日 10:5 执行一次
5 10 1 5 * command(要是执行网址(curl "http://网址"),或者执行其它的直接写路径)
eg2: 每天的三点,六点各执行一次
00 3,6 * * * command
eg3: 每天的8:20, 9:20,10:20,11:20各执行一次
20 8-11 * * * command
eg4: 每五分钟执行一次
*/5 * * * * command
eg5: 每周一十点执行一次
00 10 * * 1 command
5、重新启动
#service crond restart