Bicara mengenai database, seorang database administrator harus mengetahui seluk beluk dari database, salah satunya adalah proses backup dan restore database. Database tanpa backup adalah suatu hal yang sangat fatal dikarenakan jika suatu waktu terjadi sesuatu pada database production maka hilang sudah semua harapan :D. Pada artikel ini, penulis akan mencoba membuat sebuah backup data lalu kita akan restore.
Perlengkapan Project
Untuk membuat virtual database maka kita akan menggunakan docker, bagi anda yang belum mengerti tentang docker, silakan baca artikel Belajar Docker. Silahkan jalan docker anda, jika anda pengguna linux maka secara default service docker akan berjalan, jika anda pengguna osx maka anda harus menjalankan docker terlebih dahulu. Berikut adalah arsitektur yang akan kita gunakan untuk membuat backup dan restore database mongodb.
Dari gambar diatas, kita dapat melihat bahwa nantinya akan ada 2 container, dimana container tersebut berisi database production dan database backup. Biasanya antara database production dan backup berada pada server yang berbeda.
Membuat Backup Database
Sebelum kita membuat backup database, kita akan melakukan setup docker terlebih dahulu, silahkan buka terminal anda, lalu jalankan perintah berikut untuk mendownload image mongodb.
Setelah selesai, silahkan anda membuat docker-compose.yml
karena kita akan menggunakan docker compose. Isikan source code seperti berikut.
Dari konfigurasi diatas dapat kita lihat bahwa container mongodb-backup membutuhkan dependency dari mongodb-production. Untuk menjalankan kedua docker diatas, silahkan gunakan perintah berikut.
Jika berhasil maka di terminal anda akan muncul seperti berikut.
Langkah selanjutnya kita akan membuat file shell script, bagi anda yang belum paham shell script, silahkan baca pada artikel Belajar Shell Script. Silahkan buat sebuah file dengan nama mongodb-backup.sh
, kemudian isikan codingan seperti berikut.
Untuk parameter environment seperti nama database, username, password dan lain - lain kita langsung membuat per variabel sehingga nantinya hanya perlu diubah pada bagian variabel saja. Untuk melakukan backup, kita akan menggunakan mongodump
, dimana mongodump ini mempunya beberapa parameter diantaranya adalah database yang diremote, username, password, host, port dan folder backup. Karena file shell script ini akan kita gunakan di dalam container docker maka kita harus melakukan setting ulang dockernya. Silahkan buat sebuah file dengan nama Dockerfile
kemudian isikan codingan seperti berikut.
Setelah selesai, sekarang jalankan perintah berikut untuk menghapus container yang lama.
Setelah selesai, kemudian kita akan membuat image baru dengan perintah berikut.
Jika berhasil maka akan muncul output seperti berikut.
Karena ada perubahan konfigurasi, maka kita harus melakukan perubahan pada file docker-compose.yml
seperti berikut.
Lalu jalankan kembali docker compose dengan perintah.
Test Backup Data
Setelah selesai melakukan konfigurasi, langkah selanjutnya kita akan mencoba mengakses database mongodb yang versi production dengan perintah berikut.
Kemudian silahkan akses cli mongodb dengan perintah.
Kemudian jalankan perintah berikut untuk mengakses / membuat database.
Kemudian untuk membuat sebuah collection, silahkan jalankan perintah berikut.
Untuk melakukan insert, silahkan jalankan perintah berikut.
Untuk melihat data di mongodb, anda dapat menggunakan perintah berikut.
berikut adalah hasil outputnya.
Setelah selesai, sekarang saatnya untuk membuat backup database, silahkan akses cli mongodb yang versi backup dengan perintah berikut.
Secara otomatis kita akan berada di folder backup-restore
, di dalam folder tersebut terdapat file mongodb-backup.sh
yang telah kita buat, akan tetapi host yang digunakan pastinya akan berbeda dikarenakan berbeda container, untuk mengecek host database mongodb versi production silahkan jalankan perintah berikut.
Berikut adalah hasil outputnya.
Kemudian silahkan buka kembali file mongodb-backup.sh
lalu ubah konfigurasinya seperti berikut.
Setelah selesai, silahkan berikan hak akses untuk execute dengan perintah.
Kemudian jalankan file tersebut dengan perintah.
Jika berhasil maka akan muncul output seperti berikut.
Untuk memastikan bahwa database anda telah di backup, silahkan cek path folder backup anda, tadinya kita membuat path back up database di /var/database-backup
, berikut adalah hasilnya jika berhasil.
Melakukan Restore Database
Pada tahap sebelumnya kita telah berhasil membuat backup database, nah sekarang kita akan melakukan restore database, sebelumnya, untuk mempermudah kita akan menggunakan Robomongo untuk mengakses database production. Silahkan download dan lakukan instalasi, jika telah selesai, silahkan buka robomongo anda, lalu lakukan konfigurasi seperti berikut.
mengapa kita menggunakan port 27000 ? ya dikarenakan konfigurasi forward port yang ada pada docker. Sehingga setiap kita mengakses port 27000 maka docker akan melakukan forward ke port 27017. Jika anda melakukan akses database dan collection nya maka akan muncul output seperti berikut.
Sekarang silahkan klik kanan di databasenya kemudian pilih menu drop database, maka secara otomatis database dihapus, nah sekarang kita akan melakukan restore. Silahkan akses terminal untuk database mongodb versi backup. Kemudian jalankan perintah berikut untuk melakukan restore database.
Jika berhasil maka akan muncul output seperti berikut.
Output diatas menandakan bahwa database telah berhasil direstore :D. Sekian artikel mengenai Membuat Backup dan Restore Pada MongoDB, semoga bermanfaat dan terima kasih :)