MySQL veritabanı yedeklemeleri için mysqldump veya mysqlhotcopy kullanmalı mıyım?


14

Düzenli olarak yedeklemek istediğim bir MySQL veritabanında çalışan bir WordPress blog'um var. Yedekleme yapmak için mysqldump programını veya mysqlhotcopy komut dosyasını kullanmak daha iyi olur mu? Her birinin artıları ve eksileri nelerdir? Dikkate almam gereken başka seçenekler var mı?

Yanıtlar:


5

Şu anda veritabanımın bir yedeğini korumak için mysqldump kullandığımı söyleyebilirim. Bunu yapıyorum çünkü hedefim haftalık yedekleri tutmak, böylece bir kişinin web sayfalarını kaldırması durumunda, en fazla bir hafta önce kurtarabilirim.

Bu konuda iyi bir şey, temel bir metin dosyasıdır, bu yüzden MySQL ile herhangi bir bilgisayara aktarabilir, yükleyebilir ve eksik verileri arayabilirim. Not: İstediğimi elde etmek için, komut dosyamda kullandığım komut şudur:

mysqldump --databases databaseName > /file/path

--databasesDökümü Mysqldump kılan CREATE DATABASE IF NOT EXISTben her yerde istediğim içe böylece başlıklarını.

Bu yöntem benim için çalışıyor olsa da, orada başka amaçlar için daha iyi yöntemler olduğundan eminim. Ayrıca, herhangi bir yedekleme çözümü için olduğu gibi, en azından başka bir bilgisayarda ve tercihen mümkünse (bizim bulutta) saklamanız gerektiğini söyleyebilirim.


5

Ayrıca Wordpress Veritabanı yedekleme kılavuzunda listelenen "WordPress Veritabanı Yedekleme (WP-DB-Yedekleme)" adlı bir WordPress eklentisi kullanmayı düşünürdüm . Bu eklenti veritabanını bir zamanlamaya göre yedekleyebilir ve size e-postayla gönderebilir (küçük bir veritabanı olduğu varsayılarak). Ayrıca yerel olarak da yedekleyebilirsiniz. DB'yi küçültmek için yorum spam'lerini ve düzeltmelerini hariç tutabilirsiniz

Daha az kontrol ancak uygulaması daha kolaydır.

MySQL dökümleri size en iyi kontrolü sağlar . Barındırma hizmetiniz de sınırlayıcı bir faktör olabilir. Bazı ana bilgisayarlar, cron işlerini çalıştırmanıza veya mysqldump komutunu çalıştırmanıza izin vermez.


4

ÖNERİ # 1

MySQL Eşgörünüzün herhangi bir yedeklemesini yaparsanız, MySQL Çoğaltma'yı kurmak en iyisidir, böylece herhangi bir sunucu yükünü ya da diski G / Ç'yi arttırmak üretim veritabanınızı etkilemez.

MySQL Replication'ı kurduktan sonra , bu mysqldumps'ı bir Slave üzerinde çalıştırdığınız sürece, mysqldump'ı farklı şekillerde komut dosyası oluşturabilirsiniz ( Lütfen çeşitli teknikler için DBA StackExchange'teki yazımı görün ).

ÖNERİ # 2

MySQL Çoğaltma için başka bir sunucu ayarlayamıyorsanız ve tüm verileriniz InnoDB ise, belirli bir zamanda mysqldump gerçekleştirmeniz gerekir. Bu --single-transactionmysqldump seçeneği kullanılarak yapılır . Bu nedenle, gece yarısından başlayarak bir mysqldump çalıştırdıysanız ve yedekleme 00: 15'te sona erdiyse, geri yüklendiğinde mysqldump çıktısı 12: 00'dan itibaren verileri yansıtır.

ÖNERİ # 3

MySQL Backups için kullanılabilen başka bir program Percona'dan XtraBackup.

XtraBackup , rsync gibi davranan ancak hayatta bir amacı olan kapsamlı bir araçtır. Tüm InnoDB verilerini ve tablo alanlarını kopyalamaya başlayabilir. Dahili kontrol noktaları oluşturma ve zamanında anında yedekleme elde etmeye yardımcı olmak için yerinde bir InnoDB çökme kurtarma gerçekleştirme yeteneğine sahiptir. XtraBackup ayrıca artımlı yedeklemelerin oluşturulmasına izin veren ekstra bir özelliğe sahiptir. Başka bir ek özellik de, yerinde çökme kurtarma tarafından oluşturulan InnoDB günlük dosyalarının oluşturulmasıdır. Ayrıca MyISAM tablolarının dondurulmuş kopyalanmasını sağlayan bazı sarıcı yazılımlar da vardır.

MySQL Eşgörünümünün bir arkasını gerçekleştirir, ancak farklı bir farkla. Yedeklemenin zaman içindeki noktası, yedeklemenin başladığı zamandan ziyade tamamlanışına bağlıdır. Bu nedenle, XtraBackup'u gece yarısından başlayarak çalıştırdıysanız ve yedekleme 00: 15'de sona erdiyse, geri yüklendiğinde mysqldump çıktısı 00: 15'den itibaren verileri yansıtır.



1

Acıyı düzeltmek için önceden var olan birçok mySQL yedekleme komut dosyalarından birini kullanmanızı öneririm.

Sunucuda cron işi olarak ayarlanabilen açık kaynaklı bir kabuk komut dosyası olan "automysqlbackup" kullanıyorum. Neredeyse akla gelebilecek her yedekleme durumunu kapsar: http://sourceforge.net/projects/automysqlbackup/ . İyice tavsiye - birkaç yıldır benim için kusursuz çalıştı.


1

mysqlhotcopy, '05 dolaylarında bir Perl betiğidir. Böylece Perl ve çeşitli Perl için bağımlılıklar ekler. Bunu geçirdim.

mysqldump, MySQL ile dağıtılan ve aktif olarak sürdürülen bir C programıdır. -X seçeneğini eklerseniz, tablolar kilitlenir, böylece altın olursunuz.

Şahsen cronda bu betiği var (elle çalıştırmak istiyorsanız bu `kaçışları kaldırmak isteyeceksiniz) ve benim için bir cazibe gibi çalışıyor, veritabanlarımın her birini yerel bir dosyaya yedekliyor tüm veritabanlarının tam bir dökümü.

Ve eğer birden fazla veritabanınız varsa, onlar için hibeleri de dökmek isteyeceksiniz. Maatkit orada size yardımcı olacak ve sadece mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sqlbağış tablolarınızı yedekleyip tekrar içe aktarmaya hazır hale getireceksiniz.


0

Ayrıca, Interworx ve Ensim gibi bir dizi sunucu yönetim aracının veritabanlarını yedeklemek için mysqldump ve sonra geri yüklemek için basit bir mysql komutu kullandığını biliyorum. Bundan, bunun en iyi yollardan biri olduğunu tahmin ediyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.