加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

关于MySQL数据库的备份方案

发布时间:2018-10-04 21:27:42 所属栏目:MySql教程 来源:佚名
导读:副标题#e# 分享点自己近年来接触MySQL数据备份这一块的小经验。数据是一个互联网公司的命脉,数据库的安全以及备案的完整性是至关重要的,所以我们需要在工作中要很熟练的掌握数据的备份与恢复,这也是一个合格的运维DBA必须具有的职业技能。 我这里简单总结

全量备份脚本内容:

  1. #!/bin/bash  
  2. #mysql全量备份脚本建议在slave从库上运行,从库slave上建议开启参数log_slave_updates=1  
  3. mkdir /backup  
  4. cd /backup  
  5. dateDIR=$(date +"%Y-%m-%d")  
  6. mkdir -p $dateDIR/data  
  7. path=/data/mysql/data  
  8. for n in `mysql -uroot -p123456 -e "show databases"|grep -v "Database"`  
  9. do  
  10. mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B $n|gzip >/backup/$dateDIR/data/${n}_$dateDIR.sql.gz  
  11. done  
  12. binlog_rm=$(tail -n 1 $path/mysql-bin.index|sed 's/.///')  
  13. mysql -uroot -p123456 -e "purge binary logs to '$binlog_rm'" 

说明:这个全量备份脚本,会在导出的时候锁住全局表,并且此时刷新产生一个新的bin-log,期间会产生写操作的等待,直到导出结束后才会写入新产生的bin-log文件,然后旧的bin-log 文件会被删除删除掉,一般在晚上2:00业务低峰期执行操作

进行本地bin-log增量备份

在执行完全量备份脚本后,就可以执行增量备份脚本了。

增量备份脚本思路很简单:

先mysqladmin -uroot -p123456 flush-logs 刷新新的binlog文件,此时mysql写入到新的binlog文件中。

然后把当前mysql数据库存放binlog的目录中抛去刚才最新生成的binlog文件,其余旧的binlog文件全部cp到本地服务器/backup/binlog  binlog的备份目录下。

最后在登录MySQL清除当前的binlog文件数减一

  1. mysql -uroot -p123456 -e "purge binary logs to 'mysql-bin.(n-1)'" 

3.热备份与恢复

热备份的方式也是直接复制数据物理文件,和冷备份一样,但是热备份可以不停机直接复制,一般用于7*24小时不间断的重要核心业务。Mysql的社区版本热备份工具InnoDB Hot Backup是付费的,只能试用30天,商业版才可以永久的使用,

Percona公司发布一个xtrabackup热备工具,和付费的工具一样,支持在线热备(备份时不影响数据的读写)是商业工具InnoDB Hot Backup的一个很好的替代。

xtrabackup热备工具是一个开源的工具,他可以非常快速的备份和恢复mysql数据库。由于Xtrabackup支持备份innodb表,实际生产环境中我们使用的工具是innobackupex,它是对xtrabackup的一层封装。innobackupex脚本用来备份非 InnoDB 表,同时会调用 xtrabackup命令来备份 InnoDB 表,innobackupex的基本流程如下:

  1. 开启redo日志拷贝线程,从最新的检查点开始顺序拷贝redo日志;
  2. 开启idb文件拷贝线程,拷贝innodb表的数据
  3. idb文件拷贝结束,通知调用FTWRL,获取一致性位点
  4. 备份非innodb表(系统表)和frm文件
  5. 由于此时没有新事务提交,等待redo日志拷贝完成
  6. 最新的redo日志拷贝完成后,相当于此时的innodb表和非innodb表数据都是最新的
  7. 获取binlog位点,此时数据库的状态是一致的。
  8. 释放锁,备份结束。

具体使用请参考:https://www.linuxidc.com/Linux/2018-08/153635.htm

关于MySQL数据库的备份方案到此处就介绍完了,如有不对,请及时指出。欢迎一起交流学习。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-08/153634.htm

【编辑推荐】

  1. 巧妙设计多级缓存,为数据库减负
  2. MySQL多版本并发控制机制(MVCC)源码浅析
  3. MySQL binlog日志三种模式选择及配置
  4. 区块链和数据库,技术到底有何区别?
  5. 手把手教你如何不停机将海量数据从DB2全量数据迁移到MySQL
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读