Backup Otomatis Database MySQL atau MariaDB
Sebagai sistem administrator, kepentingan membackup database aplikasi berbasis web secara otomatis apalagi dengan hosting di server dedicated membuat saya harus memutar otak. Backup otomatis database MySQL atau
MariaDB dengan webmin yang biasanya saya pakai tidak bisa berjalan dengan baik. Akhirnya saya mencari dan ketemu script untuk menjalankan backup secara otomatis tiap jam 1 dini hari. Script backup otomatis database mysql atau mariadb ini membuat folder backup tiap hari dan hanya menyimpan file 14 hari terakhir. bisa diubah sesuai dengan kebutuhan. Show
Copy script berikut: #!/bin/bash # Basic configuration: datestamp e.g. YYYYMMDD DATE=$(date +"%Y%m%d") # Location of your backups (create the directory first!) BACKUP_DIR="/backup/mysql" # MySQL login details MYSQL_USER="root" MYSQL_PASSWORD="YOURSECUREPASSWORD" # MySQL executable locations (no need to change this) MYSQL=/usr/bin/mysql MYSQLDUMP=/usr/bin/mysqldump # MySQL databases you wish to skip SKIPDATABASES="Database|information_schema|performance_schema|mysql" # Number of days to keep the directories (older than X days will be removed) RETENTION=14 # ---- DO NOT CHANGE BELOW THIS LINE ------------------------------------------ # # Create a new directory into backup directory location for this date mkdir -p $BACKUP_DIR/$DATE # Retrieve a list of all databases databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"` # Dumb the databases in seperate names and gzip the .sql file for db in $databases; do echo $db $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz" done # Remove files older than X days find $BACKUP_DIR/* -mtime +$RETENTION -delete simpan dengan nama histla_mysqlbackup.sh pada folder /usr/local/sbin/. Cek juga bahwa folder /backup/mysql sudah ada, atau jika ingin menyimpan di folder lain bisa diubah. Kemudian ubah permissionnya menjadi 755 chmod 755 histla_mysqlbackup.sh Buat sebuah cron job setiap jam 1 dini hari menjalankan backup nano /etc/crontab 0 1 * * * root /usr/local/sbin/histla_mysqlbackup.sh Selanjutnya tinggal restart service cron jobnya service cron restart Demikian cara backup otomatis database mysql atau mariadb dengan mudah dan cepat. Sumber debian,Linux,sysadmin PendahuluanMySQL atau pun MariaDB adalah salah satu database yang paling banyak digunakan. Apalagi jika menggunakan jasa shared hosting di Indonesia, kebanyakan pasti menggunakan MySQL mau pun MariaDB secara default. Ketika situs/maupun aplikasi web kita telah tumbuh semakin besar, data yang tersimpan dalam database menjadi suatu asset yang sangat berharga. Wajib kita lakukan backup secara berkala agar jika terjadi sesuatu, kita tidak menyesal di kemudian hari. Betapa banyak orang yang kebingungan karena database-nya korup, tidak sengaja terhapus, atau di-hack orang dan mereka tidak memiliki backup-nya? Pada artikel ini, kami akan mendemonstrasikan cara membuat backup database MySQL mau pun MariaDB secara berkala menggunakan cron job. Untuk pengguna CPanel, kalian tetap bisa mengikuti arikel ini karena di CPanel pun terdapat menu pengaturan cron job. Baca juga: MySQL vs MariaDB. Mana yang harus dipilih? Sekilas Tentang Cron JobCron Job adalah aplikasi atau layanan yang memungkinkan kita untuk melakukan suatu tugas tertentu secara terjadwal tanpa harus melakukannya secara manual. Misal: saya ingin melakukan duplikat data dari situs A ke situs B setiap jam 1 malam. Maka saya bisa menggunakan cron job. Cron job bisa diinstruksikan untuk mengerjakan satu tugas tertentu satu kali saja di waktu yang ditentukan, atau ia juga bisa dikonfigurasikan untuk melakukan pekerjaan yang sifatnya repetitif atau berulang.
Ilustrasi 1: pengaturan dan konfigurasi cron job dengan aplikasi Misalkan saya ingin mengeksekusi perintah
Konfigurasi Cron Job dengan crontabUntuk mengkonfigurasi Cron Job di linux, kita perlu menggunakan aplikasi bernama UbuntuUntuk pengguna ubuntu, kita bisa langsung install
Arch LinuxDi arch linux, terdapat
beberapa aplikasi yang mengimplementasikan fungsi Atur hasil backup dengan format tanggal dan jam yang jelasKita akan menambahkan postfix tanggal dan waktu pada setiap file Berikut ini adalah perintah untuk mendapatkan tanggal dan jam pada linux dengan format Perintah di atas (ketika saya eksekusi) menghasilkan output berikut: Output tersebut sesuai dengan waktu ketika perintah Untuk perintah lengkap mem-backup mysql adalah sebagai berikut:
Katakanlah saya mempunyai variabel:
Maka perintah akhir yang saya eksekusi adalah:
Untuk info lebih lengkap tentang ekspor data mysql: silahkan baca cara import dan eksport data dari mysql via terminal. Backup PerjamDi atas kita telah membuat perintah untuk membackup mysql dengan output nama file yang berisi tanggal dan waktu backup. Sekarang kita akan mengkonfigurasi Edit Lalu pada baris paling bawah, tambahkan perintah berikut:
Statement di atas akan menginstruksi Backup Sekali SehariUntuk membackup sekali sehari pada pukul tertentu, kita hanya perlu mengisi bagian Misalkan setiap jam 00:00Untuk setiap jam
Misalkan setiap jam 2 pagiUntuk setiap jam
Untuk memudahkan konfigurasi waktu, anda bisa mengunjungi
crontab.guru. Di sana anda bisa mensimulasikan konfigurasi waktu Kompres Hasil Backup dengan GzipFile hasil backup mysql ukurannya bergantung pada ukuran data kita dalam database. Semakin banyak baris data di dalam database kita, maka hasil backup-nya pun juga akan semakin besar. Untuk mensiasati hal tersebut, kita bisa mengkompresnya menggunakan
software Anda bisa mengganti perintah backup mysql yang sudah kita lakukan di atas menjadi seperti ini:
Baca juga: Cara Kompres dan Ekstrak File .gz Di Linux Hapus file Backup yang lebih dari 10 hariBayangkan jika hasil file Untuk menghindari hal tersebut, kita bisa melakukan proses penghapusan data backup yang lebih dari 10 hari terakhir. Karena toh kita kemungkinan besar hanya membutuhkan data yang paling baru, data yang sudah lama sekali hanya akan memenuhi kapasistas storage jika terus kita simpan. Berikut adalah langkah-langkah menghapus file backup yang sudah lebih dari 10 hari. 1. List file backup terlebih dahuluContoh output milik saya. Terdapat 15 file dari tanggal 1 Januari 2020 sampai tanggal 15 Januari 2020. Nantinya kita hanya akan mengambil yang lebih dari 10 file terakhir.
2. Urutkan file secara descending berdasarkan namaUrutkan file di atas dengan perintah Output:
3. Skip file 10 file yang pertamaKita akan menampilkan file yang lebih dari 10 hari dengan menskip 10 baris pertama
dari hasil output perintah sebelumnya. Kita tambahkan perintah
Output:
Sekarang kita hanya memiliki 5 file saja dari tanggal 5 Januari 2020 sampai tanggal 1 Januari 2020. 4. Hapus file yang lebih dari 10 hariUntuk menghapus file yang lebih dari 10 hari. Kita tambahkan
5. Hapus file secara rutinUntuk menghapus file secara rutin, tambahkan perintah di atas di dalam
KesimpulanDatabase adalah salah satu aset paling mahal untuk suatu perusahaan. Maka dari itu wajib untuk di-backup secara berkala. Dengan memanfaatkan Ditambah lagi dengan beberapa tips bash shell, kita bisa menghapus file backup yang sudah lebih dari sekian hari sesuai dengan kebutuhan kita, agar |