Mysqldump – Bir Veritabanı yedekleme programı hakkında nihai kılavuz
mysqldump, MySQL tarafından sağlanan ve MySQL veritabanlarının mantıksal yedeklerini oluşturmanıza olanak tanıyan bir komut satırı yardımcı programıdır. Bu araç, veritabanı yedekleri oluşturmak, veritabanlarını diğer sunuculara aktarmak ve veritabanlarını MySQL sürümleri veya farklı sistemler arasında taşımak için yaygın olarak kullanılır. Veritabanlarını yedeklemenin ve geri yüklemenin basit, güçlü ve esnek bir yoludur, bu da onu herhangi bir veritabanı yöneticisi için çok önemli bir araç haline getirir.
Bu nihai kılavuz, kurulum, söz dizimi, kullanım örnekleri ve en iyi uygulamalar dahil olmak üzere mysqldump hakkında bilmeniz gereken her şeyi kapsar.
Mysqldump nedir?
- mysqldump bir MySQL veritabanının mantıksal yedeğini oluşturur, yani verileri ve yapıyı SQL komutları biçiminde çıktı olarak verir.
- Bu SQL komutları daha sonra veritabanını yeniden oluşturmak için kullanılabilir, bu da mysqldump’ı yedeklemeler, geçişler ve veri aktarımı için ideal hale getirir.
- Özelleştirme için çeşitli seçeneklerle tüm veritabanlarını, tek tek tabloları veya belirli verileri dışa aktarmayı destekler.
Mysqldump’ın Temel Sözdizimi
Mysqldump komutunun temel sözdizimi şöyledir:
- [OPTIONS]: Mysqldump’ın davranışını değiştiren isteğe bağlı bayraklar (örneğin, kullanıcı, parola, ana bilgisayar vb. belirtme).
- database_name: Yedeklemek istediğiniz veritabanının adı.
- [tablolar]: (İsteğe bağlı) Yedeklenecek belirli tablolar. Atlanırsa, tüm veritabanı yedeklenir.
- > backup_file.sql: Çıktıyı, veritabanını yeniden oluşturmak için SQL komutlarını içerecek bir dosyaya (backup_file.sql) yönlendirir.
Ön Koşullar
- Sunucu veya istemcide MySQL veya MariaDB yüklü olmalıdır.
- Yedeklenecek veritabanında yeterli ayrıcalıklara (SELECT ve LOCK izinleri) sahip bir kullanıcı hesabı.
- Linux/macOS üzerinde komut satırına (terminal) veya Windows üzerinde komut istemine erişim.
Mysqldump ile Sık Kullanılan Seçenekler
- -u veya –user: MySQL kullanıcı adını belirtir.
- -p veya –password: Kullanıcının parolasını sorar.
- -h veya –host: Ana bilgisayarı belirtir (örn. localhost veya IP adresi).
- -P veya –port: MySQL sunucusu için bağlantı noktası numarasını belirtir.
- –databases: Birden fazla veritabanını yedeklemenizi sağlar.
- –all-databases: Sunucudaki tüm veritabanlarını yedekler.
- –no-data: Yalnızca veritabanı yapısını dışa aktarır (veri yok).
- –single-transaction: Veritabanının tutarlı bir anlık görüntüsünü alır, InnoDB tabloları için kullanışlıdır.
- –add-drop-table: CREATE TABLE deyimlerinden önce DROP TABLE deyimlerini ekleyerek tabloların düşürülmesini ve geri yükleme sırasında yeniden oluşturulmasını sağlar.
- –routines: Saklı yordamları ve işlevleri yedeklemeye dahil eder.
- –tetikleyiciler: Tetikleyicileri yedeklemeye dahil eder.
- –compress: Destekleniyorsa, istemci ile MySQL sunucusu arasında gönderilen verileri sıkıştırır.
Temel Örnekler
Örnek 1: Tek Bir Veritabanını Yedekleme
- Kök kullanıcının parolasını sorar.
- Veritabanı_adı’nın içeriğini backup_file.sql dosyasına döker.
Örnek 2: Birden Fazla Veritabanını Yedekleme
- –databases seçeneğini ve ardından veritabanlarının adlarını kullanın.
- Veritabanı1 ve veritabanı2’yi multiple_databases_backup.sql dosyasına döker.
Örnek 3: Tüm Veritabanlarını Yedekleme
- MySQL sunucusundaki tüm veritabanlarını yedekler.
- CREATE DATABASE ve USE deyimlerini içerir ve tüm veritabanlarını geri yüklemeyi kolaylaştırır.
Örnek 4: Belirli Bir Tablonun Yedeklenmesi
- Belirli bir tablonun (tablo_adı) yapısını ve verilerini veritabanı_adı’ndan tablo_yedek.sql dosyasına döker.
Örnek 5: Yalnızca Veritabanı Yapısını Yedekleme
- No-data seçeneği verileri hariç tutar ve yalnızca tablo yapılarını dışa aktarır.
Gelişmiş Örnekler
Örnek 6: Büyük Veritabanları için –single-transaction Kullanımı
- Tek işlem seçeneği InnoDB tabloları için idealdir ve tabloları kilitlemeden tutarlı bir yedekleme sağlar.
- Tabloların kilitlenme süresini en aza indirdiği için büyük veritabanları için önerilir.
Örnek 7: Sıkıştırılmış Yedekleme
- Mysqldump çıktısını anında sıkıştırmak için gzip kullanır.
- Daha küçük bir yedekleme dosyası (backup_file.sql.gz) ile sonuçlanarak disk alanından tasarruf sağlar.
Örnek 8: Saklanan Yordamları, İşlevleri ve Tetikleyicileri Dahil Etme
- –routines seçeneği saklı yordamları ve fonksiyonları içerir.
- –triggers seçeneği yedeklemeye tetikleyicileri de dahil eder.
Örnek 9: Belirli Tabloları Hariç Tutma
- –ignore-table seçeneği belirli bir tabloyu yedeklemenin dışında tutar.
- Bu seçeneği hariç tutmak istediğiniz her tablo için tekrarlayabilirsiniz.
Mysqldump Yedeğini Geri Yükleme
Mysqldump ile oluşturulan bir yedeği geri yüklemek için mysql komutunu kullanırsınız:
Örnek 10: Tek Bir Veritabanını Geri Yükleme
- Kök parolasını sorar.
- Veritabanını backup_file.sql dosyasından geri yükler.
Örnek 11: Birden Fazla Veritabanını veya Tüm Veritabanlarını Geri Yükleme
- Bu komut, –databases veya –all-databases seçenekleri kullanılarak all_databases_backup.sql oluşturulmuşsa birden fazla veritabanını veya tüm veritabanlarını geri yüklemek için kullanılabilir.
Örnek 12: Sıkıştırılmış Yedekten Geri Yükleme
- Yedekleme dosyasını anında açmak için gunzip kullanır ve çıktıyı mysql komutuna aktarır.
Mysqldump Kullanımı için En İyi Uygulamalar
- InnoDB için –single-transaction kullanın:
- Bu seçenek, özellikle büyük veritabanları için önemli olan veritabanı tablolarını kilitlemeden tutarlı bir yedekleme sağlar.
- Düzenli Yedeklemeler Planlayın:
- Yedekleme işlemini otomatikleştirmek için Linux’ta cron işlerini kullanın. Örneğin, günlük bir yedekleme işi oluşturun:0 2 * * mysqldump -u root -pParolanız veritabanı_adı > /path/to/backup/database_name_$(date \%F).sql
- Bu iş her gün saat 2’de bir yedek oluşturur.
- Yedekleme işlemini otomatikleştirmek için Linux’ta cron işlerini kullanın. Örneğin, günlük bir yedekleme işi oluşturun:
- Yedekleri Tesis Dışında Tutun:
- Donanım arızası durumunda veri kurtarma sağlamak için yedekleri farklı bir sunucuda veya AWS S3 veya Google Drive gibi bulut depolama alanında saklayın.
- Yedekleri Doğrulayın:
- Yedeklerinizin düzgün bir şekilde geri yüklenebildiğini ayrı bir ortamda test ederek periyodik olarak doğrulayın.
- Büyük Veritabanları için Sıkıştırma Kullanın:
- Yedekleme dosyalarını sıkıştırmak ve disk alanından tasarruf etmek için gzip veya bzip2 kullanın.
- Güvenlik Hususları:
- Diğer kullanıcılar tarafından görülebileceğinden, parolaları doğrudan komut satırında belirtmekten kaçının. Bunun yerine, bir yapılandırma dosyası kullanın veya parola için komut isteyin.
- Yetkisiz erişimi önlemek için yedekleme dosyalarını uygun dosya izinleriyle koruyun.
Sonuç
mysqldump, MySQL veritabanlarındaki yedeklemeleri yönetmek için çok yönlü ve güçlü bir araçtır. Sözdizimini ve seçeneklerini anlayarak, ister büyük veritabanlarıyla uğraşıyor, ister verileri taşıyor veya otomatik yedeklemeler ayarlıyor olun, özel ihtiyaçlarınıza uygun özel yedeklemeler oluşturabilirsiniz. Verilerinizin her zaman güvende, emniyette ve gerektiğinde geri yüklenebilir olmasını sağlamak için en iyi uygulamaları izleyin.