Bekerja dengan berkas teks yang besar (huge text file) dapat menyebabkan komputer hang apabila dibuka dengan aplikasi pengolah teks biasa. Dalam konteks backup/restore, tidak perlu membaca keseluruhan teks untuk mendapatkan baris query di dalam file.
Daftar Isi
Menangani Huge File (Text)
Log Viewer bermanfaat untuk membaca berkas teks yang besar pada saat menangani error import basis data. Setelah ditemukan letak errornya, gunakan perintah bash split/csplit agar eksekusi import meneruskan, bukan dari awal
— Bekerja Dengan Huge File (Text) Studi Kasus Restore SQL
Memasang KLOGG
KLOGG berguna untuk melihat berkas teks yang besar dengan ringan
https://github.com/variar/klogg/releases/tag/continuous-win
Memasang WSL
WSL berguna untuk menjalankan perintah Linux di Windows
- Buka PowerShell ISE sebagai administrator
- Jalankan perintah
wsl --install
- Setelah instalasi selesai, reboot komputer
- Setelah log in kembali, beri username dan password untuk WSL-nya
Memecah Berkas
Perintah di bawah ini dapat dijalankan di WSL.exe
$ ls
file.sql
$ split -l 1000 file.sql segmen #membagi file per 1000 baris
$ ls
file.sql segmenaa segmenab
$ split -b 10M file.sql bysize #membagi file per 10 Megabyte
$ ls
file.sql segmenaa segmenab bysizeaa bysizeab
$ csplit file.sql 1000 -f part #membagi file, file kedua mulai dari baris ke 1000
file.sql segmenaa segmenab bysizeaa bysizeab
part00 part01
$ csplit file.sql '/DROP TABLE IF EXISTS/' -f regex #membagi file berdasarkan pattern
$ ls
file.sql segmenaa segmenab bysizeaa bysizeab
part00 part01 regex00 regex01 regex02
Menggabung Berkas
Perintah di bawah ini dapat dijalankan di WSL.exe
$ cat part* > gabungan #menggabungkan file ke dalam satu file
$ ls
file.sql segmenaa segmenab bysizeaa bysizeab
part00 part01 regex00 regex01 regex02
gabungan
Contoh Kasus
Skenario
- Terdapat file backup sql berukuran 20GB
- Proses backup dengan perintah
mysql -uuser -p --database=skema < file.sql
- Proses backup sudah berjalan 15 jam, tetapi berhenti di tengah jalan
Mitigasi
- Lihat pesan error terakhir sebelum keluar, misalnya error ketika insert ke tabel moodle_question_attempt_steps
- Jalankan perintah
select * from moodle_question_attempt_steps order by id desc limit 0,10
dan catat id terbesarnya, misalnya 9208970 - Buka file.sql dengan KLOGG, kemudian cari id tersebut ada di mana. Catat ada di baris ke berapa, misalnya 15823 (informasi baris ada di kanan atas)
- Buka WSL.exe, kemudian jalankan perintah sesuai dengan informasi yang sudah didapatkan di atas:
csplit file.sql 15823 -f part
rm part00
- Jalankan kembali proses backup dengan meneruskan proses meskipun ada error (opsi
--force
) dengan file part01mysql --force -uuser -p --database=skema < part01
- Periksa kembali apakah ada id yang telewat pada eksekusi baris pertama part01 apabila ada pesan error Duplicate entry
Demikian, semoga bermanfaat. [admin]
Sumber: