Mekanisme Backup & Sinkronisasi di Server Linux
( Pencadangan Otomatis DB ke Google Drive & Penghapusan Otomatis File cadangan lama)

1. Pendahuluan

Dokumen ini menjelaskan cara melakukan pencadangan otomatis basis data (mysql) dari server (Linux) ke Google Drive menggunakan rclone

Mengapa kita perlu mencadangkan data kita?

 Jawabannya adalah karena penting, ya sangat penting untuk memiliki cadangan dalam hal apapun terutama data.  Katakanlah "jika" sesuatu yang buruk terjadi pada aplikasi kita dalam proses produksi, tanpa adanya cadangan kita akan membutuhkan lebih banyak waktu & usaha untuk mereplikasi kondisi tersebut atau untuk memperbaiki masalah tersebut, dan seterusnya. 

 Lalu, mengapa kita perlu mencadangkan data kita di dua tempat yang berbeda (di server dan Google Drive)?

Maka jawaban saya adalah, dengan mengosongkan/menghemat beberapa ruang di server, berarti menghemat lebih banyak biaya karena kita memiliki beberapa ruang "kosong" di Google Drive. Dalam dokumen ini, kami menggunakan rclone sebagai perangkat lunak pihak ketiga. 

  Apa itu rclone? Mengapa rclone?

Rclone adalah program command line untuk mengelola file di penyimpanan cloud. Program ini cukup populer sebagai alat bantu utama bagi siapa saja yang menggunakan penyimpanan cloud di lingkungan bisnis, saya menyebutnya sebagai jembatan antara server kami dan server cloud (Google Drive). Program ini juga tersedia untuk berbagai sistem operasi seperti linux, Windows, MacOS, dan lain-lain. Cukup untuk perkenalan, mari kita mulai.

2. Menghubungkan Google Drive ke Server

 Pertama, kita harus menyiapkan koneksi antara server kita dan Google Drive.

a.     Menginstal rclone:
curl https://rclone.org/install.sh | sudo bash

Backup & Sync Mechanism in Linux Server

*Pastikan instalasi telah selesai, dan Anda mendapatkan pesan sukses.

b.    Mengatur konfigurasi rclone:
rclone config

rclone config

 

Sebagai contoh, kita ingin membuat koneksi baru, tekan n lalu enter. Setelah itu kita perlu menentukan nama, sebut saja "g-drive" lalu enter.

Mekanisme Backup & Sinkronisasi di Server Linux

 

Setelah memberikan nama koneksi, akan ada list penyimpanan:

Mekanisme Backup & Sinkronisasi di Server Linux

 

Karena kita ingin menggunakan Google Drive, ketik saja 16 lalu enter. Ini akan menanyakan id klien Google Drive dan rahasia klien. Cukup tekan enter untuk menerima default.

Mekanisme Backup & Sinkronisasi di Server Linux

Langkah selanjutnya, rclone akan meminta izin untuk mengakses Google Drive Anda, cukup ketik 1 lalu enter.

 Ini akan meminta id folder root & Credentials Service Account. Cukup tekan enter untuk menerima nilai default.

Mekanisme Backup & Sinkronisasi di Server Linux

Pada prompt "Edit advanced config", ketik n atau tekan enter. Pada menu " Use auto config" (Gunakan konfigurasi otomatis), tekan n lalu tekan enter.

Mekanisme Backup & Sinkronisasi di Server Linux

 Setelah itu, Anda akan mendapatkan tampilan seperti ini:

Mekanisme Backup & Sinkronisasi di Server Linux

Salin link yang disediakan dan buka di browser Anda, pilih akun yang akan dihubungkan, lalu klik Izinkan:


Mekanisme Backup & Sinkronisasi di Server Linux Mekanisme Backup & Sinkronisasi di Server Linux

Setelah Anda mengeklik Izinkan, Anda akan mendapatkan tampilan seperti ini. Salin kode verifikasi dan tempelkan ke terminal Anda, lalu masukkan:

Mekanisme Backup & Sinkronisasi di Server Linux

 Pada prompt " Configure this as a team drive" (Konfigurasikan ini sebagai drive tim), ketik n lalu tekan enter. Pada menu " Yes, Edit, Delete" ketik y, lalu tekan enter.

Mekanisme Backup & Sinkronisasi di Server Linux

 Setelah semua pengaturan ini, Anda akan melihat sesuatu seperti ini. Ini adalah konfigurasi terakhir, cukup ketik q untuk keluar.

Mekanisme Backup & Sinkronisasi di Server Linux


3. Pencadangan Otomatis Basis Data mysql (Server & Google Drive)

 Untuk saat ini, Google Drive telah terhubung ke server Anda. Selanjutnya kita akan menulis skrip untuk membuat cadangan otomatis database mysql ke Google drive. Gunakan root, dan masuk ke direktori /.

Mekanisme Backup & Sinkronisasi di Server Linux

 Buat file skrip shell (.sh) di direktori root menggunakan editor favorit Anda. 

Ketik: nano backup.sh

Mekanisme Backup & Sinkronisasi di Server Linux

Salin skrip di bawah ini ke dalam backup.sh Anda:

#!/bin/bash
##this script will backup mysql and upload it to google drive
##directory name
dirname=$1;
##database name
database=$2;
##database username
dbuser=$3;
##database password
dbpass=$4;
## rclone remote name
rcloneRemoteName=$5;
##google drive folder name
gdrivefoldername=$6;
##condition to check folder exist or not
if [ ! -d "$dirname" ]
then
##create directory
mkdir ./$dirname
##dump mysql database on server
mysqldump -u $dbuser -p$dbpass $database | gzip>"./$dirname/$database($(date +\%Y_\%m_\%d_\%H)).sql.gz"
##wait for 10 seconds
sleep 10
##upload it to google drive
rclone copy "./$dirname/$database($(date +\%Y_\%m_\%d_\%H)).sql.gz" $rcloneRemoteName:$gdrivefoldername
##if folder already exist
else
##dump mysql database on server
mysqldump -u $dbuser -p$dbpass $database | gzip>"./$dirname/$database($(date +\%Y-\%m-\%d-\%H)).sql.gz"
##wait for 10 seconds
sleep 10
##upload it to google drive
rclone copy "./$dirname/$database($(date +\%Y-\%m-\%d-\%H)).sql.gz" $rcloneRemoteName:$gdrivefoldername
##delete 10 days older file on server to save disk space(this command is optional)
find ./$dirname -mtime +10 -type f -delete
fi
exit 0;

Mekanisme Backup & Sinkronisasi di Server Linux


Ref: https://gist.github.com/mahisat/757af810bebc2ac80817bb1c32b87776

Simpan & keluar. Jangan lupa untuk membuat backup.sh dapat dieksekusi dengan menambahkan izin. 

Ketik:

chmod +x backup.sh

Setelah backup.sh  Anda executable, mari kita uji coba menjalankan skrip.

Ketik:

 ./backup.sh mysqlbackup test_db root pass123 drive BackupFolder

Mekanisme Backup & Sinkronisasi di Server Linux

 Setelah menjalankan perintah, ketik "ls" Anda akan menemukan folder mysqlbackup yang Anda masukkan sebagai parameter. Sekarang masuk ke Google drive, periksa folder Anda, Anda akan menemukan Backed Up Database di dalam BackupFolder

Langkah selanjutnya kita akan mengotomatisasi skrip kita menggunakan crontab, mari kita konfigurasikan sebuah job baru.
Ketik: 

nano /etc/crontab

Kemudian salin baris ini:

0 0     * * *   root /backup.sh mysqlbackup db_name db_user db_password connection_name gdrive_target_folder

db_name: your database name

db_user : your database user

db_password: your database password

connection_namerclone connection name that you already defined ex: g-drive

gdrive_target_folder: folder to save backup file in Google Drive

Mekanisme Backup & Sinkronisasi di Server Linux

 Pada perintah di atas 0 0 * * * mengacu pada waktu ketika Anda ingin membackup file sql ke server. Di sini 0 0 * * * berarti backup setiap hari akan dilakukan pada pukul 00.00. Sekarang, Anda telah berhasil menyelesaikan pencadangan otomatis database MySQL ke Google Drive.

4. Menghapus Otomatis File Backup lama

 Setelah berhasil menjalankan backup otomatis, kita akan membahas bagaimana cara menghapus file backup yang lama? Karena pekerjaan pencadangan berjalan setiap hari maka akan ada banyak file cadangan, yang berarti akan menggunakan lebih banyak penyimpanan di server Anda. Tentu saja Anda tidak menginginkannya.

Gunakan:

find ~/mysqlbackup -type f -mtime +90 –delete

Baris perintah di atas akan menghapus berkas-berkas di dalam mysqlbackup yang sudah berumur lebih dari 90 hari. Mari kita membuatnya otomatis dengan menambahkan pekerjaan baru di dalam crontab. Pertama, buatlah berkas yang dapat dieksekusi. 

 Ketik:

nano auto-delete.sh

Mekanisme Backup & Sinkronisasi di Server Linux

 Salin baris perintah untuk menghapus file (di atas) ke dalamnya, lalu simpan.

Mekanisme Backup & Sinkronisasi di Server Linux

Sekarang, skrip Anda sudah siap. Mari tambahkan pekerjaan baru ke dalam crontab nano/etc/crontab

Gunakan:

 0  0    1 * *   root    /auto-delete.sh

Mekanisme Backup & Sinkronisasi di Server Linux

 Seperti yang bisa kita lihat di atas, pekerjaan untuk menghapus file secara otomatis berbeda dengan pencadangan otomatis. Ini akan menjalankan pekerjaan setiap hari pertama setiap bulan. Catatan, ini hanya akan menghapus file cadangan di dalam penyimpanan server Anda, file cadangan di dalam Google Drive Anda tidak akan terpengaruh. 

 Jika Anda ingin membuat file cadangan di server Anda disinkronkan dengan file cadangan di Google Drive, ada cara untuk melakukannya. Menggunakan sinkronisasi rclone, salah satu fitur rclone. Bagaimana caranya?

rclone sync ~/mysqlbackup connection_name:gdrive_target_folder

Ganti:

connection_name: your gdrive_target_folder connection that was already created

grdive_target_folder: nama folder Google Drive Anda

Anda dapat menjalankan perintah secara manual, atau secara otomatis setelah baris perintah untuk menghapus file lama. Bagaimana caranya?

Edit file skrip hapus otomatis (auto-delete.sh)Edit file skrip hapus otomatis (auto-delete.sh) Anda:  nano auto-delete.sh Anda:  nano auto-delete.sh

Salin baris perintah sinkronisasi di atas, tempelkan ke dalamnya dan simpan.

Mekanisme Backup & Sinkronisasi di Server Linux

 Berdasarkan skrip di atas, setelah pekerjaan crontab dijalankan untuk menghapus file secara otomatis, ia akan menjalankan dua perintah. 

Software House & Odoo Implementor Yogyakarta