it-swarm-tr.com

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

Düzenli olarak yedeklemek istediğim MySQL veritabanında çalışan bir WordPress blogum var. Yedekleme yapmak için mysqldump programını veya mysqlhotcopy komut dosyasını kullanmak daha iyi olur mu? Her birinin avantajları ve dezavantajları nelerdir? Göz önünde bulundurmam gereken başka seçenekler var mı?

13
Matthew Shanley

Veritabanımın yedeğini almak için şu anda mysqldump kullandığımı söyleyebilirim. Bunu yapıyorum çünkü hedefim haftalık yedekleme yapmak, böylece birisi web sayfalarını kaldırması durumunda, en fazla bir hafta öncesinden geri alabilirim.

Bu konuda iyi bir şey, basit bir metin dosyası olması, böylece MySQL ile herhangi bir bilgisayara aktarabilir, yükleyebilir ve eksik verileri arayabilirim. Not: İstediğimi elde etmek için, betiğimde kullandığım komut şudur:

mysqldump --databases databaseName > /file/path

--databases, mysqldump öğesinin CREATE DATABASE IF NOT EXIST başlıklarını atmasını sağlar, böylece istediğim her yere alabilirim.

Bu yöntem benim için çalışırken, başka amaçlar için daha iyi yöntemler bulunduğundan eminim. Ayrıca, herhangi bir yedekleme çözümünde olduğu gibi, en azından başka bir bilgisayarda ve eğer mümkünse dışarda (bizim bulutta) saklamanız gerektiğini de söyleyebilirim.

5
Mike

Wordpress'da listelenen "" WordPress Veritabanı Yedekleme (WP-DB-Yedekleme) "adlı bir (== --- ==) WordPress eklentisini kullanmayı düşünebilirim. _ Veritabanı yedekleme kılavuz . Bu eklenti veritabanını bir zamanlamaya göre yedekleyebilir ve size e-postayla gönderebilir (küçük bir veritabanını varsayarak). Ayrıca yerel olarak da yedekleyebilirsiniz. Veritabanını küçültmek için yorum spam ve revizyonlarını hariç tutabilirsiniz

Daha az kontrol ama uygulaması daha kolay.

MySQL dökümleri size çoğu kontrolü verir. Barındırma hizmetiniz de sınırlayıcı bir faktör olabilir. Bazı ana bilgisayarlar size cron işlerini yürütme veya mysqldump komutunu çalıştırma erişimi vermez.

5
citadelgrad

ÖNERİ # 1

Herhangi bir MySQL Instane yedeklemesi yaparsanız, MySQL Replicaton kurulumunu yapmak en iyisidir, böylece herhangi bir sunucu yükü yüklüyor veya disk G/Ç artışını artırıyorsanız üretim veritabanınızı etkilemeyecektir.

MySQL Çoğaltma'yı ayarladıktan sonra, bir ( mysqldump komutunu farklı şekillerde yazabilirsiniz ( Lütfen yazımın DBA StackExchange, çeşitli teknikler için ), mysqldumps'ı bir Slave üzerinde çalıştırdığınız sürece.

ÖNERİ # 2

MySQL Replication için başka bir sunucu ayarlayamıyorsanız ve tüm verileriniz InnoDB ise, bir an önce nokta mysqldump gerçekleştirmeniz gerekir. Bu, mysqldump ile --single-transaction 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 12: 15'te sona erdiyse, mysqldump'un geri yüklendiğinde çıktısı, 12: 00'den itibaren verileri yansıtır.

ÖNERİ # 3

MySQL Backups için mevcut bir başka program, Percona'dan XtraBackup.

XtraBackup , rsync gibi davranan ancak hayatta bir amaca yönelik olan kapsamlı bir araçtır. Tüm InnoDB verilerini ve tablo alanlarını kopyalamaya başlayabilir. Dahili kontrol noktaları oluşturma ve mükemmel bir zamanda yedeklemeye yardımcı olmak için yerinde InnoDB kilitlenme kurtarma işlemi gerçekleştirme olanağına sahiptir. XtraBackup ayrıca artımlı yedeklemelerin oluşturulmasına izin veren ek bir özelliğe sahiptir. Diğer bir özellik de, yerinde çökme kurtarması ile inşa edilmiş InnoDB günlük dosyalarının oluşturulmasıdır. Ayrıca, MyISAM tablolarının donmuş kopyalanmasını sağlayan bir paketleyici yazılımı da vardır.

MySQL Örneğinin arkasını gerçekleştirir, ancak belirgin bir farkla. Yedeklemenin başlangıç ​​zamanı, yedeklemenin başladığı zaman yerine tamamlandığı zamana dayanır. Bu nedenle, gece yarısından başlayarak XtraBackup'ı çalıştırdıysanız ve yedekleme 12: 15'te sona erdiyse, mysqldump'un geri yüklendiği zamanki verileri, 12: 15'teki verileri yansıtır.

3
RolandoMySQLDBA

Masalarınız için depolama motorunuza bağlıdır. Sadece bu MySQL Kılavuz Sayfasına göre ARŞİV ve MyISAM tabloları için çalışır ve aynı makinede çalıştırılmalıdır (yani, yerel soket veya TCP/IP kullanılmadan)

MySQL de diyor

Sunucuda bir yedekleme yapıyorsanız ve tüm tablolarınız MyISAM tablolarıysa, daha hızlı yedeklemeler ve daha hızlı geri yüklemeler yapabildiğinden bunun yerine mysqlhotcopy komutunu kullanmayı düşünün.

2
Aiden Bell

Acı çekmek için önceden var olan mySQL yedekleme komut dosyalarından birini kullanmanızı öneririm.

Sunucuda cron işi olarak ayarlanabilen açık kaynaklı bir Shell betiği olan "automysqlbackup" kullanıyorum. Akla gelebilecek her yedekleme durumunu kapsar: http://sourceforge.net/projects/automysqlbackup/ . Birkaç yıl boyunca benim için kusursuz çalıştı - iyice tavsiye edilir.

1
Mark Hatton

mysqlhotcopy, '05 dolaylarında bir Perl betiğidir. Bu yüzden Perl ve çeşitli Perl için bağımlılıklar ekler. Bunu iletirim.

mysqldump, MySQL ile birlikte dağıtılan ve aktif olarak korunan bir C programıdır. -X seçeneğini eklerseniz tabloları kilitler, böylece altınsınız.

Şahsen bu senaryo cron'da (eğer elle çalıştırmak istiyorsanız bu kaçarları kaldırmak isteyeceksiniz) ve veritabanlarımın her birini yedekleyerek benim için bir cazibe işlevi görür. yerel bir dosyanın yanı sıra tüm veritabanlarının eksiksiz bir dökümü.

Ve orada birden fazla veri tabanınız varsa, onlar için hibeleri de bırakmak isteyeceksiniz. Maatkit orada size yardımcı olacak ve hibelerinizin tablolarının yedeklenip tekrar içe aktarılmaya hazır olması için sadece mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql.

1
intlect

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

0
Darryl Hein