22 poin oleh baeba 2025-05-02 | 2 komentar | Bagikan ke WhatsApp

Pendahuluan

  • Jika basis data SQLite disalin langsung dengan rsync, ukuran file bisa membengkak karena indeks dan faktor lain, sehingga menjadi lambat dan kurang andal.
  • Karena itu, diajukan metode menggunakan .dump untuk mengompresi dan memulihkan dalam format berbasis teks.

Pembahasan

  • Perintah .dump mengekspor seluruh DB sebagai teks SQL, dan indeks digantikan oleh satu baris perintah sehingga ukuran file menjadi lebih kecil.

    sqlite3 my_database.db .dump > my_database.db.txt  
    
  • File teks juga bisa diperkecil lagi dengan kompresi gzip:

    sqlite3 my_database.db .dump | gzip -c > my_database.db.txt.gz  
    
  • Alurnya diubah menjadi membuat versi terkompresi di server, menyalinnya ke lokal, lalu memulihkannya:

    ssh username@server "sqlite3 db.db .dump | gzip -c > db.txt.gz"  
    rsync --progress username@server:db.txt.gz .  
    gunzip db.txt.gz  
    cat db.txt | sqlite3 restored.db  
    
  • File DB asli 3.4GB → dump teks 1.3GB → hasil kompresi gzip 240MB, berkurang sekitar 14 kali.

  • Metode rsync lama bisa memunculkan error database disk image is malformed jika DB berubah saat transfer berlangsung.

  • Metode dump teks tidak memiliki risiko perubahan isi setelah proses penyalinan dimulai, sehingga memungkinkan backup yang konsisten.

Kesimpulan

  • Metode .dump + kompresi + pemulihan meningkatkan kecepatan dan keandalan saat mentransfer SQLite berukuran besar.
  • Ini sangat efektif terutama untuk DB dengan banyak indeks, serta dapat mengurangi kemungkinan kegagalan transfer atau kerusakan.
  • Jika Anda sering menangani SQLite berukuran besar, ini adalah optimasi praktis yang layak diterapkan.

2 komentar

 
ng0301 2025-05-02

Saya penasaran dengan latar belakang mengapa pekerjaan seperti ini diperlukan.

 
winterjung 2025-05-02

Di artikel aslinya, ini disebut untuk backup & analisis. Mungkin yang dimaksud adalah ingin menganalisisnya secara lokal dengan sesuatu seperti DuckDB.