Kembali pada 16 Des 2011, saya menjawab pertanyaan Bagaimana Anda tabel spesifik mysqldump?
Saya mengumpulkan semua tabel tidak termasuk satu set nama tabel tertentu.
Menggunakan prinsip yang sama, Anda bisa mengumpulkan semua nama database dari tabel metadata information_schema.schemata
yang Anda inginkan mysqldump'd, membuat kueri untuk mengembalikan daftar itu, lalu menggunakan daftar database itu untuk merumuskan perintah mysqldump.
DATABASES_TO_EXCLUDE="db1 db2 db3"
EXCLUSION_LIST="'information_schema','mysql'"
for DB in `echo "${DATABASES_TO_EXCLUDE}"`
do
EXCLUSION_LIST="${EXCLUSION_LIST},'${DB}'"
done
SQLSTMT="SELECT schema_name FROM information_schema.schemata"
SQLSTMT="${SQLSTMT} WHERE schema_name NOT IN (${EXCLUSION_LIST})"
MYSQLDUMP_DATABASES="--databases"
for DB in `mysql -ANe"${SQLSTMT}"`
do
MYSQLDUMP_DATABASES="${MYSQLDUMP_DATABASES} ${DB}"
done
MYSQLDUMP_OPTIONS="--routines --triggers"
mysqldump ${MYSQLDUMP_OPTIONS} ${MYSQLDUMP_DATABASES} > MySQLDatabases.sql
Yang perlu Anda lakukan adalah memasukkan basis data yang tidak Anda inginkan ke mysqldump DATABASES_TO_EXCLUDE
Cobalah !!!
information_schema
itu tidak dibuang.mysqldump does not dump the INFORMATION_SCHEMA or performance_schema database by default. To dump either of these, name it explicitly on the command line and also use the --skip-lock-tables option. You can also name them with the --databases option. Before MySQL 5.5 mysqldump silently ignores INFORMATION_SCHEMA even if you name it explicitly on the command line.
dev.mysql.com/doc/refman/5.5/en/mysqldump.htmlGunakan grep untuk mengecualikan database yang tidak Anda inginkan:
Dari melihat /programming/19354870/bash-command-line-and-input-limit sepertinya Anda akan dapat menangani antrean panjang. Kalau tidak, Anda selalu bisa
sumber
grep
untuk lulus dari keluaran multiline ke satu baris dengan setiap nama basis data dipisahkan oleh spasi, yang diperlukan olehmysqldump
. Jadi perintahnya adalahcandidates=$(echo "show databases" | mysql | grep -Ev "^(Database|mysql|performance_schema|information_schema)$" | paste -sd " " -)
Saya tidak berpikir itu mungkin, tetapi Anda dapat mencoba solusi ini yang harus Anda ketik nama semua database yang ingin Anda buang.
Beri tahu saya jika solusinya membantu.
sumber
Bahkan di sini begitu banyak jawaban bagus, jadi posting ini hanya untuk menambah satu pilihan lagi. Dengan skrip di bawah 2 baris, Anda dapat mengambil semua cadangan semua server DB dengan mengabaikan beberapa DB.
sumber
sys
karena itu adalah bagian dari MySQL 5.7Atau, Anda dapat melihat tautan berikut;
Mysqldump Abaikan Opsi Basis Data
Beberapa peretasan untuk mensimulasikan mysqldump --ignore-database
Menerapkan mysqldump –ignore-database
Beri tahu saya jika solusinya membantu.
Semoga berhasil!
sumber
Banyak yang selalu ingin mysqldump mengabaikan database.
Percayakah Anda bahwa opsi itu ada sekarang ??? Tidak, tidak di mysqldump.
Oracle (Yuck, toowee, masih tidak tergelincir) memiliki DataPump (expdb impdp) untuk membuang database Oracle. Sejak MySQL 5.7 dalam keluarga Oracle (masih sakit), program utilitas cadangan baru disebut mysqlpump , yang dilengkapi dengan --exclude-database dan opsi lain yang rapi. Seperti datapump saudara tirinya yang lebih tua , mysqlpump juga memiliki fitur paralelisme untuk membantu mempercepat dump dan membagi pekerjaan . Saat ini, saya belum tergabung dalam pekerjaan, tetapi terlihat sangat menjanjikan. Ketika saya menyelam lebih dalam ke mysqlpump saya mungkin menemukan bahwa itu membawa tampilan dan perasaan yang sama dengan datapump Oracle .
Jika ada orang di MySQL Parallel Universe dengan cerita tentangnya, silakan posting di sini.
sumber
Jawaban Rolando cukup bagus, tetapi saya ingin skrip yang dapat digunakan kembali di seluruh proyek. Jadi, saya mengambil skripnya dan memodifikasinya sehingga Anda dapat melakukan hal-hal seperti:
Berikut ini skrip yang dimodifikasi:
(Saya masih berharap bahwa
--ignore-database
opsi akan ditambahkan ke versi mysqldump di masa depan)sumber
Sejak MySQL 5.7.8, Anda dapat menggunakan
mysqlpump
(yang TIDAK sama denganmysqldump
) sebagai berikut:Ganti saja
db1,db2,db3,db4
dengan empat basis data yang ingin Anda kecualikan.Sumber: Blog Server MySQL
sumber