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.
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.
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.