3.5 另开一终端速度建立快照,我的那个卷组是/dev/myvg/mydata


lvcreate -L 200M -n mysql-snap -s -p r /dev/myvg/mydata


  3.4 速度释放读锁


mysql> unlock  tables;


  3.5 挂载快照,拷备出来,卸载快照,删除快照


1.mount /dev/myvg/mysql-snap /mnt 
2.mkdir /myback/lvm 
3.cp -pR /mnt/* /myback/lvm  
4.umount /mnt
5.lvremove /dev/myvg/mysql-snap
 


  3.6 这样一次完整备份完成了,下面来测试能否正常使用


1.servivce mysqld stop 
2.rm -R /data/mydata/*  
3.cp -Rp /myback/lvm/* /data/mydata 
4.service mysqld start  ##如果能正常启动代表没有问题,起不来请看数据目录权限
 


  3.7 如果在完整备份后MySQL出现故障,与mysqldump一样,先恢复上次的完整备份,再利用二进制日志恢复,二进制恢复再?嗦一遍,找到完整备份时的二进制位置,把从那时到故障前的日志用mysqlbinlog导出来,然后批处理方式导入到MySQL中。这个同mysqldump中实验一致不重复了。

  用lvm的快照来备份速度是非常快的,而且几乎热备,恢复也很快速,操作也简单,完整恢复后再将相应二进制恢复即可。

  四、基于xtrabackup来完全备份,增量备份,热备份MySQL

  下载地址:http://www.percona.com/software/percona-xtrabackup

  4.1 下载安装xtrabackup,我用的是percona-xtrabackup-2.0.3-470.rhel5.i386.rpm


rpm -ivh percona-xtrabackup-2.0.3-470.rhel5.i386.rpm


  4.2 MySQL基本环境与第一步的一致

  4.3 为备份建立一个只有备份权限的用户


1.mysql> create user 'percona'@'localhost' identified by 'redhat'; 
2.mysql> revoke all privileges,grant option from 'percona'@'localhost' 
3.mysql> grant reload,lock tables,replication client on *.* to 'percona'@'localhost' 
4.mysql> flush privileges;
 


  4.4 完整备份一次MySQL


innobackupex --host=locahost --user=percona --password=redhat /myback/


  数据会完整备份到/myback/中目录名字为当前的日期,extrabackup会备份所有的InnoDB表,MyISAM表只是复制表结构文件、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。除了保存数据外还生成了一些extrabackup需要的数据文件

  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 备份命令用到的配置选项信息;

  4.4 测试恢复MySQL,用extrabackup来完整恢复


1.service mysqld stop 
2.rm -Rf /data/mydata 
3.innobackupex --apply-log /myback/2012-12-02_20-06-12/ 
4.--apply-log 的意义在于把备份时没commit的事务撤销,已经commit的但还在事务日志中的应用到数据库 
5.innobackupex --copy-back /myback/2012-12-02_20-06-12/ 
6.--copy-back数据库恢复,后面跟上备份目录的位置 
7.chown -R mysql:mysql /data/mydata  
8.service mysqld start ##如果能启动代表恢复正常