Mysql入门MySQL备份原理详解
《Mysql入门MySQL备份原理详解》要点: MYSQL学习本文为大家介绍了MySQL备份原理,欢迎大家阅读. MYSQL学习备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间.这篇文章主要讨论MySQL的备份方案,重点介绍几种备份方式的原理,包括文件系统快照(LVM),逻辑备份工具Mysqldump,Mydumper,以及物理备份工具Xtrabackup,同时会详细讲解几种方案的优缺点,以及可能遇到的问题. MYSQL学习冷备份 MYSQL学习最简单的备份方式就是,关闭MySQL服务器,然后将data目录下面的所有文件进行拷贝保存,需要恢复时,则将目录拷贝到需要恢复的机器即可.这种方式确实方便,但是在生产环境中基本没什么作用.因为所有的机器都是要提供服务的,即使是Slave有时候也需要提供只读服务,所以关闭MySQL停服备份是不现实的.与冷备份相对应的一个概念是热备份,所谓热备份是在不影响MySQL对外服务的情况下,进行备份,热备份是这篇文章讨论的重点. MYSQL学习快照备份 MYSQL学习首先要介绍的热备份是快照备份,快照备份是指通过文件系统支持的快照功能对数据库进行备份.备份的原理是将所有的数据库文件放在同一分区中,然后对该分区执行快照工作,对于Linux而言,需要通过LVM(Logical Volumn Manager)来实现.LVM使用写时复制(copy-on-write)技术来创建快照,例如,对整个卷的某个瞬间的逻辑副本,类似于数据库中的innodb存储引擎的MVCC,只不过LVM的快照在文件系统层面,而MVCC在数据库层面,而且仅支持innodb存储引擎.LVM有一个快照预留区域,如果原始卷数据有变化时,LVM保证在任何变更写入之前,会复制受影响块到快照预留区域.简单来说,快照区域内保留了快照点开始时的一致的所有old数据.对于更新很少的数据库,快照也会非常小.对于MySQL而言,为了使用快照备份,需要将数据文件,日志文件都放在一个逻辑卷中,然后对该卷快照备份即可.由于快照备份,只能本地,因此,如果本地的磁盘损坏,则快照也就损坏了.快照备份更偏向于对误操作防范,可以将数据库迅速恢复到快照产生的时间点,然后结合二进制日志可以恢复到指定的时间点.基本原理如下图: MYSQL学习 MYSQL学习逻辑备份 MYSQL学习冷备份和快照备份由于其弊端在生产环境中很少使用,使用更多是MySQL自带的逻辑备份和物理备份工具,这节主要讲逻辑备份,MySQL官方提供了Mysqldump逻辑备份工具,虽然已经足够好,但存在单线程备份慢的问题.在社区提供了更优秀的逻辑备份工具mydumper,它的优势主要体现在多线程备份,备份速度更快. MYSQL学习Mysqldump MYSQL学习备份的基本流程如下: MYSQL学习1.调用FTWRL(flush tables with read lock),全局禁止读写 MYSQL学习整个过程,可以参考我同事的一张图,但他的这张图只考虑innodb表的备份情况,实际上在unlock tables执行完毕之前,非innodb表已经备份完毕,后面的t1,t2和t3实质都是innodb表,而且5.6的mysqldump利用保存点机制,每备份完一个表就将一个表上的MDL锁释放,避免对一张表锁更长的时间. MYSQL学习大家可能有一个疑问,为啥备份innodb表之前,就已经将锁释放掉了,这实际上是利用了innodb引擎的MVCC机制,开启快照读后,就能获取那个时间的一致的数据,无论需要备份多长时间,直到整个事务结束(commit)为止. MYSQL学习 MYSQL学习Mydumper MYSQL学习 MYSQL学习物理备份(Xtrabackup) MYSQL学习 MYSQL学习Xtrabackup的改进 MYSQL学习LOCK TABLES FOR BACKUP MYSQL学习LOCK BINLOG FOR BACKUP MYSQL学习以上就是本文的全部内容,希望对大家的学习有所帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |