Cara mengekstrak cadangan tabel dari file dump mysql lengkap

Cara mengekstrak cadangan tabel dari file dump mysql lengkap

Mysqldump adalah utilitas yang disediakan oleh MySQL/MariaDB untuk mencadangkan database dan tabel. Secara umum, kami mengambil basis data penuh secara teratur dan menyimpannya. Tetapi beberapa kali kami harus memulihkan satu atau 2-3 tabel dari cadangan. Kemudian pertanyaan jika bagaimana memulihkan tabel tertentu dari file cadangan lengkap. Artikel ini akan membantu Anda cara mengekstrak cadangan tabel dari file cadangan database lengkap. Juga, kami dapat mengekstrak semua tabel cadangan di masing -masing file per tabel.

Langkah 1 - Unduh skrip split mysql dump

Untuk membagi file cadangan database mysqldump lengkap dalam cadangan file spesifik tabel terpisah. Buat file bernama splitdb.SH dan salin skrip di bawah ini di dalamnya.

#!/bin/bash #### # split file sql dump mysql menjadi satu file per tabel # berdasarkan http: // blog.Tty.NL/2011/12/28/SPLITTING-A-DATABASE-DUMP #### if [$#-LT 1]; lalu echo "penggunaan $ 0 dump_file [tabel]" Keluar dari jika [$# -Ge 2]; lalu csplit -s -ftable $ 1 "/-Struktur tabel untuk tabel/" "%-Struktur tabel untuk tabel '$ 2'%" "/-Struktur tabel untuk tabel/" "%40103 Set time_zone =@old_time_zone%1 "else csplit -s -ftable $ 1"/ -struktur tabel untuk tabel/"* fi [$? -eq 0] || Keluar MV Table00 Head File = "ls -1 Tabel* | tail -n 1" if [$# -ge 2]; lalu mv $ file foot else csplit -b '%d' -s -f $ file $ file "/40103 Set time_zone =@old_time_zone/" * mv $ file 1 kaki fi untuk file di 'ls -1 tabel *'; do name = "head -n1 $ file | cut -d $" x60 '-f2' cat head $ file foot> "$ name.SQL "Done RM Head Foot Table*
123456789101112131415161718192021222324252627282930313233343536#!/bin/bash ##### Pisah file sql dump mysql menjadi satu file per tabel#berdasarkan http: // blog.Tty.NL/2011/12/28/SPLITTING-A-DATABASE-DUMP #### if [$#-LT 1]; lalu echo "penggunaan $ 0 dump_file [tabel]" EXITFI if [$# -GE 2]; lalu csplit -s -ftable $ 1 "/-Struktur tabel untuk tabel/" "%-Struktur tabel untuk tabel '$ 2'%" "/-Struktur tabel untuk tabel/" "%40103 Set [email dilindungi] _time_zone% 1 "lain csplit -s -ftable $ 1"/ -struktur tabel untuk tabel/"* fi [$? -eq 0] || Keluar MV Table00 Head File = 'LS -1 Tabel* | tail -n 1'if [$# -GE 2]; Kemudian mv $ file footelse csplit -b '%d' -s -f $ file $ file "/40103 Set [email dilindungi] _time_zone/" * mv $ file 1 footfi untuk file di 'ls -1 tabel* '; do name = 'head -n1 $ file | cut -d $ 'x60' -f2 'cat head $ file foot> "$ name.SQL "Done RM Head Foot Table*

Skrip ini diambil dari https: // inti.GitHub.com/jasny/1608062.

Langkah 2 - Ekstrak semua tabel dari dump

Untuk contoh ini saya memiliki file dump bernama mydb.SQL, yang ingin saya pisahkan menjadi cadangan kecil per meja. Untuk ini saya telah membuat direktori baru /opt/splitdb dan disalin di atas skrip dengan nama splitdb.SH di direktori ini. Sekarang gunakan perintah berikut untuk mengekstrak semua tabel dalam file cadangan individual.

CD /opt /splitdb chmod +x splitdb.SH ./splitdb.SH MYDB.SQL #Jangan jalankan dengan perintah 'sh'  

Langkah 3 - Ekstrak satu meja dari dump

Jika kami hanya ingin mengekstrak satu tabel, kami dapat menggunakan perintah seperti di bawah ini. Misalnya saya ingin membagi tabel hanya bernama my_tbl1 Dan my_tbl2. itu akan mengekstraksi cadangan di direktori saat ini dengan nama my_tbl1.SQL Dan my_tbl2.SQL.

CD /opt /splitdb chmod +x splitdb.SH SH SPLETDB.SH MYDB.sql my_tbl1 sh splitdb.SH MYDB.sql my_tbl2