使用脚本定时备份 MySQL 数据库

   日期:2020-08-21     浏览:87    评论:0    
核心提示:在 Windows 和 Linux 中定时备份 MySQL 数据库

1.1 Linux 备份数据库

编写脚本

  先找个地方编写如下 sh 脚本(我一般在 /usr/local 下创建 backup/backup.sh),替换掉下面的用户名,密码,数据库名以及生成文件路径及文件名。需要注意的是,如果是在 Windows 编写完成的脚本会因为 Windows每行结尾 \n\r,Linux 是 \n 而报 -bash: xxxx.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录 错误,执行 sed -i 's/\r$//' name.sh 替换掉字符就可以了。

#!/bin/bash
# 不压缩
mysqldump -uroot -proot database > /home/backup/name_$(date +%Y%m%d_%H%M%S).sql
# 压缩
mysqldump -uroot -proot database | gzip > /home/backup/name_$(date +%Y%m%d_%H%M%S).sql.gz

添加权限

  刚写好的脚本是没有权限无法执行的,我们先要给其赋权。然后直接运行脚本,看下能否完成备份,同时检查备份文件能否使用。在检查备份时,可能会报 [Err] 2006 - MySQL server has gone away 这是应为可能是 sql 语句过长即 sql 文件过大,超过 MySQL 通信缓存区最大长度。修改下 max_allowed_packet 就可以了。

# 赋权
chmod u+x backup.sh

# 备份
./backup.sh

  注意有些执行备份会提示 Warning: Using a password on the command line interface can be insecure. 可以忽略,实在看的不爽可以在 my.cnf 中 [mysqldump] 下面增加

[mysqldump]
user=myuser
password=mypassword

添加定时任务

  执行 crontab -e 进入编辑页面,然后指定执行时间以及执行程序, 00 02 * * * /usr/local/backup/backup.sh 每天凌晨 2 点执行 /usr/local/backup 下 backup.sh 脚本。使用 crontab -l 可以查看写好的定时任务;使用 service crond restart 可以重启定时任务服务。





1.2 Windows 备份远程数据库

编写脚本

  Windows 备份远程数据库的过程跟 Linux 备份数据库的过程类似,是不过一个是 bat 脚本,一个是 sh 脚本。替换下面的 MySQL 安装目录,用户名,密码,远程IP,远程端口,数据库名以及存放备份文件的目录。直接双击运行 bat 脚本进行测试,依然有些执行备份会提示 Warning: Using a password on the command line interface can be insecure.

@echo off
"MySQL bin 目录\mysqldump" -ux -px -h IP -P port database > "存放目录\wise_%date:~0,4%-%date:~5,2%-%date:~8,2%.sql"
@echo on

添加定时任务

  在计算机关机中选择任务计划程序,创建一个任务,定时触发执行写好的脚本即可。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服