从使用 ec2-consistent-snapshot 拍摄的快照恢复 Amazon EBS RAID0 阵列

Jim*_*ein 8 mysql raid amazon-ec2 amazon-ebs

我在 Amazon EC2 上配置了一个新的 MySQL 服务器,并决定将我的数据存储在 EBS RAID0 阵列上。到目前为止一切顺利,我已经测试了使用 ec2-consistent-snapshot 拍摄这些设备的快照,很棒。

现在,您如何根据这些快照在新实例上快速重建阵列?

当您使用 ec2-consistent-snapshot 创建多个卷的快照时,您无法知道 RAID 中的每个设备使用了哪个卷。我可能完全错了,但是由于您要跨卷对数据进行条带化,因此您必须将每个新卷放在 RAID 上与创建快照的卷相同的位置是合理的。

一个例子:

  • RAID0 配置中的 3x200gb 卷。
  • vol-1 是 RAID 中的 /dev/sdh 设备 0
  • vol-2 是 RAID 中的 /dev/sdh1 设备 1
  • vol-3 是 RAID 中的 /dev/sdh2 设备 2

您创建一个EC2的快照:ec2-consistent-snapshot <options> vol-1 vol-2 vol-3

您现在有 3 个快照,追溯它们是哪个设备的唯一方法是查看源卷 id,然后查看源卷 id 安装在哪个设备上,然后检查 RAID 的详细信息源卷的实例上的配置。

这显然是令人难以置信的手动......而且速度不快(如果另一个实例失败,这显然很难快速启动一个新的mysql实例。更不用说,你必须在RAID上记录设备位置快照,因为如果源卷实例崩溃,您将无法进入 RAID 配置)。

所以,总结一下:

  • 我是否遗漏了 ec2-consistent-snapshot 和软件 RAID0 阵列的工作方式?
  • 如果没有,是否有任何已知的解决方案/最佳实践来解决不知道快照属于 RAID 阵列中哪个设备/位置的问题?

我希望这很清楚,感谢您的帮助!

Rya*_*des 5

由于您要跨卷对数据进行条带化,因此您必须将每个新卷放在 RAID 上与创建快照的卷相同的位置是合理的。

我测试了你的前提,虽然看起来很合乎逻辑,但观察结果并非如此。

让我详细说明一下:
我和您有完全相同的要求。但是,我使用的 RAID0 只有 2 个卷。

我正在使用 Ubuntu 10 并且有 2 个 EBS 设备形成一个使用 XFS 格式化的 RAID0 设备。

使用以下命令创建 raid0 设备:
sudo mdadm --create /dev/md0 --level 0 --metadata=1.1 --raid-devices 2 /dev/sdg /dev/sdh

我已经安装了 MYSQL 和一堆其他软件,这些软件被配置为使用 /dev/md0 来存储他们的数据文件。

使用相同的卷:完成后,我卸载所有内容,停止 Raid 并像这样重新组装它: sudo mdadm --assemble /dev/md0 /dev/sdh /dev/sdg 问题是,无论/dev/sdg /dev/sghRAID的顺序如何,RAID 都会正确地重组自身。

使用快照:发布这个,我用来ec2-consistent-snapshot一起创建 2 个 EBS 磁盘的快照。然后我从这个磁盘创建卷,将它附加到一个新实例(已经为软件配置),重新组装 RAID(我也尝试过交换 EBS 卷的顺序),安装它,我准备好了去。

听起来很奇怪,但确实有效。