我使用 ec2 实例附带的临时存储将我的数据库保存在 /mnt。要使用 ec2 api 工具进行备份,我们需要一个卷 ID,但在 aws 控制台中,我只能找到 8gb 根存储的卷 ID。
如果要备份临时存储,我该怎么办?是否有备份实例存储的替代方法?
我使用 ec2 实例附带的临时存储将我的数据库保存在 /mnt。要使用 ec2 api 工具进行备份,我们需要一个卷 ID,但在 aws 控制台中,我只能找到 8gb 根存储的卷 ID。
如果要备份临时存储,我该怎么办?是否有备份实例存储的替代方法?
首先,您永远不应该在Amazon EC2中的临时存储上存储任何具有持久价值的东西,除非您确切知道自己在做什么并准备始终进行时间点备份等 - 您的问题似乎表明您可能误解了临时存储的概念、Amazon EC2 实例存储和Amazon EBS之间的各自区别以及对数据安全和备份要求的重大影响:
临时存储将在停止/启动周期中丢失,并且通常会消失,因此您绝对不想将任何具有持久价值的东西放在那里,即只将临时数据放在那里您可以承受丢失或轻松重建,例如交换文件或在计算过程中使用的严格的临时数据。当然,例如,您可能会在那里存储大量索引,但必须准备好在出于任何原因(例如重启、硬件故障等)清除存储后重建这些索引。
这些解释应该阐明为什么您无法使用仅适用于 EBS 卷(即 EBS 快照)的机制来备份临时存储卷。因此,您可以通过您选择的常规操作系统级备份工具来备份前者,例如Duplicity是一种流行的选择,可以选择性地促进Amazon S3,正如我对最容易使用实时 linux 服务器的备份软件的回答中所述。
临时存储或实例存储,就像 /tmp 文件夹一样,其内容在重新启动后会消失。当然,临时驱动器内容不会在软重启时被破坏,但它们应该被视为已被破坏,因为您无法实际控制或预测实例何时决定死亡。
这已经被指出了。
我想指出的是,如果您适当地创建和配置 AMI,您仍然可以使用临时存储来大幅提高(读取)吞吐量,只要您还保留 EBS 驱动器用于实际存储。
我目前使用的是带有 bcache 的 Linux (Ubuntu Tahr) 实例。这主要是因为 bcache 内核支持相对较新(IIRC,第一个使用 bcache 的版本是 3.10),而且您肯定想要尽可能新的内核。此外,Tahr 是 Ubuntu 的下一个 LTS 版本,当我的项目即将启动时,它是最终版本;)
Bcache,在其默认配置中,允许您从临时存储的读取速度中受益,同时为您提供 EBS 的持久性:它需要一个快速缓存设备(临时 SSD)并使用它来加速一个慢速设备(EBS),通过缓存设备写入(即同时写入临时缓存和 EBS)。
这意味着,如果实例崩溃或以其他方式停止,您仍然可以直接挂载 EBS 卷而无需缓存,并访问您的所有数据,就像仅使用 EBS 卷一样。您还可以重新配置现在已擦除的临时设备并将它们重新配置为 EBS 的缓存,以重新享受非常快速的读取和查找。
我的特定设置是两个 EBS 设备,使用 mdadm 以条带模式突袭 + 两个临时 SSD 设备也以相同的方式突袭。然后我用 bcache 配置它们,使用临时数组作为缓存,使用 EBS 数组作为“备份”设备。EBS 驱动器可以是任意大小,并且您始终可以扩展它们(使用 EC2 有点棘手,因为您必须创建当前 EBS 卷的快照,然后基于该快照创建新的更大的卷 - 您无法调整大小现有的 EBS 卷)。
当然,您必须创建一个在启动时在实例内部运行的脚本,以配置临时存储并将其作为缓存设备附加到您的 EBS 支持的备份设备上。我鼓励阅读并尝试使用mdadm和bcache。
作为记录,使用 Cassandra 压力工具进行测试,与仅对临时驱动器进行条带化相比,使用临时驱动器 bcached 的 EBS 卷获得更好的读取性能。这是因为bcache中使用的算法非常聪明。
使用临时驱动器作为缓存还可以减少网络流量并且具有成本效益,因为它可以减少 EBS 上的 I/O,从而减少您的每月账单。
另请注意 bcache 提供的不同类型的缓存:
如果您能够配置软件 RAID 镜像,则可以将 EBS 支持的磁盘附加到实例,配置镜像,然后等待复制完成。在我已经创建实例之后(并且我不想关闭并重新启动),我已经成功地使用这种方法将“临时”数据移动到 EBS 中。
获得 EBS 上的数据后,请使用 EBS 图像进行备份。
当您在不同的相同实例上运行数据的多个副本时,此方法特别有效,但您只需要将其中一个持久化到 EBS(在我的情况下,使用 Couchbase 服务器,CB 数据位于临时驱动器上,但我有一个镜像到 EBS 的实例,因此我集群上的所有数据最终都在 EBS 中)。
任何文件级备份解决方案(不基于 EBS 快照)都可以备份您的临时存储。也就是说,您应该考虑何时使用临时存储,并有充分的理由将其用于持久数据。对于某些应用程序,例如 Cassandra,这是推荐的配置。在这种情况下,您的备份解决方案将主要将数据从临时存储转储到 EBS 卷,该卷将被快照或直接转储到 S3。在某些情况下,您可以定义复制并确保临时设备中的所有数据也复制到 EBS 卷。