我喜欢黑夜,喜欢网络安全,孤独寂寞的黑夜里,我只需要,一包烟,一台笔记本...
更多
首  页>>JAVA安全开发>> mysql自动备份策略
mysql自动备份策略
2889
0推荐
0评论

目标:

每7天做一个完整备份,每天做一份binlog日志

第二周将之前的备份删除并产生新的完整备份和binlog日志

备份要求每天2:00自动完成

sql 版本:mysql5.5

1.开启binlog
vim /etc/my.cnf
[mysqld]
log-bin=binlog

2.重启mysqld服务
/etc/init.d/mysqld restart

验证binlog开启成功
/usr/local/mysql/var/下会出现binlog.0000001,binlog.index文件

3.刷新日志产生新的binlog
mysql -u root -p flush-logs

4.删除前一时期的日志除了最后一个
rm -f `sed -n '$!p' binlog.index`

5.产生新的完整备份
mysqldum --all-databases -u root -p

6.删除最后一个日志
rm -f `sed -n '$p' binlog.index`

7.产生新的增量备份
mysqladmin -u root -p flush-logs

8.删除最后一份日志
rm -f `sed -n '$!p' binlog.index`

9.将新的日志信息重新写入binlog.index
sed -n '$p' binlog.index >tmp
cat tmp >binlog.index

操作步骤:

一.每天凌晨零点一分产生一份binlog,用crontab实现
crontab -e
01 00 * * * mysqladmin -u root -pdbpass flush-logs

二.用脚本实现每周产生一个新的完整备份,并将原来的增量备份全删除

1.vim mysql_bak.sh

    #!/bin/bash
 #This script will backup mysql database
  
MYSQL_DIR=/usr/local/mysql
  
#delete old binlogs except the last one
 rm -f `sed -n '$!p' $MYSQL_DIR/data/binlog.index`
  
#backup db 
mysqldump -u root -pdbpass dbname >/var/backup/dbname_`date +"%Y%m%d"`.sql
  
#delete the last binlog
 rm -f `sed -n '$p' $MYSQL_DIR/data/binlog.index`
  
#create new binlog by flush-logs
 mysqladmin -u root -pdbpass flush-logs
  
#write new binlog into binlog.index
 sed -n '$p' $MYSQL_DIR/data/binlog.index >/tmp/tmp.index
 cat /tmp/tmp.index >$MYSQL_DIR/data/binlog.index




2.mv mysql_bak.sh /usr/local/mysql/bin/



3.crontab实现每周日备份
crontab -e
00 02 * * 7 /usr/local/mysql/bin/mysql_bak.sh

已经有 ( 0 ) 位网友对此发表了自己的看法,你也评一评吧! 此文不错,我要推荐-->    推 荐
欢迎参与讨论,请在这里发表您的看法、交流您的观点@禁止各种脚本

  • 点击Top
  • 推荐Top
  • 评论Top
更 多>>
本站采用Java语言开发,Spring框架,欢迎朋友们提意见。重新对页面进行布局,修改了程序,方便开源使用,由于本人美工真的不行 ,很少用背景图片,页面基本都用背景色...
主题:无色无味 | 网站地图|
Copyright (c) 2012-2013 www.shack2.org All Rights Reserved. | 空ICP备111111111号 | 程序设计: shack2 Powered by SJBlog v1.0 联系QQ:1341413415