Linux中mysql每天自动备份

本文主要介绍mysqldump结合Linux的cron命令实现数据库每天备份。mysqldump常用于MySQL数据库逻辑备份,而cron就是linux的计划任务,是任务在约定的时间执行已经计划好的工作。

一、创建shell脚本

#!/bin/bash
#数据库备份路径,需先创建该路径
backupdir=/home/mysql-data-bak
#数据库账号
dbuser=myBak
#数据库密码
dbpasswd=myBak123abc
#数据库端口
dbportal=3306
#数据库端口
dbip=127.0.0.1
#需备份的数据名
dbname=my-test
#备份时间
time=`date+%Y%m%d`
#正式开始备份数据库
/usr/bin/mysqldump\
-u${dbuser}\
-p${dbpasswd} \
-P${dbportal}-h${dbip} \
--default-character-set=utf8 \
--databases${dbname} \
>$backupdir/${dbname}-$time.sql;
#为节约硬盘空间,将备份的数据库压缩
tarczvfP $backupdir/${dbname}-$time.sql.tar.gz$backupdir/${dbname}-$time.sql;
echo 'tardone';
#删除7天前备份,也就是只保存7天内的备份
find$backupdir -name "${dbname}-*.sql.tar.gz" -type f -mtime +7 -exec rm {} \; >/dev/null 2>&1
#删除原始sql文件,只留压缩后文件
rm-f $backupdir/${dbname}-$time.sql;
echo 'remove done'
echo'dump done';

使用该shell脚本备份时需注意:
1.要给该shell脚本赋予可执行权限,相关命令为:chmod +x ***.sh

2.测试的时候可以直接进入sh目录下执行

./***.sh

等执行完了看看数据库备份目录下,有没有备份文件。如果有,则表示脚本执行成功,没有则表示没有执行成功。

3.建议用于mysqldump的mysql账号权限最好是127.0.0.1的所有权限,密码数字+字母的组合。
另附上创建mysql账号语句:

CREATE  USER  'myBak'@'%'  IDENTIFIED BY  'myBak123abc';
GRANT  ALL ON  *.* TO  'myBak'@'127.0.0.1'  identified by  'myBak123abc';
flushprivileges;

4.运行该脚本会提示:

Warning:Using a password on the command line interface can be insecure.

意为:在命令行界面上使用密码是不安全的.
该警告看着不顺眼,那有什么办法可以解决吗?有,方法其实很简单,在mysql的配置文件my.cnf中添
加mysqldump的用户名和密码,再将备份脚本用户名密码相关信息去掉。
相关过程如下:
a.vim /etc/my.cnf
b.添加mysqldump的账号和密码配置如下【ps:把你自己数据库的账号密码填上哦】

[mysqldump]
user=your_backup_user_name
password=your_backup_password

c.重启数据库

service mysql restart

d.修改脚本
将备份脚本用户名密码相关信息去掉

二.计划任务的配置
配置linux计划任务有以下两种方式:
1、
执行crontab -e
输入以下内容:

30 1 *  *  *  sh  /home/mysql-data-bak/my-test.sh

2、
打开自动执行文件

vi /etc/crontab

在etc中加入如下内容,让其自动执行任务。

30 1 *  *  *  sh  /home/mysql-data-bak/my-test.sh

以上时间 30 1 * * *表示每天凌晨1点30自动执行/home/mysql-data-bak/my-test.sh脚本。

计划任务执行命令含义如下:

#Example of job definition:
#.---------------- minute (0 - 59)
#| .------------- hour (0 - 23)
#| | .---------- day of month (1 - 31)
#| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
#| | | | .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
#| | | | |
#* * * * * user-name command to be executed
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值