Amazon EBS üzerinde MySQL Çalıştırmak

Amazon EC2 instance’larında, instance’dan bağımsız olarak çalışan EBS (Elastic Block Store) alanları, MySQL gibi hassas data’lara sahip yazılımların verilerini saklamak için tercih ediliyor. Burada MySQL için EBS alanlarının kullanımının faydaları mevcut.

Öncelikle EC2 Dashboard menüsünden ‘ELASTIC BLOCK STORE‘ başlığı altındaki ‘Volumes‘ sayfasına giriyoruz. ‘Create Volume‘ butonuna basarak yeni bir EBS volume oluşturuyoruz. Açılan popup’dan volume boyutunu ve zone seçiyoruz. Bu volume’ü hangi instance’ınızda kullanacaksanız onunla aynı zone’da bir volume oluşturmalısınız.

create-volume

Volume oluşturduktan sonra state kısmında ‘available’ göreceksiniz. Şimdi bu volume’ü instance’a bağlayalım. Üzerine tıklayıp ‘Actions‘ menüsünden ‘Attach Volume‘ seçeneğini seçiyoruz. ‘Instances’ kısmından bağlanacak instance’ı seçiyoruz. ‘Device‘ kısmını da ‘/dev/sdh‘ yazıyoruz.

attach-volume

Kısa bir süre bekledikten sonra ‘Attachment Information‘ sütununda ‘i-instanceno:/dev/sdh (attached)‘ bilgisini göreceksiniz.

Oluşturduğumuz EBS volume instance’a başarıyla bağlandıktan sonra ssh ile instance’a giriş yapalım. Öncelikle aşağıdaki komutu çalıştıralım:

sudo fdisk -l

Eğer volume başarıyla bağlanmışsa disk’ler arasında aşağıdaki gibi volume’ü görmeniz lazım (Hatırlatma: xvdh ismi farklılık gösterebilir, eğer sizde farklıysa yazının diğer kısımlarında xvdh yerine sizdeki ismi kullanın)

Disk /dev/xvdh: 10.7 GB, 10737418240 bytes

Şimdi sırasıyla şunları çalıştıralım:

sudo apt-get install -y xfsprogs
grep -q xfs /proc/filesystems || sudo modprobe xfs
sudo mkfs.xfs /dev/xvdh
echo "/dev/xvdh /vol xfs noatime 0 0" | sudo tee -a /etc/fstab
sudo mkdir -m 000 /vol
sudo mount /vol

Tamamdır, /vol altına EBS alanını mount etmiş olduk. Şimdi MySQL’i mount ettiğimiz EBS alanına taşıyalım (Uyarı: bundan sonraki aşamalarda, eğer yanlış bir işlem yaparsanız MySQL’i patlatabilirsiniz, aman dikkat, sorumluluk sizde :))

Öncelikle MySQL’i durduralım:

sudo service msyql stop

Ardından aşağıdaki komutları çalıştıralım:

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

Eğer bir sıkıntı çıkmadıysa MySQL’i tekrar başlatabiliriz.

sudo service msyql start

İşte bu kadar! Instance dosya sistemindeki alanları df komutu ile görebilirsiniz.

df -h

EBS üzerinde MySQL çalıştırmak konusuyla ilgili daha fazla bilgiyi burada bulabilirsiniz.