Apakah ada cara untuk membatasi tabel tertentu dari perintah mysqldump?
Sebagai contoh, saya akan menggunakan sintaks berikut untuk membuang hanya table1 dan table2:
mysqldump -u username -p database table1 table2 > database.sql
Tetapi apakah ada cara yang mirip untuk membuang semua tabel kecuali table1 dan table2? Saya belum menemukan apa pun di dokumentasi mysqldump, jadi apakah brute-force (menentukan semua nama tabel) satu-satunya cara untuk melakukannya?
Membangun jawaban dari @ Brian-Fisher dan menjawab komentar dari beberapa orang di posting ini, saya memiliki banyak tabel besar (dan tidak perlu) di database saya jadi saya ingin melewatkan konten mereka ketika menyalin, tetapi tetap struktur :
Dua file yang dihasilkan secara struktural baik tetapi data yang dibuang sekarang ~ 500MB daripada 9GB, jauh lebih baik bagi saya. Sekarang saya dapat mengimpor dua file ini ke database lain untuk tujuan pengujian tanpa harus khawatir tentang memanipulasi data 9GB atau kehabisan ruang disk.
sumber
untuk banyak basis data:
sumber
mysqld
danmysqldump
akan menjadi program yang sama.Contoh lain untuk mengabaikan beberapa tabel
menggunakan
--ignore-table
dan membuat array tabel, dengan sintaksis sepertidatabase.table
Tautan dengan informasi yang akan membantu Anda
kompres keluaran mysqldump
Impor basis data
Script sederhana untuk mengabaikan tabel
sumber
Untuk mengecualikan beberapa data tabel , tetapi tidak struktur tabel . Inilah cara saya melakukannya:
Dump struktur database semua tabel, tanpa data apa pun:
Kemudian dump database dengan data, kecuali tabel yang dikecualikan, dan jangan dump struktur:
Kemudian, untuk memuatnya ke database baru:
sumber
Anda dapat menggunakan
mysqlpump
perintah denganperintah. Ini menentukan daftar tabel yang dipisahkan koma untuk dikecualikan.
Sintaks dari mysqlpump sangat mirip dengan mysqldump, tetapi caranya lebih bagus. Informasi lebih lanjut tentang cara menggunakan opsi kecualikan dapat Anda baca di sini: https://dev.mysql.com/doc/refman/5.7/id/mysqlpump.html#mysqlpump-filtering
sumber
Buang semua database dengan semua tabel tetapi lewati tabel tertentu
di github: https://github.com/rubo77/mysql-backup.sh/blob/master/mysql-backup.sh
Dengan sedikit bantuan https://stackoverflow.com/a/17016410/1069083
Ini menggunakan lzop yang jauh lebih cepat, lihat: http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
sumber
Saya suka solusi Rubo77, saya belum pernah melihatnya sebelum saya memodifikasi solusi Paul. Yang ini akan membuat cadangan satu database, tidak termasuk tabel yang tidak Anda inginkan. Ini kemudian akan gzip, dan menghapus file apa pun yang berumur lebih dari 8 hari. Saya mungkin akan menggunakan 2 versi ini yang melakukan penuh (tabel log dikurangi) sekali sehari, dan yang lain hanya mencadangkan tabel paling penting yang paling banyak berubah setiap jam menggunakan beberapa pekerjaan cron.
sumber
Demi kelengkapan, berikut adalah skrip yang sebenarnya bisa menjadi satu-liner untuk mendapatkan cadangan dari database, tidak termasuk (mengabaikan) semua tampilan. Nama db diasumsikan sebagai karyawan:
Anda dapat memperbarui logika kueri. Secara umum menggunakan
group_concat
danconcat
Anda dapat menghasilkan hampir semua perintah string atau shell yang diinginkan.sumber