MySQL定时备份数据库操作示例

 

1. 查看mysqldump

root@laowang:/# which mysqldump

/usr/bin/mysqldump

2. 编写脚本

编辑my.cnf文件, 指定账号与密码, 然后在脚本中引用

root@laowang:/# vim /etc/my.cnf

[mysqldump]
user=root
password=root

脚本文件

root@laowang:/var/backups# vim mysql_backup.sh
#!/bin/sh
#################################################
# 备份数据库
#################################################
#mysqldump备份程序执行路径
DUMP=/usr/bin/mysqldump
#备份文件存放路径
OUT_DIR=/var/database
#备份文件所属权限
LINUX_USER=root
#要备份的数据库名字
DB_NAME=laowang
#备份的天数,之前的删除
DAYS=1

#进入备份存放目录
cd $OUT_DIR
#获取当前系统时间
DATE=`date +%Y_%m_%d`
#备份数据库的文件名
OUT_SQL=$DB_NAME"_$DATE.sql"
#最终保存的数据库备份文件名
TAR_SQL=$DB_NAME"_$DATE.tar.gz"
#开始执行备份数据库
$DUMP --defaults-extra-file=/etc/my.cnf --default-character-set=utf8 $DB_NAME > $OUT_SQL

#压缩为.tar.gz格式
tar -czf $TAR_SQL ./$OUT_SQL
#删除.sql格式的备份文件
rm $OUT_SQL
#更改备份数据库文件的所有者
chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL
#删除30天前的备份文件(注意:{} \;中间有空格)
find $OUT_DIR -name "*.tar.gz" -type f -mtime +$DAYS -exec rm -f {} \;

3. 定时计划

root@laowang:/# crontab -e

# m h dom mon dow  command

10 10 * * * /var/backups/mysql_backup.sh

ctrl+X 退出

y 保存修改

----------------------------------------------------------------------

  • 编辑crontab
    crontab -e
    在最后一行加入
    每分钟备份: * */1 * * * /home/mysql_backup/mysql_backup.sh
    周一到周六每天0点备份: 0 0 * * 1-6 /home/mysql_backup/mysql_backup.sh

  • 重启crontab
    service cron restart

--------------------------------------------------

  • 新建备份文件并赋予可以执行的权限
  • mkdir -p /home/mysql_backup/
    touch /home/mysql_backup/mysql_backup.sh
    chmod 777 /home/mysql_backup/mysql_backup.sh
  • ---------------------------------------
  • 00 01 * * * /bin/sh /usr/local/mysql/backupdb.sh

    上面的定时任务意思是每天凌晨1点会执行自动备份脚,进行MySQL数据库的定时备份.

  • crontab文件的说明:

     用户创建的crontab文件中,每一行都代表一项定时任务,每行的每个字段代表一项设置,它的格式每行共分为六个字段,前五段是时间设定字段,第六段是要执行的命令字段。

     格式如下:minute hour day month week command

    参数说明:

    minute: 表示分钟,可以是从0到59之间的任何整数。
    hour:表示小时,可以是从0到23之间的任何整数。
    day:表示日期,可以是从1到31之间的任何整数。
    month:表示月份,可以是从1到12之间的任何整数。
    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
    command:要执行的命令,可以是Linux系统命令,也可以是自己编写的脚本文件。

  • 15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt  表示,每隔15分钟,执行打印一次命令 

  • 1.每天早上6点

    0 6 * * * echo "Good morning." >> /tmp/test.txt 
  • 2.每两个小时 

    0 */2 * * * echo "Have a break now." >> /tmp/test.txt  
  • 3.晚上11点到早上8点之间每两个小时和早上八点 

    0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt
  • 4.每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 

    0 11 4 * 1-3 command line
  • 1月1日早上4点 

    0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 
  • 每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 

    5,15,25,35,45,55 16,17,18 * * * command
  • 每周一,三,五的下午3:00系统进入维护状态,重新启动系统。

    00 15 * * 1,3,5 shutdown -r +5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值