Mysql vertabanı (sql) otomatik yedek alsın (hazır betik) [databaseler günlük yedeklenir] 1

Mysql veritabanı uygulamasını kullanan yöneticiler ve site sahipleri için çok önemli bir durum vardır. Buda vertabanlarının yedeklenmesi, çünkü sistemin bütün yükünü üzerinde tutan, verileri saklayan, can damarlarından biridir hatda en önemlisidir. Mysql üzerinde kaybedeceğiniz veriler, geri dönüşü olmayan bir duruma sokabilir sizi. Bu sebeple bu konumuzda hazırladığım hazır betik ile, hergün yada belirleyeceğiniz saatlerde otomatik mysql yedeği aldıracağız. Böylece oluşacak sorunlarda geriye dönük yedeklerle çalışma yada sistemi kurtarma çalışmaları yapabileceksiniz.

Hazır betiğin yetenekleri:

  • Uygulama centos sunucularda test edildi.
  • Sistemde bulunan bütün databaseleri ayrı ayrı sql formatında yedek alır.
  • Günlük yedek alınan sql dosyalarını zip şeklinde de oluşturarak ayrı bir yerde kaydeder.
  • Hergün alınan yedekleri tarih klasörlerinde saklar, ileride sorun olursa en sağlam veritabanına ulaşabilirsiniz.
  • Yedeklenen dosyaları otomatik farklı bir sunucuya gönderebilirsiniz (rsync). Bu ayarı betik içerisinden aktif edebilirsiniz.
  • Hergünün yedekleri ayrı ayrı klasörlenir.
  • Bir kere croncob a görev ekleyerek unutuyorsunuz, gerisini hergün kendisi hallediyor.
  • Sunucunuzda sshpass uygulamasının kurulu olması gereklidir.

Yardımcı olabileceğini düşündüğüm alınan mysql yedeklerinin tekrar geri yüklenmesi, yedek alınması konusunuda öneriyorum sizlere…

Örnek yedeklenen alan ve klasörler:

Mysql-yedekleme-hazir-betik-sonuclari-1024x435 Mysql vertabanı (sql) otomatik yedek alsın (hazır betik) [databaseler günlük yedeklenir] Bash/Shell programlama Centos Cron Job MariaDB MYSQL  Sql yedekleme Sql rsync RSYNC mysql zip yedekleme Mysql yedekleme Mysql yedek Mysql sql Mysql rsync Crontab cronjob

Mysql-yedekleme-hazir-betik-sonuclari-sql-yedekler-klasoru Mysql vertabanı (sql) otomatik yedek alsın (hazır betik) [databaseler günlük yedeklenir] Bash/Shell programlama Centos Cron Job MariaDB MYSQL  Sql yedekleme Sql rsync RSYNC mysql zip yedekleme Mysql yedekleme Mysql yedek Mysql sql Mysql rsync Crontab cronjob

Betiğimizi hazırlayalım:

Aşağıdaki komutu ssh panelinden çalıştırın.

Açılan alana aşağıdaki betiği yapıştırın [kopyalayın ve mausun sağ tuşu ile ekrana tıklayın] (Öncesinde bir düzenleme programına yapıştırın ve gerekli alanları kendinize göre düzenleyin)

Duzenleyeceginiz alanlar:

  1. mysql_kullanici_adi=”MYSQL_KULLANICI_ADI
  2. mysqlsifreniz=”MYSQL_KULLANICI_SIFRESI
  3. yedek_sunucu_ip=”SUNUCU_IP” # SUNUCU IP SI YADA BOS BIRAKIN (KULLANMAYACAKSANIZ)
  4. yedek_sunucu_kullanici=”root
  5. yedek_sunucu_sifresi=”YEDEK_SUNUCU_SIFRESI
  6. yedek_sunucu_yuklenecek_yer=”/home/” (Duzenlemenize gerek olmayabilir)

Sonrasında nano uygulamasından çıkın: ctrl + x, y + enter

Eğer elle çalıştıracak olursanız ayarlarınızda sorun yoksa yedekleriniz alınacaktır. Ancak crontab a bir görev ekleyerek her gün belirlediğiniz saatlerde veritabanının hepsini yedek almasını sağlayabilirsiniz.

Crontab için görev ekleme

Aşağıdaki komutu ssh terminalinde çalıştırın:

Sonrasında yazı moduna geçmek için i harfine basın

En altına gerekerek aşağıdaki kodu aynen yapıştırın:

Sonrasında esc ye basarak yazım modundan çıkın ve aşağıdaki karakterleri yazıp enter yapın:

Bu kadar, crontab a eklediğimiz bu görev ile her gece saat 01:01 de mysql veritabanınızdaki bütün sql leri yedek alacak, ayarladıysanız farklı bir sunucuyada bu yedekleri gönderecektir. Crontab calışma zamanını değiştirebilirsiniz, böylece istediğiniz saatde yada her saat, dakikada yedek alarak sizi bu dertden kurtaracaktır. Crontab hakkında daha fazla bilgiye buradan ulaşabilirsiniz.

Şuanda bu uygulamayı sunucularımda kullanıyorum. Bir kaç kere başıma geldiği için veritabanı ve sql kayıplarının ne kadar kötü olduğunu biliyorum. Umarım böyle birşey sizlerinde basına gelmez ama her ihtimale karşı bu tarz bir yedekleme ile sql yedeklerinizi ayrı bir sunucuya taşıyarak riski en aza indirebilirsiniz.

Uyarı: Yedekler günlük alındığı için bellir bir süre sonra diskinizde fazla yer yoksa yer sorunu oluşabilir. Bu yüzden belli aralıklarla 5-6 günden eski yedeklerinizi silebilirsiniz. Yada yedeklemeyi ayrı bir sunucuya yapıyorsanız crontab ile belirli zaman aralıklarında mysql_yedek klasörünün içerisini temizletebilirsiniz.

Karşılaştığınız sorunlarda yorum yaparsanız ivedilikle geri dönüş yapılacaktır.

CEVAP VER

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.