使用LVM快照备份生活在SAN上的MySQL。 这是可行的吗?

所以我正在研究LVM快照,这似乎是备份mysql的一种可行的方法,至less它是一致的。

我的问题是,我有mysql服务器的数据目录在一个SAN上,我想利用arrays快照function的MySQL LUN。

我在想,我可以添加第二个LUN,在其上创build一个PV,将它添加到服务器上的VG,创build一个LV,它将成为MySQL LV的一个快照,然后安装它。

在这一点上,我可以将数据复制到任何我需要复制的地方。

这部分是好的,但需要时间来做,并根据数据库的大小,因为我不得不实际复制数据。

一旦创build了快照,我可以拍摄mysql LUN的arrays快照,然后释放LVM快照并将其删除?

有没有人试过这个?

我的理解是,在LVM快照之后所做的更改存储在快照LV中。 它是否正确?

谢谢!

我根本没有发现问题。 只要确保在lv拥有足够的可用空间就可以保存快照,这样就不会在其他地方复制文件(否则快照将被删除)。

通过快照进行MySQL备份的典型过程是首先使用读取locking进行刷新,然后启动快照,然后释放读取locking。 此时,您可以将/var/lib/mysql目录复制到您想要的任何位置,然后按照您的要求进行操作。

Percona的工作人员在这里做了一个很好的文章, http://www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/

Percona指南对LVM MySQL备份

1)连接到MySQL并运行FLUSH TABLES WITH READ LOCK

2)保持连接打开运行: lvcreate -L16G -s -n dbbackup /dev/Main/Data – 这将为逻辑卷Main / Data创build名为dbbackup的快照。 在备份过程中你应该指定足够的撤消空间来保存修改 – 在这种情况下,我已经指定了16GB。 如果您的撤消大小不足,则快照将失效,并且备份将被中止。

有时候你可能会碰到这一步的错误,我最不常见到的是:snapshot:你的内核中没有检测到需要的device-mapper目标 – 这意味着snapshot模块默认没有加载到你的内核中你需要加载它,这是通过运行modprobe dm-snapshot

3)现在你已经创build了逻辑卷,可以解锁表,但在此之前,你应该logging二进制日志的位置,这是通过运行SHOW MASTER STATUS – 这是二进制日志的位置,你需要指出你的MySQL从属创build快照。

4)创build快照,现在你想让MySQL服务器继续,这是通过运行UNLOCK TABLES或简单地closures连接来完成的。

5)挂载备份文件系统: mount /dev/Main/dbbackup /mnt/backup

6)将数据复制到备份。 通常,您可以在进行备份时跳过慢查询日志和错误日志。 你也可以跳过大部分的二进制日志 – 但是如果你的一些奴隶远远落后,你可能需要保留一些最后的二进制日志以防万一,或者你可以假设从备份中恢复,你将需要恢复奴隶作为以及在备份过程中跳过二进制日志。

7)卸载文件系统umount /mnt/backup

8)删除快照: lvremove -f /dev/Main/dbbackup

如果你想创build这样的快照的奴隶,你需要执行几个简单的步骤

9)将数据库提取/复制到从数据库目录。

10)启动MySQL服务器。 等待它执行恢复。

11)使用CHANGE MASTER TO命令将slave指向保存的二进制日志位置:master master_host="master", master_user="user", master_password="password", master_log_file="host-bin.000335", master_log_pos=401934686;

12)运行SLAVE START以重新启动复制。

这不是LVM快照的工作方式,最好的办法是使用mysqldump来完成MySQL的备份。

*更新*

计划B:

configuration复制和从奴隶使用mysqldump ,这样,它不会影响您的主MySQL服务器。

我也看了一下

使用快照进行备份