SQL Server Logo

Windows Server 2012 üzerinde MySQL Tablolarını Otomatik Yedekleme

Ben sisteme en güncek programları kurarak işe başladım. MySQL server’ı kurduğumda veri dosyalarını “C:\ProgramData\MySQL\MySQL Server 5.1\data\” adlı klasöre attığını fark ettim. Burada her veritabanı için ayrı birer klasör oluşturulmuştu. Yani tek yapmam gereken bu klasörleri bir şekilde yedeklemek. Eğer her klasörü ayrı bir zip dosyasına atıp dosya adı olarak da günün tarihini verirsem süper bir yedekleme sistemi kurarım dedim. MsSQL ve çeşitli access veritabanları için de aynı tarz yedekleme işlemleri yapmışlığım vardı nasıl olsa.

MySQL Backup Folder

MySQL Backup Folder

Uzun uğraşlar ve aramalar sonucunda istediğim tarzda yedekleme yapmanın yolunu buldum. Bir adet 7-zip, bir adet bat dosyası ve Windows’un zamanlanmış görevlerinde bir görev daha. Ama en çok uğraştıran kısmı bat kısmı yani komutları oldu. Hangi satırın ne işe yaradığını yorumlarda yazmış olsalar da çalışır hale getirmek zaman alıyor doğrusu. Daha fazla vakit kaybetmeden hemen kodları vermek istiyorum:

echo off
:: tarihi yyyy-mm-dd-hh şekline yazdırmak için komut
set year=%DATE:~6,4%
set day=%DATE:~0,2%
set mnt=%DATE:~3,2%
set hrs=%TIME:~0,2%
IF %day% LSS 10 SET day=0%day:~1,1%
IF %mnt% LSS 10 SET mnt=0%mnt:~1,1%
IF %hrs% LSS 10 SET hrs=0%hrs:~1,1%
set backuptime=%year%-%mnt%-%day%-%hrs%

:: Yedeklemenin yapılacağı klasörün adresi
set backupfldr=d:\Backup\MySQL\
:: Vertibanalarının bulunduğu klasörün adresi
set datafldr=C:\ProgramData\MySQL\MySQL Server 5.1\data\
:: 7-zip sıkıştırıcı programının adresi
set zipper="d:\7za.exe"
:: AYARLAR SON

:: KLASÖRE GİT VE YEDEKLE
pushd %datafldr%
FOR /D %%F IN (*) DO (
IF NOT [%%F]==[mysql] (
%zipper% a -tzip "%backupfldr%%%F-%backuptime%.zip" "%datafldr%%%F"
)
)
:: SON
echo "done"
popd