设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 4814|回复: 7

[shell] 发一个mysql增量备份的脚本 [复制链接]

LT技术团队

开源er

Rank: 7Rank: 7Rank: 7

签到
4
注册时间
2009-3-4
最后登录
2012-7-3
在线时间
30 小时
阅读权限
100
积分
427
帖子
42
主题
4
精华
0
UID
1699
发表于 2010-7-16 10:26:14 |显示全部楼层
本帖最后由 zhounetworking 于 2010-7-16 10:31 编辑
  1. #!/bin/bash
  2. #
  3. # Author        :        ZhouSIR
  4. # Email         :        zhounetworkint@gmail.com
  5. #
  6. # ChangLog   :        2010.06.17   Write this script Complete
  7. #
  8. #                        
  9. #set -x

  10. #将脚本前面部份的变量修改到你所需要的,即可使用

  11. PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/isystem/bin:/opt/isystem/php/bin:/root/bin"
  12. DB_DIR="/usr/my_3310 /usr/my_3311 /usr/my_3312"                #服务器上是多daemon的,
  13. BAK_DIR="/tmp"                                                #备份好后 mv 到 /tmp , 因备份还会传到你指定的备份机上,其实也不必在本机mv了,看需求
  14. DB_USER="root"
  15. DB_PASS="11111"
  16. DATE=`date +%Y.%m.%d`
  17. DBLOG="/var/log/DBDump.log"
  18. for i in $DB_DIR;do
  19.         SOCKETID=$(echo $i | awk -F"_" '{ print $2 }')
  20.         DB_SOCKET="/tmp/mysql.sock$SOCKETID"
  21.         BINLOG="my$SOCKETID"
  22.         LOG_LIST="mysql$SOCKETID.list"
  23.         BINLOG_NAME="my${SOCKETID}_${DATE}.tar.gz"

  24.         [ -f $LOG_LIST ] && rm -f $LOG_LIST

  25.         if [ -S "$DB_SOCKET" ]
  26.         then
  27.                 if [ -d $i ] ;then cd $i ;else echo "$i is no exist" ; continue ;fi

  28.                 mysqladmin -S $DB_SOCKET -u$DB_USER -p$DB_PASS  flush-logs                                        #刷新缓存中的log

  29.                 if [ -f $BINLOG.index ];then
  30.                         cp $BINLOG.index index.tmp
  31.                         cat -v index.tmp | sed -e 's?.*\(\./.*\.[0-9]*\).*?\1?' -e '$d' > $LOG_LIST    #因一次发现$BINLOG.index的类型竟然为data,以此来过滤出log list            
  32.                         for f in `cat $LOG_LIST`;do
  33.                                 if ! [ -f $f ];then
  34.                                         echo "DB_$SOCKETID LogFile $f is no exist"
  35.                                         continue
  36.                                 fi
  37.                         done
  38.                 else
  39.                         echo "$BINLOG.index is not exist"
  40.                         continue
  41.                 fi
  42.                 tar zcvf $BINLOG_NAME -T $LOG_LIST &>/dev/null                                                        #tar 打包

  43.                 if [ $? -eq 0 ];then
  44.                         for y in `cat $LOG_LIST`;do
  45.                                 rm -f $y
  46.                         done
  47.                 else
  48.                         echo "Tar is error for DB$i"
  49.                         echo "DB$i action TAR is error  `date +%Y.%m.%d\ %T`" >> $DBLOG
  50.                         continue
  51.                 fi

  52.                 echo "Send to host: nagios_192.168.0.239"                                                                #传入备份机
  53.                 scp $BINLOG_NAME nagios:/tmp &>/dev/null
  54.                 if [ $? -ne 0 ];then
  55.                         echo "Send to remote host fail of $BINLOG_NAME " >> $DBLOG
  56.                         echo "Send to remote host fail of $BINLOG_NAME " | mail -s "Send $BINLOG_NAME fail" zhounetworking@126.com        #失败则发邮箱
  57.                         continue
  58.                 fi

  59.                 echo "Moving $BINLOG_NAME to $BAK_DIR"
  60.                 mv $BINLOG_NAME $BAK_DIR                                                              #如传入备份机失败的话,这里还有一份

  61.                 echo

  62.                 cat -v index.tmp | sed -e 's?.*\(\./.*\.[0-9]*\).*?\1?' |tail -1 > .index        #备份好后,将$BINLOG.index 中被备份过的log
  63.                                                                                                 #删除,并将新生成的log写入列表
  64.                 cat .index > $BINLOG.index                                                                  
  65.                
  66.                 rm -f $LOG_LIST index.tmp
  67.         else
  68.                 echo "DB_$SOCKETID is not running "
  69.         fi
  70. done
  71. #echo $?

  72. #set -x
复制代码
此为我新写的mysql增量备份脚本,尽量使其易懂,便于维护!
另外是脚本的健壮性,以保证其在任何情况下稳定运行!
最好跟上各位的犀利脚本,以便大家学习  
如有错误,也请指出改正

新任斑竹,多多指教!
已有 1 人评分积分 收起 理由
dennis + 6 格式很清爽 不错

总评分: 积分 + 6   查看全部评分

Rank: 8Rank: 8

注册时间
2009-3-31
最后登录
2018-6-18
在线时间
697 小时
阅读权限
90
积分
135141
帖子
408
主题
59
精华
1
UID
2237
发表于 2010-7-18 15:16:33 |显示全部楼层
多谢楼主分享!

使用道具 举报

Rank: 3Rank: 3

注册时间
2010-3-9
最后登录
2014-4-8
在线时间
23 小时
阅读权限
30
积分
292
帖子
7
主题
2
精华
0
UID
8212
发表于 2010-7-23 14:54:07 |显示全部楼层
谢谢楼主~~~~~~

使用道具 举报

中级会员

企鹅反击战士

Rank: 3Rank: 3

注册时间
2010-7-3
最后登录
2011-10-21
在线时间
30 小时
阅读权限
30
积分
286
帖子
37
主题
1
精华
0
UID
9705
发表于 2010-7-31 20:28:17 |显示全部楼层
谢谢楼主~~~~~~

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-7-7
最后登录
2019-7-22
在线时间
72 小时
阅读权限
90
积分
13316
帖子
89
主题
7
精华
0
UID
9740
发表于 2010-10-15 13:52:44 |显示全部楼层
其实如果数据库改动次数太多,还不如直接做全备份,因为增量的binlog可能比全备大很多的。。。

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-8-22
最后登录
2014-8-18
在线时间
192 小时
阅读权限
90
积分
22488
帖子
299
主题
1
精华
0
UID
10178
发表于 2010-11-4 16:29:28 |显示全部楼层
研究研究,这类脚本满多的

使用道具 举报

Rank: 8Rank: 8

注册时间
2009-9-8
最后登录
2018-4-17
在线时间
119 小时
阅读权限
90
积分
15839
帖子
33
主题
0
精华
0
UID
5258
发表于 2012-3-3 23:25:46 |显示全部楼层
写的太罗嗦了

使用道具 举报

Rank: 8Rank: 8

注册时间
2009-3-28
最后登录
2017-5-11
在线时间
80 小时
阅读权限
90
积分
18387
帖子
120
主题
15
精华
0
UID
2181
发表于 2012-3-6 11:11:14 |显示全部楼层
检测了好多,感觉很不错

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2019-12-6 18:26 , Processed in 0.026867 second(s), 15 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部