[转]利用LVM的快照功能做MySQL的热备份

18 篇文章 1 订阅

利用LVM的快照功能做MySQL的热备份

MySQL的通常备份的方法有以下几种:

1、mysqldump命令

2、数据库文件拷贝命令

3、主从数据库备份

第一和第二种方法都会中断运行MySQL一段时间,尤其是在数据量比较大的时候,中断的时间会比较长,这样同时也会造成网站的中断。第三种方法虽然不会中断数据库,但主从经常会出现数据不一致的情况,而且要同时维护一台slave数据库,成本比较高。

现在给大家介绍一种利用LVM的快照功能做MySQL数据库备份的方法。这种方法最大的好处是完全不影响MySQL的运行,网站无需中断。

首先我们需要将MySQL的数据库目录放到LVM中。这个可以通过更改my.cnf的datadir参数来实现,也可以不改参数,用 ln -s 创建符号链接的方法将某一个数据库指向LVM中。

如果没有操作过LVM,可以参考这篇教程:Debian下LVM的安装和使用

lvcreate -L10G -n mysql-data vg01

mkfs.ext3 /dev/vg01/mysql-data

mkdir /home/mysqldata

mount /dev/vg01/mysql-data /home/mysqldata

chown -R mysql:mysql /home/mysqldata

ln -s /home/mysqldata/YOUR-DB /var/lib/mysql/YOUR-DB

接下来我们开始用LVM快照做备份:

1、首先给/dev/vg01/mysql-data创建一个快照卷,通常不需要为快照卷分配和父卷一样的空间大小,一般分配父卷的10%即可。

lvcreate -s -L1G -n mysql-data-snapshot /dev/vg01/mysql-data

2、用dd命令拷贝快照到备份文件

dd if=/dev/vg01/mysql-data-snapshot of=/backup/mysql-data-backup.img

3、将备份文件上传到备份服务器上

建议将备份好的文件上传到远程的服务器上,以防止服务器发生意外故障而造成本地备份文件丢失。

4、快照卷现在已经不需要了,删除掉

lvremove /dev/vg01/mysql-data-snapshot

这样我们就创建好了备份。备份周期可以一天一次,写好备份脚本,每天凌晨3-5点左右进行自动备份(该时间段一般访问量最小)。

============================================

当MySQL出现问题或者其它情况我们需要恢复备份的时候,我们可以将备份好的文件恢复到LVM中去。

1、首先创建一个新LV卷

lvcreate -L10G -n mysql-data-new vg01

2、如果本地没有保存备份文件,则从备份服务器上下载最新的备份文件

3、利用/dev/loop设备挂载备份文件

losetup /dev/loop0 mysql-data-backup.img

4、用dd命令拷贝备份文件到新建的LV卷里

dd if=/dev/loop0 of=/dev/vg01/mysql-data-new

5、关闭mysql,必要的时候同时也要关闭webserver

/etc/init.d/mysql stop

6、重新mount

umount /home/mysqldata
mount /dev/vg01/mysql-data-new /home/mysqldata

7、检查MySQL是否正常,如果一切正常,删除原来的硬盘文件,卸载loop设备

losetup -d /dev/loop0
lvremove /dev/vg01/mysql-data

备份完成!

原文网址:http://www.asklinux.com/mysql/22

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值