Mysqldump komutu DB'de bulunan tüm görünümleri de yedekleyecek mi yoksa özel bir komut var mı?


10

Ben görünümler ile birlikte tüm veritabanımı yedeklemeye çalışıyorum. mysqldumpKomutu kullanacağım . Bunun tüm görünümleri kopyalayıp kopyalamayacağını merak ediyordum ya da bunun için ayrı bir komut kullanmam gerekecekti.

Lütfen bana bir cevap önerin. Herhangi bir yardım büyük beğeni topluyor.

Yanıtlar:


9

Döküm görünümleri için belirli bir seçenek yoktur.

Aşağıdakileri deneyebilirsiniz:

mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql

Görüşleri görebilmelisiniz. Bu, veritabanlarını boşalttığınızda, görünümün onunla birlikte geldiğini gösterir.

Sadece görüntüleme almak için deneyebileceğiniz başka bir dublör şudur:

mysql -uroot -prootpass AN -e"select concat('SHOW CREATE VIEW ',table_schema,'.',table_name,';') from information_schema.views" | sed 's/;/\\G/g' | mysql --uroot -prootpass > /root/MySQLDBViews.sql

Bir şans ver !!!


Böyle açıklayıcı bir cevap için çok teşekkürler. Sorun şu ki, veritabanlarım çok büyük, bu yüzden birer birer kopyalamayı planlıyorum. Tüm bu karışıklık içinde ben de 'views' kopyalamak gerekir - ben -all-databases komutunu kullanamazsınız. Lütfen Mysql DB Server'dan görünümleri kopyalamak için bir yol önerin.
Vinny

Bu nedenle, kullanmak yerine, --all-databasesistediğiniz veritabanını belirtin.
Derek Downey

1

Bunun için en iyi cevap muhtemelen bu bir tarafından olliiiver ben biraz değiştirilmiş olması. Özellikle herhangi bir tablo ile uğraşmak zorunda kalmadan, sistemdeki her görünüm için bir açılan tablo sorgusu ve oluştur veya değiştir görünümü sorgusu verir. Her görünümü can sıkıcı olacak kendi --ignore-table parametresine dahil etmedikçe, mysqldump görünümleri tablo olarak yeniden oluşturmayı sevdiğinden, açılan tablo sorgusu genellikle önemlidir. BİLGİ_SCHEMA kullanır.

mysql --skip-column-names --batch \
  -e "SELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_SCHEMA, '.', TABLE_NAME, \
  '; CREATE OR REPLACE VIEW ', TABLE_SCHEMA, '.', TABLE_NAME, ' AS ', \
  VIEW_DEFINITION, '; ') AS q FROM INFORMATION_SCHEMA.VIEWS"

Böyle bir şeyi kabuk komut dosyasına dönüştürmek istiyorsanız, --defaults-extra-file = CREDSFILENAME parametresini de kullanmanızı öneririm, böylece komut dosyasında kullanıcı / geçiş belirtmeniz gerekmez.

Kimlik bilgileri dosyası şöyle görünür:

[client]
username=YourUsernameHere
password=YourPasswordHere
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.