MySQL常见备份方案有以下三种:
mysqldump + binlog
lvm + binlog
xtrabackup
本例为方便演示,数据库里面数据为空。下面开始动手
1、利用mysqldump完全备份mysql,配合二进制日志备份实现增量备份
mysqldump 选项请参考http://wangweiak47.blog.51cto.com/2337362/1589304
1.1提供模拟数据
1.2全量备份:
1.3 模拟数据发生改变
1.4 增量备份
1.5 数据损坏
1.6 恢复
上面已经提供了步骤,直接复制过来使用。
1.7小结,mysqldump适合于数据量较小的场合,它的优点是有众多选项,使用起来非常灵活,缺点是数据量一旦过大,非常耗时耗力。
2、使用lvm进行全备。
lvm快照卷原理参考
http://baike.baidu.com/link?url=iEpO_zm_AbHbk-ijQa8jNcFRoPPG2NdTYb_cRoQ7mjQb_ag9g-fL7yHPXV7Atp2j3J0L5xYynM9KKLIwycW_S_
2.1 数据接着上次继续开始。
2.2 全备。
需保证数据库存放在逻辑卷组上面,才行。
2.2.1首先锁表和滚动日志
2.2.2创建快照
2.2.3 解锁表
2.2.4 复制快照卷数据到备份目录下
2.2.5 删除快照
2.3增量备份,只需和定时复制binlog到备份目录下面即可
2.4恢复,只需要直接拷贝备份目录下的文件即可
2.5小结:
lvm实现物理备份速度相对mysqldump来比较快,实现也比较简单,是不错的选择。
缺点:数据目录必须存放在lvm卷组上面
3、使用xtrabackup实现热备。
请自行到官网下载并安装对应的rpm包。
使用方法参考:详细参考:
http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html
3.1创建一个具有最小权限的用户
3.2完全热备。
使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命令的目录中。
(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;
(5)backup-my.cnf —— 备份命令用到的配置选项信息;
3.3提供改变数据。
3.4增量备份
3.5 模拟数据损坏
3.6增量备份恢复
#注意,多实例的话,仍然需要备份配置文件,启动的时候需要binlog目录。
3.6启动数据库查看。
小结:
xtrabacup具有如下特点。
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;
因此建议学会熟练使用xtrabackup进行备份和还原。