Sorun: Bir sürü MySQL veritabanı düzenli olarak yedeklemek istiyorsunuz. mysqldump ile tüm databaseları yedekleyebileceğinizi biliyorsunuz, fakat işlem sonucu ortaya çıkan SQL dosyası hem gigantik boyutlarda olacak; hem de sadece x veritabanındaki y tablosunu en güncel yedeğe döndürmek istediğinizde SQL içinde bir arama kabusu yaşacaksınız. Bu işi yapan programlara para vermek istemiyorsunuz. Bir batch yazsam da işimi çözsem diye düşünüyorsunuz fakat batch bilgileriniz 10 sene öncesinde kalmış.

Çözüm: Über MySQL Yedek Alıcı

Malzemelerimiz:

  • Windows (penguen diline çevirme için burası kullanılabilir)
  • MySQL ve içine biraz veritabanı
  • Favori text editörünüz
  • WinRAR
  • Dropbox

Gördüğünüz gibi Dropbox yine sahnede. Yedeğinizin de yedeğini alan ücretsiz bir sistemi niye kullanmayalım değil mi?

Über MySQL Yedek Alıcı Çalışma Prensibi ve Kullanımı:

Öncelikle dosyanın en üstünde bulunan WinRAR, yedek, dropbox yol bilgileri ve MySQL kullanıcı adı ve şifre bilgilerinizi size uyan bilgilerle değiştirmeyi unutmayın. Yedek yolu yedeklerin kaydedileceği klasördür; Dropbox yolu ise basitçe alınan yedeklerin tekrar kopyalanması için bir klasördür. (Aynı dosyanın farklı 2 yere kopyalanması size uymayabilir, batch’ı düzenlemeyi deneyebilir ya da yorumlarda istediğinizi bana sorabilirsiniz)

Batch’ımız o 32 satırlık boyu ile:

  • MySQL kurulumunuzda “SHOW DATABASES” SQL’ini çalıştırır, sonuçlarında döngüye girer (information_schema DB’i hariç)
  • mysqldump kullanarak ilgili veritabanını dump eder
  • WinRAR ile olabilecek en yüksek şekilde sıkıştırır (Gerçek örnek: 500M => 9M; Dragomanos‘un veritabanı)
  • Sıkışmış dosyayı Dropbox yoluna da kopyalar, varsa üzerine yazar
  • Sonraki DB için aynısını uygular
  • Sonuç olarak size elinizdeki veritabanı adediniz kadar rar dosyası ile batch biter.

Avantajları:

  • MySQL yedek sorununa komple bir çözüm. Sadece batch’ı zamanlanmış görevlerinize günde x kere çalışacak şekilde ekleyin ve unutun.
  • DB başı ayrı dosya oluşturduğu için yönetilmesi kolay, geri yüklenmesi kolay.
  • Oluşturulan dosyalar olabilecek en ufak boyuta sahip; Internet’e yüklenmesinde minimum band genişliği harcanımı. (Dropbox’un dosyaları yüklerken bir önceki versiyonu ile karşılaştırıp “deltasını” yüklediğini de hatırlatalım. Basit tanımla, içinde abcd yazan dosyanızı abed diye değiştirdiğinizde karşıya giden trafik 1 byte olacaktır; 4 değil.)
  • Ve tabii ki isminde Über geçmesi – kim Über bir araç kullanmak istemez?

Über MySQL Yedek Alıcı Kaynak Kodu – Ücretsiz:

@echo off
REM Uber MySQL yedek alici v1.1
REM Hazar Karabay - www.elektriklikedi.com

set winrar="C:\Program Files\WinRAR\"
set yedekyolu=C:\mysql_backup\
set dropboxyolu="C:\My Dropbox\MySQL\"
set user=MYSQLKULLANICINIZ
set pass=SIFRENIZIDEGISTIRIN

echo +-----------------------------+
echo + Uber MySQL yedek alici v1.1 +
echo +-----------------------------+

FOR /F %%G IN ('mysql --batch -u%user% -p%pass% -e ^"SHOW DATABASES^"') DO (
IF NOT %%G==Database (
  IF NOT %%G==information_schema (
  CD %yedekyolu%
  echo Tablo : %%G
  echo Dump ediliyor...
  mysqldump --add-drop-database --add-drop-table -u%user% -p%pass% %%G > %%G.sql
  echo Ufaltiliyor...
  %winrar%WinRAR u -ep -dh -inul -m5 -s -df %%G.rar %%G.sql
  echo Dropboxa Gonderiliyor...
  xcopy /F /Y %%G.rar %dropboxyolu%
  echo -----------------
  echo.
  )
)
)
echo !! Islem Tamam !!
exit

Ek Bilgiler:

S: Verilerim uçtu acilyardım nasıl kurtarırız MySQL’i, yedeğim yok.

C: Bu sayfayı ziyaret etmek için çok geç.

S: Ben önceden ziyaret etmiştim, hazırlıklıyım. Elimde de RAR’lanmış SQL’lerim duruyor paşalar gibi. Şimdi, bunu nasıl geri takacağız DB’e?

C: mysql -u[MySQL Kullanıcı Adınız] -p[O kullanıcının Şifresi] veritabanı adı < veritabaniadi.sql (RAR’dan çıkarmayı unutmazsınız, değil mi?)

S: Batchda yedek kullanıcısı olarak root’u kullanıyordum, sonra batch’ı bir dostuma verdim; şifre de ona gitti bütün DB’mi down etti. İnsan uyarmaz mı kardeşim ne biçim iş yapıyorsunuz siz; nereden bileceğim ben bunu ?!

C: Rootla yedek mı alınır bre kafir! Hiçbir zaman root userla çok elleşilmez. Windows linux farketmez, durum aynıdır.

Kolay gelsin.