在 EBS(Elastic Block Store) 上运行MySQL的好处
1. 即使EC2实例出现故障或者崩溃,数据库也不会丢失
2. Amazon的EBS数据保存在多个服务器上,这比实例中的数据空间安全很多
3. 实测数据访问的性能比实例中的存储空间或本地硬盘更快,有利于提高数据库性能
4. 提供更大的存储空间。EBS卷最大1TB,但是可以通过RAID绑定多个卷,例如40个1TB的EBS,或者把数据库或数据表分布在不同的EBS卷上。
5. 扩展能力强。EBS上的数据库可以很容易挂接到另一个配置更高的EC2实例上,而不用去复制所有的数据。
6. 由于EBS空间提供数据快照的功能,备份数据库很容易,几秒就能复制一份数据库,然后可以挂接到另一个EC2实例上运行。
在EC2实例上设置EBS卷,用作MySQL的空间
1. 首先运行你的EC2实例,安装好MySQL
2. 在Amazon控制台创建一个新的10 GB EBS 卷
3. 在Amazon控制台将卷挂接到你的EC2实例上,例如 /dev/sdf
4. 通过SSH连接到你的EC2实例
5. 在EBS卷上创建 XFS 文件系统,然后挂接到系统的 /vol 下
grep -q xfs /proc/filesystems || sudo modprobe xfs
sudo mkfs.xfs /dev/sdf
echo "/dev/sdf /vol xfs noatime 0 0" | sudo tee -a /etc/fstab
sudo mkdir -m 000 /vol
sudo mount /vol
设置MySQL的数据文件和二进制日志文件保存在 EBS卷上
1. 停止MySQL
sudo /etc/init.d/mysqld stop
2. 将现有数据库文件移到EBS卷上,然后将MySQL指向EBS卷。
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
3. 重启MySQL
/etc/init.d/mysqld start
现在所有MySQL的数据都在EBS上了!
然后可以利用EBS的快照功能(Snapshots),给数据库做个快照,并且在另一个EC2实例上用快照恢复数据库,从而迅速在另外一台主机上得到相同的一个数据库,用于调试、排错等等。