Linux系统mysql5.7数据库的全量备份和增量备份shell实例

曾经之前也有写过类似mysql全量和增量备份脚本,不过过于简单。昨天晚上给公司线上服务器写了个针对mysql5.7的,相对来讲更为优化的一个实例。

注:这个脚本仅仅适合小型数据库,不适合中大型数据库。毕竟是逻辑备份方式,数据库过大导入会比较慢,建议采用innobackupex方式备份,包括我自己服务器也是采用的innobackupex。

全量备份脚本:

#!/bin/bash
#bak mysql all
# v1.0
#2016.8.4
TIME=`date +%Y%m%d_%H%M%S`
LOGFILE="/home/mysqlbak/mysql_full_bak_time.log"
MYSQL_BAKDIR="/home/mysqlbak/full$TIME"
USER=root
PASSWORD=xxxxxx
[ ! -d $MYSQL_BAKDIR  ] &&  mkdir -p $MYSQL_BAKDIR
[ ! -e  $LOGFILE ] && touch  $LOGFILE
DATABASE=`mysqlshow  -u$USER  -p$PASSWORD  |  grep  -Ev "Data|info|per|sys" | grep  -v + | awk '{print  $2}'`
for bakmysqlname in $DATABASE
do
mysqldump  -u$USER  -p$PASSWORD  $bakmysqlname  --skip-lock-tables > $MYSQL_BAKDIR/$TIME_$bakmysqlname.sql
tar zcf $MYSQL_BAKDIR/$TIME_$bakmysqlname.tar.gz   $MYSQL_BAKDIR/$TIME_$bakmysqlname.sql --remove-files &> /dev/null
done
ret=$?
FINISHTIME=`date +%Y%m%d_%H%M%S`
 
[ $ret -eq 0 ] && echo  "Mysql fullbakup  finished, time: $FINISHTIME">>  $LOGFILE || echo "Mysql fullbakup failed,please check time:$FINISHTIME" >>  $LOGFILE

增量备份脚本:

#!/bin/bash
#bak incr for mysql
#2016.8.4
TIME=`date +%Y%m%d_%H%M%S`
DATADIR=/data/mysql
LOGFILE="/home/mysqlbak/mysql_incr__bak_time.log"
USER=root
PASSWORD=xxxxxx
MYSQL_BAKDIR=/home/mysqlbak/incr$TIME
[ ! -d $MYSQL_BAKDIR ] && mkdir -p $MYSQL_BAKDIR
[ ! -e  $LOGFILE ] && touch  $LOGFILE
mysqladmin   -u$USER -p$PASSWORD  flush-logs
TOTAL=`ls $DATADIR/mysql-bin.*  |wc -l`
TOTAL=`expr $TOTAL - 2`
for filetemp  in `ls $DATADIR/mysql-bin.*|head -n $TOTAL`
do
incrfilename=`basename $filetemp`
cp  $filetemp   $MYSQL_BAKDIR/$incrfilename
tar zcf $MYSQL_BAKDIR/$incrfilename.tar.gz  $MYSQL_BAKDIR/$incrfilename --remove-files &> /dev/null
done
ret=$?
FINISHTIME=`date +%Y%m%d_%H%M%S`
[ $ret -eq 0 ] && echo  " Mysql incr bak finished,time: $FINISHTIME">> $LOGFILE || echo  " Mysql incr bak failed,please check.time: $FINISHTIME">> $LOGFILE

时间: 2024-11-08 21:12:32

Linux系统mysql5.7数据库的全量备份和增量备份shell实例的相关文章

mysql数据库的全量备份

mysql数据库的全量备份,包括数据和结构.保存最新的10次备份. 准备工作: 创建备份主目录 mkdir  /backup 一:编写脚步文件mysql_backup.sh #!/bin/sh # mysql_backup.sh: 备份mysql数据信息,并且只保留最新的10份. #数据库用户名 db_user="root" #数据库密码 db_passwd="imsuser" #数据库IP db_host="localhost" #数据库名 d

基于Solr DIH实现MySQL表数据全量索引和增量索引

实现MySQL表数据全量索引和增量索引,基于Solr DIH组件实现起来比较简单,只需要重复使用Solr的DIH(Data Import Handler)组件,对data-config.xml进行简单的修改即可.Solr DIH组件的实现类为org.apache.solr.handler.dataimport.DataImportHandler,在Solr的solrconfig.xml中配置两个handler,配置分别说明如下. 全量索引 solrconfig.xml配置如下: 1 <reque

VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案

目录 目录 前文列表 全量备份数据的获取方式 增量备份数据的获取过程 前文列表 VMware 虚拟化编程(1) - VMDK/VDDK/VixDiskLib/VADP 概念简析 VMware 虚拟化编程(2) - 虚拟磁盘文件类型详解 VMware 虚拟化编程(3) -VMware vSphere Web Service API 解析 VMware 虚拟化编程(4) - VDDK 安装 VMware 虚拟化编程(5) - VixDiskLib 虚拟磁盘库详解之一 VMware 虚拟化编程(6)

shell实现mysql mysqldump实现数据全备份或增量备份

本篇文章主要讲如何使用shell实现mysql全量,增量备份.增量备份在周一-周六凌晨3点,会复制mysql-bin.00000*到指定目录:而全量备份则使用mysqldump将所有的数据库导出,每周日凌晨3点执,并会删除上周留下的mysq-bin.00000*.然后对mysql的备份操作会保留在bak.log文件中.如下图: 开始:2013年05月02日 15:10:57 结束:2013年05月02日 15:12:16 20130502.sql.tgz succ是由DBFullyBak.sh产

详解Linux系统中Oracle数据库程序的启动和关闭方式_oracle

在单机环境下,要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle Oracle数据库有以下几种启动方式: 1. startup nomount 非安装启动,这种方式启动下可执行:重建控制文件.重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件. 2. startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档. 数据库介质恢复. 使数据文件联机或脱机, 重新

MYSQL数据库自动本地/异地双备份/MYSQL增量备份

构建高安全电子商务网站之(网站文件及数据库自动本地/异地双备份)架构图 继续介绍Linux服务器文件备份,数据库备份,数据安全存储相关的电子商务系统架构.针对安全性有多种多样的解决方案,其中数据备份是重中之重的首要工作. 电子商务网站更加注重考虑数据安全,数据备份方案,包括本地备份.异地备份架构.其中Linux服务器的备份方案非常多,本文介绍一个大众化适用的解决方案,通过编写Shell脚本来完成自动备份.本架构包括备份网站文件.数据库,自动本地备份并FTP上传备份脚本,完成相应本地备份.异地备份

linux中mysql备份,增量备份及恢复程序

 代码如下 复制代码 #!/bin/bash # full && increment backup and recover # 说明:事先要确保存在/data/bak目录,且要保证在执行增量备份时已做过至少一次全量备份,否则找不到position文件. port='3306' back_src_dir="/data/mysql/${port}/logs/binlog" back_dir='/data/bak' DATE=`date +%Y%m%d` user='root

Linux系统下Mysql数据库安装配置整理

Mysql安装 1.通过官网下载mysql源码包.http://dev.mysql.com/downloads/ 点击MySQL Community Server,选择Source Code, 点击 Generic Linux (Architecture Independent), Compressed TAR Archive后的Download # wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.20.tar.gz # t

linux系统中mysql数据库的导入和导出_Mysql

目的:将服务器的mysql中的数据导入到本地 设备:本地:Mac. 远程服务器:linux 使用ssh登录服务器 mysqldump -u [username] -p [database_name] > [/path/dumpfilename.sql] 例如:`mysqldump -u root -p mywordpress > /var/mywordpress.sql 在Mac上使用软件filezilla将第2步导出的mywordpress.sql下载到本地 mysql -u [userna