Categories
Tutorial, Manual, Tips dan Trik

Bekerja Dengan Huge File (Text) Studi Kasus Restore SQL

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
https://pdsi.unisayogya.ac.id/bekerja-dengan-huge-file-text-studi-kasus-restore-sql/ 2022-08-13 12:26:38

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

  1. Buka PowerShell ISE sebagai administrator
  2. Jalankan perintah wsl --install
  3. Setelah instalasi selesai, reboot komputer
  4. 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

  1. Terdapat file backup sql berukuran 20GB
  2. Proses backup dengan perintah mysql -uuser -p --database=skema < file.sql
  3. Proses backup sudah berjalan 15 jam, tetapi berhenti di tengah jalan

Mitigasi

  1. Lihat pesan error terakhir sebelum keluar, misalnya error ketika insert ke tabel moodle_question_attempt_steps
  2. Jalankan perintah select * from moodle_question_attempt_steps order by id desc limit 0,10 dan catat id terbesarnya, misalnya 9208970
  3. 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)
  4. Buka WSL.exe, kemudian jalankan perintah sesuai dengan informasi yang sudah didapatkan di atas:
    csplit file.sql 15823 -f part
    rm part00
  5. Jalankan kembali proses backup dengan meneruskan proses meskipun ada error (opsi --force) dengan file part01
    mysql --force -uuser -p --database=skema < part01
  6. Periksa kembali apakah ada id yang telewat pada eksekusi baris pertama part01 apabila ada pesan error Duplicate entry

Demikian, semoga bermanfaat. [admin]

Sumber:

https://pdsi.unisayogya.ac.id/feed/rss2/

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.