使用脚本定时备份 MySQL 数据库
1.1 Linux 备份数据库
☞ 编写脚本
先找个地方编写如下 sh 脚本(我一般在 /usr/local 下创建 backup/backup.sh),替换掉下面的用户名,密码,数据库名以及生成文件路径及文件名。需要注意的是,如果是在 Windows 编写完成的脚本会因为 Windows每行结尾 nr,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
☞ 添加定时任务
在计算机关机中选择任务计划程序,创建一个任务,定时触发执行写好的脚本即可。
- 安装 IronPython
- Python 项目实践三(Web应用程序)第一篇
- Centos 7.0 安装Mono 3.4 和 Jexus 5.6
- 第一个IronPython程序(之二)
- Python 项目实践二(下载数据)第四篇
- Python 项目实践二(下载数据)第三篇
- 体验扁平化的WordPress 后台管理界面
- Python 项目实践二(生成数据)第二篇
- 重新审视SqlDataReader的使用
- Python 项目实践二(生成数据)第一篇
- 删除 WordPress 导航菜单的多余 CSS 选择器
- 删除 WordPress 导航菜单的多余 CSS 选择器
- 使用asp.net 2.0的CreateUserwizard控件如何向自己的数据表中添加数据
- 自定义(修改)WordPress管理后台界面的字体样式
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- SAP CDS view自学教程之九:cube view和query view的实现原理
- 一点多发FTP客户端设计
- VS2017中使用CppSQLite报出编译器错误C2440
- Windows 必知命令
- MATLAB批量读取一个文件夹下的图片
- python next()迭代器完成会引发StopIteration异常
- 没想到,Git居然有3种“后悔药”!
- JetCache埋点的骚操作,不服不行啊
- StringBuider 在什么条件下、如何使用效率更高?
- SpringCache与redis集成,优雅的缓存解决方案
- 理解一下5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO
- WinXP的MS08-067漏洞利用复现和解决方案
- 实用FRIDA进阶:内存漫游、hook anywhere、抓包
- 聊聊claudb的server command
- BFE.dev前端刷题88 - 在JavaScript中实现负索引