Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)

简介:

Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)

www.rsyslog.org

mysql LVM快照备份特点:

1、在大多数情况下,这种方式几乎算得上是热备。它无需关闭服务,只需要设置只读或者类似这样的限制。

2、支持所有基于本地磁盘的存储引擎,比如MYISAM、InnoDB和BDB,还支持Solid、PrimeXT和Faction。

3、备份速度最快,因为你只需要拷贝相关的二进制数据文件即可。

4、由于只是简单的拷贝文件,因此对服务器开销非常低。

5、保存方式多种多样,你可以备份到磁带上、FTP服务器上、NFS服务器上或者其他什么网络服务器,以及使用各种网络备份软件来备份。

做到这些很简单,说到底就是拷贝文件而已。

6、恢复速度很快。恢复所需要的时间等于你把数据拷贝回来的时间。你可以想出更多的方法让这个时间变得更短。

7、无需使用昂贵的商业软件。

前期准备工作

1、创建LVM分区

更多LVM创建方法请参考 Linux LVM逻辑卷配置过程详解http://dreamfire.blog.51cto.com/418026/1084729 


  1. # lvcreate  -L 3G mysqlvg1 -n mysqllv \\创建大小为3G的逻辑卷mysqllv 
  2.  
  3. # mkfs.ext4 /dev/mysqlvg1/mysqllv  \\格式化逻辑卷 

2、停止mysql服务


  1. # /etc/rc.d/init.d/mysqld stop 

3、挂在逻辑卷到临时目录/tmp下


  1. # mount /dev/mysqlvg1/mysqllv  /tmp/  \\挂载逻辑卷到临时目录 

4、使用tar命令迁移原来数据库目录文件到临时目录/tmp下


  1. # cd /var/lib/mysql/ 
  2.  
  3. # tar cf - . | tar xf - -C /tmp/  \\对数据进行分解压缩到/tmp下,也就是放在逻辑卷挂载的目录中 

5、重新挂在逻辑卷到数据库目录下,并在/etc/fstab中添加开启自动挂载


  1. # umount /tmp/ 卸载逻辑卷 
  2.  
  3. # rm -rf /var/lib/mysql/* //删除数据库目录下的所有信息,一定要确认上一步操作OK 
  4.  
  5. # mount /dev/mysqlvg1/mysqllv /var/lib/mysql/ //将逻辑卷重新挂载到数据库mysql目录下 

并在/etc/fstab中添加开启自动挂载


  1. # blkid /dev/mysqlvg1/mysqllv | awk '{print $2}' \\取出逻辑卷mysqllv的UUID值  
  2.  
  3. # cat >>/etc/fstab <<endf  \\在/etc/fstab下追加逻辑卷挂载信息 
  4. > UUID=29502f33-fde2-4c21-b6c3-9fe1b74c0f0d /var/lib/mysql ext4 defaults 0 0 
  5. > endf 

6、关闭selinux


  1. # setinforce 0  \\设置为premission模式  

7、启动mysql服务


  1. # /etc/rc.d/init.d/mysqld start 

mysql数据库LVM快照备份

1、锁表


  1. mysql> flush tables with read lock; \\防止创建快照过程中有数据写入 

2、查看position信号


  1. mysql> show master status\G; \\查看当前的position信号,方便同步到slave的时候使用 

3、创建快照


  1. # lvcreate -n mysql-snap -L 100M -s /dev/mysqlvg1/mysqllv \\将逻辑卷中的数据创建为大小为100M的快照,这个速度非常快。 

4、解锁


  1. mysql> unlock tables;\\解锁 

5、挂载创建快照


  1. # mount /dev/mysqlvg1/mysql-snap  /mnt/ \\挂载快照,为备份做准备 

6、读取快照进行备份(备份需要备份的即可)


  1. # tar cf mysql-01.tar.gz db1 db_2  \\备份快照信息到存储设备里面 

7、卸载挂载的快照,然后删除快照


  1. # umount /mnt/ 
  2. # lvremove -f /dev/mysqlvg1/mysql-snap \\删除快照,节省空间  

到此,整个备份过程就算结束了。如果你想要将内容同步到slave机上的话,那么还需要多加几个步骤。

1、把备份内容拷贝到slave的数据文件目录下。

2、重启MySQL服务器,等待恢复完成。

3、使用CHANGE MASTER TO 命令告诉slave新的二进制日志位置,并从那里开始同步,(就是我们刚刚记录下来的那个)例如:


  1. mysql> CHANGE master TO master_host=”192.168.100.109”,master_user=”slave”,master_password=”123.com”, master_log_file=”host-bin.000006″,master_log_pos=198

 

 本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1172078,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: