Apakah mysqldump -all-databases
termasuk semua objek?
Saya harus memigrasi semua basis data ke server baru.
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?
--events
yang diperlukan selain--routines
dan--triggers
dan Anda juga dihilangkan--single-transaction
untuk menghindari penguncian tabel yang tidak perlu.--single-transaction
tidak akan menghasilkan cadangan yang konsisten jika ada tabel MyISAM sedang ditulis saat cadangan berjalan. Namun, menambahkan--single-transaction
adalah ide yang bagus jika Anda menggunakan semua InnoDB dan ingin menghindari pemblokiran saatmysqldump
berjalan.