MySQL数据库备份
windows系统下MySQL数据库备份
1.定时执行bat脚本文件(可以借助SQLyog或Navicat等工具)
1.新建MySQL数据库备份文件夹 D:\backup
2.新建bat脚本文件输入以下内容
rem ******MySQL backup start******
@echo off
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%"
::进入mysql安装目录的bin目录下
cd C:\Program Files\MySQL\MySQL Server 5.7\bin\
::执行备份操作
mysqldump --opt --single-transaction=TRUE --user=root --password=root --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "db_test" > D:\backup\mysqlbackup\backup_%Ymd%.sql
@echo on
rem ******MySQL backup end******
tip:如果要删除一周之前的备份
forfiles /p "D:\backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path"
关于时间参数的参考:
%date:~0,10% //提取年月日信息
%date:~-3% //提取星期几信息
%time:~0,5% //提取时间中的时和分
%time:~0,-3% //提取时和分和秒信息
mysqldump 为MySQL提供的备份命令,该命令所在目录为MySQL安装目录下的bin文件夹中,此处直接使用该命令的前提是该命令所在bin文件夹已被设置为系统环境变量,如未设置,则要写全路径;
–user=root 为 MySQL 用户名;
–password=123456 为 MySQL 密码;
–host=127.0.0.1 为 MySQL 主机名;
“dn_test” 为要备份的数据库的名称;
backup_%Ymd%.sql 是根据当前时间规则生成备份文件的名称。
2.在Windows系统中添加定时执行任务即可,选择此bat脚本
Linux系统下MySQL数据库备份
基于Centos64位环境下
1.选择位置创建Mysql备份文件夹
cd /usr/local/mysql
mkdir backup
cd backup
2.建脚本文件
vim autobackup.sh
3.添加以下内容
filename=`date +%Y%m%d`
/usr/local/mysql/bin/mysqldump -uroot -proot db_stocker > /usr/local/mysql/backup/$filename.sql
保存后赋予可执行权限
chmod +x backup.sh 或者
chmod 777 backup.sh
如果遇到以下错误
原因:
当使用host参数为“localhost”连接Mysql服务时,会优先使用“sock文件”进行连接,而不是使用“IP:端口”进行连接,而Mysql尝试使用“sock文件”进行连接时,却无法获取“sock文件”的位置。
解决:
查看mysql服务
systemctl status mysqld.service
查看mysql进程
ps -ef | grep mysql
指定mysqldump 的socket属性
--socket=/var/lib/mysql/mysql.sock
4.检查crond有没有安装
rpm -qa | grep crond
安装
yum -y install vixie-cron
yum -y install crontabs
5.配置Linux系统下定时执行任务
crontab -e
输入以下内容
00 05 * * * source /usr/local/mysql/backup/backup.sh
每天五点定时执行脚本
crontab -l
查看定时任务是否添加
重启服务使配置生效
systemctl restart crond.service
crontab的语法规则格式:
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
数字范围 | 0~59 | 0~23 | 1~31 | 1~12 | 0~7 | 需要执行的命令 |
周的数字为 0 或 7 时,都代表“星期天”的意思。
特殊字符 代表意义
(星号) 代表任何时刻都接受的意思。举例来说,0 12 * * * command 日、月、周都是,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。
,(逗号) 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:0 3,6 * * * command时间还是有五列,不过第二列是 3,6 ,代表3与6都适用
-(减号) 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:20 8-12 * * * command仔细看到第二列变成8-12.代表 8,9,10,11,12
都适用的意思
/n(斜线) 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:/5 * * * * command用与/5来搭配,也可以写成0-59/5,意思
6.常见的定时任务
1.每分钟定时执行一次规则:
每1分钟执行: */1 * * * *
或者* * * * *
每5分钟执行: */5 * * * *
2.每小时定时执行一次规则:
每小时执行: 0 * * * *
或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午7点10分执行:10 7 * * *
3.每天零点定时执行一次规则:
每天执行 0 0 * * *
4.每周日的零点定时执行一次规则:
每周执行 0 0 * * 0
5.每月一号的零点定时执行一次规则:
每月执行 0 0 1 * *
6.每年一月一号的零点定时执行一次规则:
每年执行 `0 0 1 1 *