【问题标题】:Running MySQL on Amazon EC2 with EBS使用 EBS 在 Amazon EC2 上运行 MySQL
【发布时间】:2011-09-02 21:17:06
【问题描述】:

我有一个生产服务器,它的 MYSQL 可能没有备份。有问题的实例有一个 EBS 支持的根设备 (/dev/sda1),它永久存储文件。我不清楚它是否自然地持久地存储了我的 MYSQL 数据和二进制日志文件。

如果它安装在根目录下,它应该这样做吗?我会这么认为。

我是否应该附加并挂载另一个卷,然后将 MYSQL 服务器指向新位置?

我的命令如下所示(加上在创建快照时锁定 MYSQL 表)

    sudo mkdir /vol/etc /vol/lib /vol/log
    sudo mv /etc/mysql     /vol/etc/
    sudo mv /var/lib/mysql /vol/lib/
    sudo mv /var/log/mysql /vol/log/

    sudo mkdir /etc/mysql
    sudo mkdir /var/lib/mysql
    sudo mkdir /var/log/mysql

    echo "/vol/etc/mysql /etc/mysql     none bind" | sudo tee -a /etc/fstab
    sudo mount /etc/mysql

    echo "/vol/lib/mysql /var/lib/mysql none bind" | sudo tee -a /etc/fstab
    sudo mount /var/lib/mysql

    echo "/vol/log/mysql /var/log/mysql none bind" | sudo tee -a /etc/fstab
    sudo mount /var/log/mysql 

我不是系统管理员专家,我不想搞砸我现有的数据库。这里有风险吗?我应该在这里使用额外的设备还是只使用内置的根设备?

【问题讨论】:

    标签: mysql amazon-ec2 amazon-web-services volume amazon-ebs


    【解决方案1】:

    如果您担心数据持久性:

    拍摄 /dev/sda1 的快照,创建一个完全独立的实例(t1.micro 非常适合此操作),根据您拍摄的 /dev/sda1 快照创建一个新卷,然后将该新卷挂载到新的单独实例?如果您的数据存在于新卷上,那么它肯定会存储在 /dev/sda1 上的 EBS 中。

    话虽如此:很多默认 Linux 映像都设置为在实例终止时自动终止根 (/dev/sda1) 卷。含义:如果您丢失了一个实例,如果您没有在其他地方备份它,那么您也将丢失该卷上的所有数据。保留备份的一种简单方法是每天使用 EC2 工具拍摄卷的快照。创建一个拍摄快照并在新快照完成后删除旧的每日定期快照的脚本非常容易。如果您正在寻找更小的备份大小或增量备份策略,您可以编写更高级的脚本,在备用可用区或区域中启动 t1.micro,通过您喜欢的任何机制仅对 MySQL 数据执行备份,然后关闭 t1.micro 实例。

    【讨论】:

    • 很好的答案。作为奖励,您每次都在测试您的灾难恢复程序。
    • @ceejayoz:谢谢!我已经对这个过程进行了几次艰苦的实战测试......
    • 嗨,鲍勃,很好的答案。我想我的困惑来源是我确实尝试了您在此处提出的建议(拍摄 sda1 的快照)并将其安装在新实例上。我的问题是我下载到原始实例上的一些软件(即 MYSQL、APACHE 等)没有随卷一起传输。我不明白,因为卷安装在 /
    • 另外,我使用的 Ubuntu Lucid AMI 默认在根目录下附带一个附加的 EBS 设备(正如我之前所说),我应该将它分离并在根目录手动附加快照卷吗?
    • @Brendan:我通常不理会我的 EBS 根卷,然后遵循类似于下面 KayamJim 所写的过程 - 基本上在我的数据库表空间通常所在的位置安装一个额外的 EBS 卷,这样当我采取快照我只是获取数据库表空间而不是整个根卷(可以很容易地从 AMI 重新创建。)
    【解决方案2】:

    如果您停止实例,它将类似于定期关闭,并且 EBS 卷应保留所有数据。 如果您终止实例,我认为自快照以来的所有数据都将消失。

    但通常我认为没有太多理由终止它。无论如何,尝试一下应该很简单 在测试实例上。你可以只写一些文件,看看在不同的用例下会发生什么。

    这样你也会觉得比仅仅依靠别人的回答更安全。

    【讨论】:

    • 请注意,您可以为实例打开终止保护以避免“哎呀!” :-)
    【解决方案3】:

    我将 /etc/mysql 和 /var/lib/mysql 目录移动到我的 EBS 并在它们之前的位置创建了符号链接。

    这样我就不必修改配置文件或担心找不到文件。

    我也移动 /etc/mysql 的原因是,如果我将 EBS 附加到另一个实例,配置文件和维护脚本不会丢失。

    对于该数据的备份,最好创建另一个实例并创建主/主配置,这样您也可以获得故障转移的好处。

    【讨论】:

    • 嗨皮划艇。主/主配置到底是什么意思?你有什么推荐的资源让我可以开始了解它?
    • 使用标准的主/从复制,从属可以落后并且不是最新的。在 Master 失败之前,这通常不是问题。此时,您必须确定从属服务器在复制过程中的位置,然后在将其作为主服务器联机之前使其处于最新状态。使用主/主配置,两台服务器总是相等的,因此可以提供完整的备份和故障转移解决方案。这是一个设置指南,让您有更好的想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 2014-03-13
    • 1970-01-01
    相关资源
    最近更新 更多