Android

MySQL veritabanı ile MySQL veritabanlarını yedekleme ve geri yükleme

MySQL Tutorial - 40 - BACKUP & RESTORE MySQL Database

MySQL Tutorial - 40 - BACKUP & RESTORE MySQL Database

İçindekiler:

Anonim

Bu öğretici, mysqldump yardımcı programını kullanarak MySQL veya MariaDB veritabanlarının komut satırından nasıl yedekleneceğini ve geri yükleneceğini açıklar.

Mysqldump yardımcı programı tarafından oluşturulan yedekleme dosyaları temelde özgün veritabanını yeniden oluşturmak için kullanılabilecek bir SQL deyimleri kümesidir. Mysqldump komutu CSV ve XML biçiminde dosyalar da oluşturabilir.

MySQL veritabanınızı başka bir MySQL sunucusuna aktarmak için mysqldump yardımcı programını da kullanabilirsiniz.

Mysqldump Komut Sözdizimi

Mysqldump komutunu kullanmaya başlamadan önce, temel sözdizimini inceleyerek başlayalım.

Mysqldump yardımcı programı ifadeleri aşağıdaki formu alır:

mysqldump > file.sql

  • options - mysqldump seçenekler file.sql - Döküm (yedekleme) dosyası

Mysqldump komutunu kullanmak için MySQL sunucusunun erişilebilir ve çalışıyor olması gerekir.

Tek bir MySQL Veritabanını Yedekleme

Mysqldump aracının en yaygın kullanım durumu tek bir veritabanını yedeklemektir.

Örneğin, kullanıcı root kullanarak database_name adlı database_name yedeğini oluşturmak ve database_name.sql adlı bir dosyaya kaydetmek için aşağıdaki komutu çalıştırın:

mysqldump -u root -p database_name > database_name.sql

Kök parolasını girmeniz istenir. Başarılı kimlik doğrulamasından sonra döküm işlemi başlayacaktır. Veritabanı boyutuna bağlı olarak, işlem biraz zaman alabilir.

mysqldump database_name > database_name.sql

Birden Çok MySQL Veritabanını Yedekle

Birden fazla MySQL veritabanını tek bir komutla yedeklemek için, --database seçeneğini ve ardından yedeklemek istediğiniz veritabanlarının listesini kullanmanız gerekir. Her veritabanı adı boşlukla ayrılmalıdır.

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

Yukarıdaki komut her iki veritabanını da içeren bir döküm dosyası oluşturur.

Tüm MySQL Veritabanlarını Yedekle

Tüm MySQL veritabanlarını yedeklemek için --all-databases seçeneğini kullanın:

mysqldump -u root -p --all-databases > all_databases.sql

Önceki örnekte olduğu gibi, yukarıdaki komut tüm veritabanlarını içeren tek bir döküm dosyası oluşturur.

Tüm MySQL veritabanlarını ayrı dosyalara yedekleyin

mysqldump yardımcı programı, tüm veritabanlarını ayrı dosyalara yedekleme seçeneği sunmaz, ancak bunu basit bir bash FOR döngüsü ile kolayca başarabiliriz:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $DB > "$DB.sql"; done

Yukarıdaki komut, dosya adı olarak veritabanı adını kullanarak her veritabanı için ayrı bir döküm dosyası oluşturur.

Sıkıştırılmış bir MySQL Veritabanı Yedeklemesi Oluşturma

Veritabanı boyutu çok büyükse, çıktıyı sıkıştırmak iyi bir fikirdir. Bunu yapmak için, çıktıyı gzip yardımcı programına gzip ve aşağıda gösterildiği gibi bir dosyaya yönlendirin:

mysqldump database_name | gzip > database_name.sql.gz

Zaman Damgasıyla Yedek Oluşturma

mysqldump database_name > database_name-$(date +%Y%m%d).sql

Yukarıdaki komut aşağıdaki database_name-20180617.sql biçiminde bir dosya oluşturur

MySQL dökümünü geri yükleme

MySQL dökümünü mysql aracını kullanarak geri yükleyebilirsiniz. Genel sözdizimi komutu aşağıdaki gibidir:

mysqld database_name < file.sql

Çoğu durumda içe aktarmak için bir veritabanı oluşturmanız gerekir. Veritabanı zaten varsa, önce silmeniz gerekir.

Aşağıdaki örnekte, ilk komut database_name adlı bir database_name ve sonra database_name.sql dökümünü bu database_name.sql alır:

mysql -u root -p -e "create database database_name"; mysql -u root -p database_name < database_name.sql

Tek bir MySQL Veritabanını Tam MySQL Dökümünden Geri Yükleme

mysql --one-database database_name < all_databases.sql

Bir Komutta MySQL Veritabanını Verme ve Alma

Bir veritabanından döküm dosyası oluşturmak ve ardından yedeklemeyi başka bir MySQL veritabanına almak yerine, aşağıdaki tek astarı kullanabilirsiniz:

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

Yukarıdaki komut, çıkışı uzak ana bilgisayardaki bir mysql istemcisine remote_database_name ve bunu remote_database_name adlı bir veritabanına remote_database_name . Komutu çalıştırmadan önce, veritabanının uzak sunucuda zaten var olduğundan emin olun.

Cron ile Yedeklemeleri Otomatikleştirin

Veritabanlarını yedekleme işlemini otomatikleştirmek, belirli bir zamanda mysqldump komutunu çalıştıracak bir cron işi oluşturmak kadar basittir.

Cronjob kullanarak bir MySQL veritabanının otomatik yedeklerini ayarlamak için aşağıdaki adımları izleyin:

  1. Kullanıcı ana dizininizde .my.cnf adlı bir dosya oluşturun:

    sudo nano ~/.my.cnf

    Aşağıdaki metni kopyalayıp.my.cnf dosyasına yapıştırın.

    user = dbuser password = dbpasswd

    dbuser ve dbpasswd veritabanı kullanıcısı ve kullanıcı dbpasswd değiştirmeyi unutmayın.

    Kimlik bilgileri dosyasının izinlerini yalnızca kullanıcınızın ona erişebilmesi için kısıtlayın:

    chmod 600 ~/.my.cnf

    Yedekleri depolamak için bir dizin oluşturun:

    mkdir ~/db_backups

    Kullanıcı crontab dosyanızı açın:

    crontab -e

    Her gün 03:00 de mydb veritabanı adının bir yedeğini oluşturacak aşağıdaki cron işini ekleyin:

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

    Kullanıcı adını gerçek kullanıcı adınızla değiştirmeyi unutmayın.

30 günden daha eski yedeklemeleri silmek için başka bir cronjob da oluşturabilirsiniz:

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

Elbette, komutu yedekleme konumunuza ve dosya adlarına göre ayarlamanız gerekir. Find komutu hakkında daha fazla bilgi edinmek için Linux'ta Dosyaları Bulma Komut Satırını Kullanma kılavuzumuza bakın.

Sonuç

Bu öğretici yalnızca temel bilgileri içerir, ancak mysqldump yardımcı programını kullanarak MySQL veritabanlarının komut satırından nasıl oluşturulacağını ve geri yükleneceğini öğrenmek isteyen herkes için iyi bir başlangıç ​​olmalıdır.

Unutmanız durumunda bir MySQL kök parolasını nasıl sıfırlayacağınızla ilgili öğreticiyi de kontrol edebilirsiniz.

mysql mariadb yedekleme mysqldump