MYSQL-innobackupex备份脚本
自动化运维,是数据库管理员的不懈追求。目前出现了一些数据库自动管理平台,但出现时间较短,不够稳定。最常用的工具依然是shell脚本。
现在需要管理的某mysql数据库,数据量在800G,使用dump备份时间过长,从而使用了网上推荐的innobackupex方式。影响备份速率的因素很多,这里就不一一讨论,也可以添加
以下是我写的备份脚本,要求备份目录的磁盘容量至少是数据文件的3倍以上。
#每天备份一次。一次全量,与两次增量,循环备份。备份保留三天。
#!/bin/bash
# 定义变量
user_name=root
password=""
socket="/mysqldb/home/mysql.sock"
file_cnf=/mysqldb/config/my.cnf BEGINTIME=`date +"%Y-%m-%d %H:%M:%S"`
format_time=`date +"%Y-%m-%d_%H:%M:%S"`
#week=`date +%Y-%m-%d -d "-24hour"`
time=`date +"%Y-%m-%d"`
time_old=$( date +"%Y-%m-%d" -d "-24hour" )
backupbin=/usr/bin backdir=/mysql_backup/$time #备份目录,数据文件形式,保留一天,第二天压缩
old_dir=/mysql_backup/$time_old
redo=/mysql_backup/redofile #留存目录,tar.gz格式
out_log=/mysql_backup/info/xtrabackup_log_$format_time #innobackupex输出信息日志
time_cost=/mysql_backup/info/xtrabackup_time.txt #innobackupex记录 #创建目录 if [ ! -d "/mysql_backup/redofile" ];
then
mkdir -p /mysql_backup/redofile
fi if [ ! -f "/mysql_backup/info/xtrabackup_time.txt" ];
then
mkdir -p /mysql_backup/info/
touch /mysql_backup/info/xtrabackup_time.txt
fi #全量、增量备份
#如果今天有full,则创建incr1
if [ -d "$backdir"_full ];then
(echo "#####开始今日一次增量备份 at $BEGINTIME " ) && >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel= --user=$user_name --password=$password --socket=$socket --incremental --incremental-basedir="$backdir"_full "$backdir"_incr1 > $out_log >&
tar -czvf ${redo}\/redofile_"$time"_full.tar.gz "$backdir"_full >/dev/null >&;
rm -rf "$backdir"_full;
break; #如果今天有incr1,则创建incr2
elif [ -d "$backdir"_incr1 ];then
(echo "#####开始今日第2次增量备份 at $BEGINTIME " ) && >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel= --user=$user_name --password=$password --socket=$socket --incremental --incremental-basedir="$backdir"_incr1 "$backdir"_incr2 > $out_log >&
tar -czvf ${redo}\/redofile_"$time"_incr1.tar.gz "$backdir"_incr1 >/dev/null >&
rm -rf "$backdir"_incr1;
break; #如果昨天没有文件,则创建全量
elif [ ! -d "$old_dir"_* ];then
(echo "#####创建[新]全量备份 at $BEGINTIME " ) && >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel= --user=$user_name --password=$password --socket=$socket "$backdir"_full > $out_log >&
break; #如果昨天有incr2,则创建full
elif [ -d "$old_dir"_incr2 ];then
(echo "#####覆盖[旧]备份,创建[新]全量备份 at $BEGINTIME " ) && >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel= --user=$user_name --password=$password --socket=$socket $backdir > $out_log >&
mv "$backdir" "$backdir"_full
break; #如果昨天有full,则创建incr1
elif [ -d "$old_dir"_full ];then
(echo "#####开始第1次增量备份 at $BEGINTIME ") && >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel= --user=$user_name --password=$password --socket=$socket --incremental --incremental-basedir="$old_dir"_full "$backdir"_incr1 > $out_log >&
break; #如果昨天有incr1,则创建incr2
elif [ -d "$old_dir"_incr1 ];then
(echo "#####开始第2次增量备份 at $BEGINTIME " ) && >>$time_cost
$backupbin/innobackupex --defaults-file=$file_cnf --no-timestamp --parallel= --user=$user_name --password=$password --socket=$socket --incremental --incremental-basedir="$old_dir"_incr1 "$backdir"_incr2 > $out_log >&
break; fi #对昨天的文件压缩归档,删除三天前的文件 a=`ls /mysql_backup|grep "$time_old"_*`; if [ -d "$old_dir"_* ];then
tar -czvf ${redo}\/redofile_${a}.tar.gz "$old_dir"_* >/dev/null >&
#删除已归档文件夹 rm -rf "$old_dir"_* && echo "#####删除已归档的数据文件"$old_dir"" >>$time_cost
break;
fi #删除3天前的归档文件 find /mysql_backup/redofile/ -mtime + -name "redofile_*" && echo "#####删除3天前的归档文件">>$time_cost;
find /mysql_backup/redofile/ -mtime + -name "redofile_*" -exec rm -rf {} \; #输出时间变量
b=`(ls /mysql_backup/${*} |grep ''-'')`
ENDTIME=`date +"%Y-%m-%d %H:%M:%S"`
begin_data=`date -d "$BEGINTIME" +%s`
end_data=`date -d "$ENDTIME" +%s`
spendtime=`expr $end_data - $begin_data`
(echo "耗时 $spendtime sec 用于创建备份文件 $b") && >>$time_cost
脚本写完后,加入crontab中,我设置的是每天23点30份执行
30 23 * * * /root/innobackupex.sh
注意脚本的执行权限
恢复的脚本预计下周写完。
MYSQL-innobackupex备份脚本的更多相关文章
- Windows下MySQL数据库备份脚本(一)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
- Windows下MySQL数据库备份脚本(二)
说明: MySQL数据库安装目录:C:\Program Files\MySQL\MySQL Server 5.0 MySQL数据库存放目录:C:\Program Files\MySQL\MySQL S ...
- Mysql 自动备份脚本
转自: Mysql 自动备份脚本2 - - ITeye技术网站http://kangh.iteye.com/blog/2309091 备份方案: 备份主机:192.168.10.11 数据库服务器:1 ...
- mysql的备份脚本
mysql的备份脚本 脚本如下 #!/bin/sh # mysql_backup.sh: backup mysql databases and keep newest 5 days backup. # ...
- mysql全备份脚本速查
mysql全备份脚本 # 快捷备份方式[root@nb scripts]# cat db.backup.sh #!/bin/bashmysqldump -ubackup -pbackuppwd -P3 ...
- mysql数据库备份脚本
mysql数据库备份脚本 mysql数据库分库备份脚本:[root@localhost tmp]# cat mysql.sh #!/bin/bash USER=root PASSWORD=joy4yo ...
- Ubuntu Server下MySql数据库备份脚本代码
明: 我这里要把MySql数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2012_04_11.tar. ...
- mysql数据库备份脚本一例
例子,mysql数据库备份脚本.vim mysql.sh #!/bin/bash DAY=`date +%Y-%m-%d` //日期以年月日显示并赋予DAY变量 SIZE=`du -sh /var/l ...
- MySQL 数据库备份脚本
MySQL 数据库备份脚本 #!/bin/bash # 数据库连接信息 DB_HOST="127.0.0.1" DB_PORT="3306" DB_USER=& ...
- MySQL XtraBackup备份脚本
#backup.sh #!/bin/sh #on xtrabackup 2.1.8 # 第一次执行它的时候它会检查是否有完全备份,否则先创建一个全库备份 # 当你再次运行它的时候,它会根据脚本中的设 ...
随机推荐
- 基于 Apache APISIX 的下一代微服务架构
2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,Apache APISIX PPMC 温铭做了题为 ...
- 0010 CSS字体样式属性:font-size、font-family、Unicode字体、font-weight、font-style、综合设置、color、 text-align、line-height、text-indent、text-decoration、、、
CSS字体样式属性.调试工具 目标 应用 使用css字体样式完成对字体的设置 使用css外观属性给页面元素添加样式 使用常用的emment语法 能够使用开发人员工具代码调试 1.font字体 1.1 ...
- Spring Boot 整合 slf4j+log4j2 实现日志管理
背景 Java 中比较常用的日志框架: log4j(Log for Java):Apache 的一个开源项目,七种日志级别:OFF.FATAL.ERROR.WARN.INFO.DEBUG.TRACE ...
- java连接elasticsearch:查询、添加数据
导入jar包 <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/transport --> <depe ...
- MyBatis原理-架构流程
一 .MyBatis原理架构图 Mybatis的功能架构分为三层: API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层一接收到调用请求就会调用数据处理层来完成具体 ...
- 「学习笔记」 FHQ Treap
FHQ Treap FHQ Treap (%%%发明者范浩强年年NOI金牌)是一种神奇的数据结构,也叫非旋Treap,它不像Treap zig zag搞不清楚(所以叫非旋嘛),也不像Splay完全看不 ...
- 1050 螺旋矩阵 (25 分)C语言
本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行 ...
- docker-tmpfs挂载
使用tmpfs挂载 卷和绑定装置允许在主机和容器之间共享文件,以便即使在容器停止后也可以保留数据. 如果你在Linux上运行Docker,你有第三个选择:tmpfs mounts.使用tmpfs装载创 ...
- nginx优势,依赖,启动
Nginx Nginx优势1.nginx将网络,磁盘及定时器等异步事件的驱动都做了非常好的封装,基于它开发将可以忽略这些事件处理的细节.2.Nginx封装了许多平台无关的接口,容器,适用于跨平台开 ...
- Bandicam(班迪录屏)高清视频录制工具
Bandicam(班迪录屏)简单好用的录屏幕,录游戏,录视频的功能强大的屏幕录像软件,比起其他软件其性能更加卓越. 与其他软件相比,用Bandicam录制的视频大小更小, 不仅保证原文件的质量.