MySQL自动备份并清理多少天前的备份文件
自动备份
一、利用mysql提供的mysqldump工具进行数据库的导入导出
二、使用shell命令执行mysqldump
/usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
注解:
1、执行/usr/local/mysql/bin/mysqldump mysql安装目录bin目录下的可执行文件;
2、--opt是quick,add-drop-table,add-locks,extended-insert,lock-tables几个参数的名称,一般都要使用,具体意思自行搜索;
3、-u数据库用户名 -p数据库密码 -h数据库地址 数据库名 > 导出的文件路径
4、`date+%F`是shell中生成当前日期,格式如2018-05-30,所以成功导出的文件名为mcpsms_titan_2015-05-30.sql;
5、检查生成的sql文件是否有问题
三、整理shell脚本,方便重用
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/mcpsms_titan_$DATE.sql
四、测试shell脚本
1、进入脚本文件目录chmod +x sqlAutoBak.sh添加执行权限
2、https://jinwanmeng.iteye.com/blog/sqlAutoBak.sh
如果mysql包含多个实例,需要指定sock文件,修改脚本为:
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock -h$DB_HOST $DB_NAME > $BCK_DIR/mcpsms_titan_$DATE.sql
五、压缩mysql备份数据
sqlAutoBak.sh修改如下:
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock -h$DB_HOST $DB_NAME | gzip > $BCK_DIR/mcpsms_titan_$DATE.sql.gz
压缩一定要写在后面,不然会报错
如果该数据库的用户没有分配锁表的权限,则备份会报错when using LOCK TABLES。那是因为mysqldump命令默认在导出时是要锁定表的,所以解决方式有两个。一个是给用户开放锁表的权限;另一个是在命令中加上--skip-lock-tables这个参数。即是:
#!/bin/sh
# tabase info
DB_USER="root"
DB_PASS="root"
DB_HOST="localhost"
DB_NAME="mcpsms-titan"
# Others vars
BIN_DIR="/usr/local/mysql/bin" #the mysql bin path
BCK_DIR="/usr/local/sql/back" #the backup file directory
DATE=`date +%F`
# TODO
# /usr/local/mysql/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /usr/local/sql/back/mcpsms_titan_`date +%F`.sql
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -S /data/3306/mysql.sock -h$DB_HOST $DB_NAME --skip-lock-tables | gzip > $BCK_DIR/mcpsms_titan_$DATE.sql.gz
六、设置linux定时任务执行脚本
1、编辑定时任务列表
crontab -e
2、插入下面这一行
00 05 * * * /bin/sh /usr/local/sql/sqlAutoBak.sh
#每天早上5:00执行
3、查看任务是否创建成功
crontab -l
七、第二天检查自动生成的sql文件是否符合要求
自动删除N天前备份的数据文件
一、删除文件命令
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
二、计划任务
1、创建shell脚本
touch /usr/local/sql/sqlAutoDel.sh
chmod +x sqlAutoDel.sh
新建一个执行文件,并且分配权限
2、编辑shell脚本
#!/bin/sh
find /usr/local/sql/back/ -mtime +2 -name '*.gz' -exec rm -rf {} \;
保存退出
3、计划任务
crontab -e
将sqlAutoDel.sh加入到计划任务中
10 05 * * * /bin/sh /usr/local/sql/sqlAutoDel.sh >/dev/null 2>&1
#每天早上5:10执行清理任务
原文地址:https://www.cnblogs.com/lonuve/p/11016018.html
- 教你一招 | Python: 函数参数魔法
- 连续多行输入--C++ 中字符串标准输入的学习及实验(续篇)
- 教你一招 | 用Python实现简易可拓展的规则引擎
- 经典算法学习之动态规划
- C++ 隐式类型转换
- IE漏洞调试之CVE-2013-3893
- C++ STL之迭代器注意事项
- 设计3D标签为什么要有一个字符间隙tracking?为什么要重写getPrefferedSize()?画三遍的顺序有讲究
- C++STL之整理算法
- Offset2lib攻击测试:看我如何全面绕过64位Linux的内核防护
- C++ STL之查找算法
- 教你一招 | Python3新特性(一) :字符串
- C++ STL之set的基本操作
- Android ClassLoader详解
- 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 实例讲解
- Lombok快速入门
- Apache Curator操作zookeeper的API使用
- 微信公众号开发-自定义菜单接口
- 基于JDK命令行工具的监控
- 基于JVisualVM的可视化监控
- 基于Btrace的监控调试
- 大数据框架—Flink与Beam
- Mybatis动态SQL
- Mybatis-Generator插件的使用与Spring集成Mybatis的配置
- Mybatis的缓存机制详解
- zookeeper基本特性与基于Linux的ZK客户端命令行学习
- Apache Curator操作zookeeper的API使用
- 使用Java API操作zookeeper的acl权限
- 使用ZooKeeper提供的原生Java API操作ZooKeeper节点
- CountDownLatch类的使用