Apakah mysqldump -all-database menyertakan semua objek

16

Apakah mysqldump -all-databasestermasuk semua objek?

Saya harus memigrasi semua basis data ke server baru.

Manish Ishwar
sumber

Jawaban:

21

Tidak ada mysqldump -semua-database tidak mencakup semua objek

mysqldump --help

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

Jadi mysqldump dengan --all-databases hanya membuang semua database.

Untuk memigrasi semua basis data ke server baru, Anda harus mengambil cadangan lengkap:

mysqldump contoh seluruh mysql

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

Kekurangannya adalah cadangan yang dibuat dengan cara ini hanya dapat dimuat ulang ke versi rilis utama mysql yang sama dengan yang dihasilkan dengan mysqldump. Dengan kata lain, mysqldump --all-databases dari database MySQL 5.0 tidak dapat dimuat dalam 5.1 atau 5.5. Alasannya ? Skema mysql sangat berbeda antara rilis utama.

Berikut adalah cara umum untuk membuang SQL Grants untuk pengguna yang mudah dibaca dan lebih portabel

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

Lihat jawaban dari RolandoMySQLDBA tentang Bagaimana saya bisa mengoptimalkan mysqldump dari database besar?

Abdul Manaf
sumber
1
Anda lupa --events yang diperlukan selain --routinesdan --triggersdan Anda juga dihilangkan --single-transactionuntuk menghindari penguncian tabel yang tidak perlu.
Michael - sqlbot
1
Untuk memastikannya jelas, --single-transactiontidak akan menghasilkan cadangan yang konsisten jika ada tabel MyISAM sedang ditulis saat cadangan berjalan. Namun, menambahkan --single-transactionadalah ide yang bagus jika Anda menggunakan semua InnoDB dan ingin menghindari pemblokiran saat mysqldumpberjalan.
James L