手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

MySQL异地增量备份

[日期:2012-09-18] 来源:Linux公社  作者:cxhyrf [字体: ]

MySQL异地增量备份:

  1. #!/bin/sh  
  2.  
  3. #MySQL Info   
  4. sqluser=root   
  5. sqlpsw=root   
  6.   
  7. /usr/bin/mysqladmin -u$sqluser -p$sqlpsw flush-logs --default-character-set=GBK   
  8.   
  9. DATADIR=/data/mysql   
  10. BAKDIR=/home/backup/mysql/daily   
  11. TEMPDIR=/home/backup/mysql/temp   
  12.   
  13. BINLOGNAME='mysql-bin'  
  14. cd $DATADIR   
  15. FILELIST=$(cat $BINLOGNAME.index | cut -c3-)  
  16.  
  17. ## COUNTER number   
  18. COUNTER=0   
  19. for file in $FILELIST   
  20. do  
  21. COUNTER=$(expr $COUNTER + 1)   
  22. done   
  23.   
  24. NextNum=0   
  25. for file in $FILELIST   
  26. do  
  27. NextNum=$(expr $NextNum + 1)   
  28. if test "$NextNum" = "$COUNTER"  
  29. then   
  30. echo "skip lastest"  
  31. else  
  32. dest=$BAKDIR/$file   
  33. if test -e $dest   
  34. then   
  35. echo "skip exist $dest"  
  36. else  
  37. cp $file $TEMPDIR   
  38. fi   
  39. fi   
  40. done   
  41. echo "backup mysql binlog ok"  
  42.   
  43. sleep 2s   
  44.   
  45. cd $TEMPDIR   
  46. tarname=binlog$(date +%y%m%d).tar.gz   
  47. tar czf $tarname ./mysql-bin*   
  48.   
  49. sleep 1s  
  50.  
  51. #ftp Info   
  52. ftphost=111.111.11.11   
  53. ftpname=xxx   
  54. ftppsw=psw   
  55.   
  56. cd $TEMPDIR   
  57.   
  58. ftp -i -n <<!   
  59. open $ftphost   
  60. user $ftpname $ftppsw   
  61. type binary   
  62. put $tarname   
  63. close   
  64. bye   
  65. !   
  66. sleep 10s   
  67.   
  68. echo "end upload"  
  69.   
  70. cd $TEMPDIR   
  71. mv $BINLOGNAME* $BAKDIR   
  72. rm -r $tarname   
  73.   
  74. echo "end"  

说明:

mysqladmin -u$sqluser -p$sqlpsw flush-logs:mysql自动把内存中的日志放到日志文件binlog的最后一个文件里,并生成一个空的新日志文件,之后只需要备份前面的几个即可,最后一个因为是刚生成的,并且是空的,所以不需备份。

关于binlog可参考: http://www.linuxidc.com/Linux/2012-09/70815.htm

大概思路:

把datadir和bakdir目录中的binlog进行对比,如bakdir中没有,且该binlog不是最后一个,则把该binlog复制到tempdir中;这样tempdir中的binlog都是新增的binlog。之后把tempdir中的binlog进行打包压缩,ftp到另一个服务器上。

linux
相关资讯       MYSQL备份  MySQL异地增量备份 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款