MySQ数据备份
mysql备份概述
问题:备份和冗余有什么区别?
- 备份:能够防止由于机械故障以及人为操作带来的数据丢失,例如将数据库文件保存在了其它地方。
- 冗余:数据有多份冗余,但不等于备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。
备份是什么?
databases binlog my.cnf /data/xxx(数据目录)
备份数据库,还有日志文件,还有配置文件,尽可能将数据目录里面的文件全部备份。
备份过程中必须考虑因素:
- 1、必须制定详细的备份计划(备份频率、时间点、周期)(根据当前的业务情况,需要考虑备份的时间和备份数据的大小。数据量太大的话就使用冗灾)。
- 2、备份数据应该放在非数据库本地,并建议有多份副本
- 3、必须做好数据恢复的演练(每隔一段时间,对备份的数据在测试环境中进行模拟恢复,保证当出现数据灾难的时候能够及时恢复数据。)(保证数据的可用性)备份完成后进行断电模拟演练。测试数据库是否可以正常启动,数据能否正常进行恢复。
- 4、根据数据应用的场合、特点选择正确的备份工具。
- 5、数据的一致性。
- 6、数据的可用性。
备份类型
逻辑备份
逻辑备份就是在不停业务的情况下进行备份。
备份的是建表、建库、插入等操作所执行sql语句(ddl dml dcl),适用于中小型数据库,效率相对较低。
(一般在数据库正常提供服务的前提下进行的);如:mysqldump、mydumper、 into outfile(表的导出导入)等
物理备份
直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的mysql版本。
(一般在数据库彻底关闭或者不能完成正常提供服务的前提下进行的备份);如:tar、cp、xtrabackup、lvm snapshot等
在线热备
在线热备:ab复制(在线实时)(指的是对数据的冗余)
m-s
m-sn
m-s1-s2
m-m-sn
备份工具
社区版安装包中的备份工具
mysqldump
- 企业版和社区版都包含
- 本质上使用sql语句描述数据库及数据并导出
- 在myisam引擎上锁表,innodb引擎上锁行
- 数据量很大时不推荐使用
mysqlhotcopy
- 企业版和社区版都包含
- perl写的一个脚本,本质上是使用锁表语句再拷贝数据
- 只支持myisam数据引擎
企业版安装包中的备份工具
mysqlbackup
- 在线备份
- 增量备份
- 部分备份
- 在某个特定时间的一致性状态的备份
第三方备份工具
xtrabackup和innobackupex
xtrabackup是一个对innodb做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具innodb hotbackup的一个很好的替代品
xtrabackup有两个主要的工具:xtrabackup、innobackupex
- xtrabackup只能备份innodb和xtradb两种数据表,不能备份myisam类型的表,也不能备份数据表结构。
- innobackupex是将xtrabackup进行封装的perl脚本,所以能同时备份处理innodb和myisam的存储引擎,但在处理myisam时需要加一个读锁
mydumper
mydumper 多线程备份工具
https://launchpad.net/mydumper/mydumper-0.9.1.tar.gz 2015-11-06(最后更新时间)
备份方法
完全备份
增量备份
差异备份
差异增量备份
• sunday
an incremental level 0 backup backs up all blocks that have ever been in use in this database.
• monday through saturday
on each day from monday through saturday, a differential incremental level 1 backup backs up all blocks that have changed since the most recent incremental backup at level 1 or 0. the monday backup copies blocks changed since sunday level 0 backup, the tuesday backup copies blocks changed since the monday level 1 backup, and so forth.
累计增量备份
• sunday
an incremental level 0 backup backs up all blocks that have ever been in use in this database.
• monday - saturday
a cumulative incremental level 1 backup copies all blocks changed since the most recent level 0 backup. because the most recent level 0 backup was created on sunday, the level 1 backup on each day monday through saturday backs up all blocks changed since the sunday backup.
需要掌握的备份方法:
逻辑数据的导入导出(into outfile)、mysqldump、mysqlhotcopy、xtrabackup和innobackupex
lvm-snapshot、mysqlbackup