发布于 2017-10-15 04:54:58 | 53 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Mysql教程,程序狗速度看过来!

Mysql关系型数据库管理系统

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。


MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可,下面小编给大家分享Mysql数据库增量备份的思路详解,一起看看吧

MySQL数据库增量备份,在这之前修改我们的数据库配置文件/etc/my.cnf开启bin-log日志功能即可。接下来是我参考了下网上的一些方法,自己写的,主要还是要能学到他的一些思路和方法。


#function:MYSQL增量备份
#version:1.0.0
#author:wangyanlin
#date:2017/08/02
#-----------------------------------------------------------------------------------------------
#!/bin/sh
export LANG=en_US.UTF-8
#设置时间
DATE=`date +%Y%m%d`
#设置信息
USER=root
PASSWORD=withub
#设置路径
cd /
/usr/bin/mkdir -p mysql_bak/daily 
/usr/bin/mkdir -p mysql_bak/logs
BakDir=/mysql_bak/daily
BinDir=/var/lib/mysql
LogFile=/mysql_bak/logs/Daily_$DATE.log
BinlogFile=/var/lib/mysql/mysql-bin.index
/usr/bin/mysqladmin -u$USER -p$PASSWORD flush-logs #刷新日志
Counter=`wc -l $BinlogFile | awk '{print $1}'`
NextNum=0
start_time=`date +'%Y-%m-%d %H:%M:%S'`
echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next1 Bakup start! >> $LogFile
#这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。
for file in `cat $BinlogFile`
do
  base=`basename $file`
  #basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./
  NextNum=`expr $NextNum + 1`
  if [ $NextNum -eq $Counter ]
  then
    echo $base skip! >> $LogFile
  else
    dest=$BakDir/$base
    if(test -e $dest)
    #test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去。
    then
      echo $base exist! >> $LogFile
    else
      cp $BinDir/$base $BakDir
      echo $base copying >> $LogFile
    fi
  fi
done
echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next2 Bakup succ! >> $LogFile
end_time=`date +'%Y-%m-%d %H:%M:%S'`
start_seconds=$(date --date="$start_time" +%s);
end_seconds=$(date --date="$end_time" +%s);
echo "本次备份运行时间: "$((end_seconds-start_seconds))"s" >> $LogFile

添加计划任务:

                       crontab -e

                       00 03 * * * /root/MySQL_incrementbak.sh    #每天的凌晨3点开始增量备份日

logs日志打印出来的效果:

PS:下面看下mysql全量和增量备份脚本

全量:


[root@master leo]# cat DBfullBak.sh 
#!/bin/bash
#use mysqldump to fully backup mysql data
BakDir=/root/leo/full
LogFile=/root/leo/full/bak.log
Date=`date +%Y%m%d`
Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
cd $BakDir
DumpFile=$Date.sql
GZDumpFile=$Date.sql.tgz
mysqldump -uroot -p123456 --all-databases --lock-all-tables --routines --triggers --events --master-data=2 --flush-logs > $DumpFile
tar zcvf $GZDumpFile $DumpFile
rm $DumpFile
Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile

参数注释:


--all-databases #备份所有库
--lock-all-tables #为所有表加读锁
--routinge  #存储过程与函数
--triggers  #触发器
--events   #记录事件
--master-data=2 #在备份文件中记录当前二进制日志的位置,并且为注释的,1是不注释掉在主从复制中才有意义
--flush-logs  #日志滚动一次

结果如下:


[root@master full]# ls
20140728.sql.tgz bak.log
[root@master full]# cat bak.log 
开始:2014年07月28日 19:02:59 结束:2014年07月28日 19:02:59 20140728.sql.tgz succ
开始:2014年07月28日 19:12:01 结束:2014年07月28日 19:12:01 20140728.sql.tgz succ
[root@master full]#

增量备份:


[root@master leo]# cat DBDailyBak.sh 
#!/bin/bash
BakDir=/root/leo/binlog/
BinDir=/var/lib/mysql
LogFile=/root/leo/binlog/bak.log
BinFile=/var/lib/mysql/mysql-bin.index
mysqladmin -uroot -p123456 flush-logs
Counter=`wc -l $BinFile|awk '{print $1}'`
NextNum=0
for file in `cat $BinFile`
do 
 base=`basename $file`
 NextNum=`expr $NextNum + 1`
 if [ $NextNum -eq $Counter ]
 then
  echo $base skip! >> $LogFile
 else
  dest=$BakDir/$base
  if(test -e $dest)
  then
   echo $base exist! >> $LogFile
  else
   cp $BinDir/$base $BakDir/
   echo $base copying >> $LogFile
  fi
 fi
done
echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ~ >> $LogFile

总结

以上所述是小编给大家介绍的Mysql数据库增量备份的思路和方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHPERZ网站的支持!



相关阅读 :
Mysql数据库增量备份的思路和方法
mysql自动增量备份的实例方法(本地备份与远程备份)
lnmp重置mysql数据库root密码的两种方法
Mysql 数据库常用备份方法和注意事项
MySQL中日期和时间戳互相转换的函数和方法
MySQL查询随机数据的4种方法和性能对比
解析数据库分页的两种方法对比(row_number()over()和top的对比)
Mysql 数据库更新错误的解决方法
MySQL 数据库跨操作系统的最快迁移方法
mysql数据库导出xml的实现方法
mysql数据库 主从复制的配置方法
windows mysql 自动备份的几种方法汇总
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务