16 Dec 2017
Bash Script ile Birden Fazla MySQL Veritabanının Yedeğinin Alınması
  • 420 Okuma
  • 0 Yorum
  • 2 Beğeni

Bash Script ile Birden Fazla MySQL Veritabanının Yedeğinin Alınması

Uygulamalar verilerini saklamak için dosya ya da veritabanı kullanmaktadırlar. Bu dosya ya da veritabanının yedeğinin düzenli bir şekilde alınması bir lüks değil ihtiyaçtır. Çünkü herhangi bir şekilde bu verilerin saklandığı dosyalar ya da veritabanını bir şekilde çalışmaz hale geldiği zaman işletmenizin ya da uygulamanızın kritiklik durumuna göre maddi sonuçlar doğurabilmektedir. Bu makalemde linux üzerinde çalışan bir ya da birden fazla mysql veritabanının yedeğinin alınmasında kullanabileceğiniz bir script paylaşacağım.

Script'i kullanarak mysql veritabanında bulunan istediğiniz bir veritabanını ya da hepsini tek seferde yedeğini alabilirsiniz. MySQL komutları ve açıklamaları için MySQL temel komutları ve açıklamaları konulu makalemi, yedek alma ve yedekten geri dönmek için MySQL yedek alma ve yedeği geri yükleme konulu makalemi okuyabilirsiniz.


#!/bin/bash

store_folder="/tmp"
#Showing DB Names
echo -n "Veritabanına erişim için kullanıcı adını giriniz [ENTER]: "
read username
echo -n "Şifreyi giriniz [ENTER]: "
read -s password
db_names=$(mysql -u $username -p$password -e "show databases")
echo "Mevcut veritabanları"
echo $db_names
echo -n "Yedeğini almak istediğimiz veritabanı adını giriniz (Hepsi için boş bırakın) [ENTER]: "
read db_select
if [ "$db_select" == "" ]; then
    for db_name in $db_names; do
    if [ "$db_name" == "Database" |  "$db_name" == "Database" ]; then
            continue
        fi
    echo "$db_name Tablo isimleri"
    table_names=$(mysql --user="$username" --password="$password" --database="$db_name" --execute="show tables;")
    echo $table_names
    mkdir -p $store_folder/$db_name
    for table_name in $table_names; do
        fisrt_character=$(printf %.1s "$table_name")
        if [ "$fisrt_character" == "." ]; then
            continue
        fi
            echo "tablo ismi $table_name"
        mysqldump --user="$username" --password="$password" $db_name $table_name > $store_folder"/"$db_name"/"$table_name.sql
    done
    echo "$db_name veritabanı için sıkıştırma işlemi yapılıyor"
    tar -zcvf $db_name.tar.gz $store_folder"/"$db_name
    rm -r $store_folder/$db_name
done
else
    db_name=$db_select;
    echo "$db_name veritabanı tabloları"
    table_names=$(mysql --user="$username" --password="$password" --database="$db_name" --execute="show tables;")
    echo $table_names
    mkdir -p $store_folder/$db_name
    for table_name in $table_names; do
        fisrt_character=$(printf %.1s "$table_name")
        if [ "$fisrt_character" == "." ]; then
            continue
        fi
            echo "tablo ismi $table_name"
        mysqldump --user="$username" --password="$password" $db_name $table_name > $store_folder"/"$db_name"/"$table_name.sql
    done
    echo "$db_name veritabanı için sıkıştırma işlemi yapılıyor"
    tar -zcvf $db_name.tar.gz $store_folder"/"$db_name
    rm -r $store_folder/$db_name
fi
echo "Veritabanı yedeği alma işlemi tamamlandı"


Sonuç

Veritabanı yedeğini almak bir lüks değil ihtiyaçtır. Veritabanı sorunlarından dolayı meydana gelen veri kayıplarının maddi sonuçları olabilir. Bu yüzden düzenli olarak yedeğini almak bu oluşabilecek maddi zararı en aza indirmede yardımcı olabilir. Bu makalemde MySQL veritabanınında bulunan veritabanlarının yedeğini alamada kullanabileceğiniz bir script paylaştım.

Karşılaştığınız sorunları bana mesaj yoluyla sorabilirsiniz.
Umarım faydalı olur. İyi çalışmalar.


Makaleyi faydalı buldunuz mu ?

Yazar


Legend Engineer

Legend Engineer

Mühendis (Bilgisayar)

Bilgisayar Mühendisliği mezunuyum. Bilgisayar alanında edindiğim bilgileri bu blog üzerinde paylaşıyorum. Beni takipte kalın.

Yorumlar


İlk yorum yapan sen ol

İlginizi Çekebilir

Makale Hakkındaki Düşünçelerinizi Paylaşın