通过EBS在Amazon EC2上运行MySQL

问题描述

| 我有一台生产服务器,其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 
我不是系统管理员,我也不想搞砸我现有的数据库。这里有风险吗?我是否应该在这里使用其他设备,还是只使用内置的根设备?     

解决方法

我将/ etc / mysql和/ var / lib / mysql目录移至我的EBS,并在它们之前的位置中创建了符号链接。 这样,我不必修改配置文件,也不必担心找不到文件。 我还移动了/ etc / mysql的原因是,如果我将EBS附加到另一个实例,则配置文件和维护脚本不会丢失。 至于该数据的备份,最好创建另一个实例并创建一个主/主配置,这样您还可以获得故障转移的好处。     ,如果您担心数据持久性: 拍摄/ dev / sda1的快照,创建一个完全独立的实例(t1.micro对此非常有用),根据您对/ dev / sda1拍摄的快照创建一个新卷,然后将该新卷挂载到新的单独实例上?如果您的数据存在于新卷上,则肯定会存储在/ dev / sda1上的EBS中。 话虽如此:许多默认的Linux映像都已设置为在实例终止时自动终止根(/ dev / sda1)卷。意思是:如果您丢失了一个实例,那么如果您没有将其备份到其他地方,那么您还将丢失该卷上的所有数据。保留备份的一种简单方法是仅使用EC2功能每天对卷进行快照。创建一个可以拍摄快照并在新快照完成后删除旧的每日定期快照的脚本非常容易。如果您正在寻找较小的备份大小或增量备份策略,则可以编写更高级的脚本来启动备用可用性区域或区域中的t1.micro,并通过任意机制仅对MySQL数据执行备份,然后关闭t1.micro实例。     ,如果停止实例,它将类似于常规关闭,并且EBS卷应保留所有数据。 我认为,如果终止实例,自快照以来的所有数据都将消失。 但是通常我没有太多理由终止它。无论如何,应该简单地尝试一下 在测试实例上。您可以只写一些文件,看看在不同用例下会发生什么。 这样,您将比仅仅依靠某人的答案要安全得多。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...