2010-03-20 11 views
27

Tüm debian sistemimin tam bir yedeğini oluşturduğum için, /var/lib/mysql dizininin kopyasının mysqldump ile tabloları dökmek için uygun bir alternatif olup olmadığını düşünüyordum.Kopyalama/var/lib/mysql mysqldump'a iyi bir değişiklik mi?

  • bu dizinde bulunması gereken tüm bilgiler nelerdir?
  • Tek tabloları başka bir mysql içine alınabilir mi? Bu dosyaları (muhtemelen biraz) farklı bir mysql sunucu sürümünde geri yüklerken
  • sorunları olabilir mi?
+2

yıldır bu yaparak, hiçbir tutarsızlık! – sepehr

+2

Percona, temel olarak bu yaklaşımı çalışan sunucuların "sıcak yedeklemeleri" yapmak için kullanan bir araca sahiptir: http://www.percona.com/doc/percona-xtrabackup/2.1/ – Eli

cevap

26
  • Evet
  • tablo MyISAM (varsayılan) motorunu kullanıp kullanmadığını Evet. InnoDB kullanıyorsa değil. varsa
  • Muhtemelen hayır ve, sadece ya kapatma MySQL can veya daha önce kilitli tablolari ve sonra FLUSH TABLOLAR kullanın tutarsız bir durumda veritabanlarını almamak için onları

düzeltmek için mysql_upgrade yürütmek gerekiyor yedekleme. İkinci çözüm biraz daha iyi çünkü MySQL sunucusu yedeklemede kullanılabilir (sadece okunabilir).

+1

Bu çözüm için herkese teşekkürler. En az bir saat yeniden ithal etme zamanı kesildi! Ve eğer bunu tek bir komutta yapmak istiyorsanız: "READ LOCK WITH FLUSH TABLES;" yazın. –

+0

"Tekli masalar başka bir mysql içine alınabilir mi?" Yanıtının ayrıntılarına girer misiniz? "Evet, MyISAM olduğu sürece" oldukça seyrek bir cevaptır. – bobpaul

3

İlk önce MySQL istemcisini kapattığınız ve "yedeklemeyi" almak için tam olarak aynı sürümü kullandığınız sürece tamamıyla sorun yoktur. Aksi halde değil.

4

Bu yaklaşım, yalnızca veritabanını önce kapatırsanız güvenli bir şekilde çalışır. Aksi halde, daha sonra tutarsız bir halde son bulabilirdiniz. Önce /etc/init.d/mysql stop komutunu kullanın. Yedekleme alındıktan sonra yeniden başlatabilirsiniz. 2 stratejilerinin bir açıklama için