Mysqldump -all-veritabanları tüm nesneleri içerir mi?


16

mu mysqldump -all-databases tüm nesneleri içerir?

Tüm veritabanlarını yeni sunucuya taşımam gerekiyor.

Yanıtlar:


21

Hiçbir mysqldump -all-database tüm nesneleri içermez

mysqldump --help

  -A, --all-databases Dump all the databases. This will be same as --databases
                      with all databases selected.

Yani - - tüm veritabanları ile mysqldump sadece tüm veritabanlarını döker.

Tüm veritabanlarını yeni bir sunucuya taşımak için tam bir yedek almalısınız:

mysqldump tüm mysql örneğini

mysqldump -h... -u... -p... --events --routines --triggers --all-databases > MySQLData.sql

Dezavantajı bu şekilde oluşturulan yedeklemeler sadece mysqldump ile oluşturulan mysql aynı büyük sürümüne yüklenebilir olmasıdır. Başka bir deyişle, bir MySQL 5.0 veritabanındaki mysqldump --all-veritabanları 5.1 veya 5.5 sürümlerine yüklenemez. Sebep ? MySQL şeması, büyük sürümler arasında tamamen farklıdır.

SQL Grants'ı okunabilir ve daha taşınabilir olan kullanıcılar için dökmenin genel yolu

mysql -h... -u... -p... --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -h... -u... -p... --skip-column-names -A | sed 's/$/;/g' > MySQLGrants.sql

Büyük bir veritabanının mysqldump'ı nasıl optimize edebilirim? Konusundaki RolandoMySQLDBA yanıtına bakın.


1
Unuttun --events ek olarak gerekli olan --routinesve --triggersve ayrıca ihmal --single-transactiongereksiz tabloları kilitleme önlemek için.
Michael - sqlbot

1
Açık olduğundan emin --single-transactionolmak için, yedekleme çalışırken yazılan MyISAM tabloları varsa tutarlı bir yedekleme oluşturmaz. Ancak, --single-transactiontüm InnoDB'yi kullanıyorsanız ve mysqldumpçalıştırma sırasında engellemekten kaçınmak istiyorsanız ekleme iyi bir fikirdir .
James L
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.