使用EBS在Amazon EC2上运行MySQL

时间:2011-05-26 19:18:37

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

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

如果它挂在root上,它应该这样做吗?我想是的。

我应该改为附加并安装另一个卷,然后将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 

我不是系统管理员专家,我不想搞砸我现有的数据库。这里有风险吗?我是否应该在这里使用其他设备,或者只是坚持使用内置的root设备?

3 个答案:

答案 0 :(得分:7)

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

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

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

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

答案 1 :(得分:3)

如果您担心数据持久性:

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

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

答案 2 :(得分:2)

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

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

通过这种方式,您可以感觉比依靠别人的答案更安全。