Advertisement
pemakanwortel

Membuat Skrip Auto Backup MySQL/Mariadb

Jan 18th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. Cara simpelnya seperti berikut:
  2. mysqldump -u root -p'PasswordAnda' --all-databases > dbbackup.sql
  3.  
  4. Cara Kompleks:
  5. Jika Anda membutuhkan pencadangan tiap-tiap database dalam satu berkas masing-masing, Anda bisa mencontoh skrip di bawah ini:
  6. Pertama-tama kita buat dahulu direktori misalnya di /backup, lalu kemudian buat berkas bernama db-backup.sh:
  7. $ sudo mkdir /backup
  8. $ sudo touch /usr/bin/db-backup.sh
  9. $ sudo chmod +x /usr/bin/db-backup.sh
  10. $ sudo nano /usr/bin/db-backup.sh
  11.  
  12. Kemdian, masukan skrip di bawah ini:
  13. ---------------------------------------------------------------------
  14. #!/bin/bash
  15.  
  16. DB_USER="root"
  17. DB_PASSWORD="PasswordAnda"
  18. DB_PATH_BACKUP="/backup"
  19.  
  20. /usr/bin/mysql -u $DB_USER --password=$DB_PASSWORD -e 'show databases' | \
  21. /usr/bin/awk '{print $1}' | \
  22. /bin/grep -v "Database\|information_schema\|performance_schema" | \
  23. /usr/bin/xargs -i{} \
  24. /usr/bin/mysqldump -u $DB_USER --password=$DB_PASSWORD \
  25. --opt -Q --result-file=$DB_PATH_BACKUP/{}-`date +%F-%I%p`.sql {}
  26.  
  27. gzip -q $DB_PATH_BACKUP/*.sql
  28. ---------------------------------------------------------------------
  29.  
  30. Penjelasan Skrip
  31.  
  32. Pertama-tama kita mengeset beberapa variabel yang mana nanti digunakan untuk perintah selanjutnya, untuk mempermudah jika kita ingin mengubah tujuan (path) ataupun username dan password dari MySQL/Mariadb.
  33.  
  34. /usr/bin/mysql -u $DB_USER --password=$DB_PASSWORD -e 'show databases' menampilkan seluruh isi database dalam MySQL/Mariadb.
  35.  
  36. Kemudian diapit oleh pipeline | yang mana digunakan untuk memindahkan output untuk input pada perintah lainnya, dan diapit dengan tanda backslash \ yang berarti untuk meringkaskan skrip agar kita bisa menuliskannya digaris baru.
  37.  
  38. Kemudian output dari pipeline diteruskan untuk memanggil awk yang langsung menerjemahkan hasil dari perintah show databases ke bentuk karakter.
  39.  
  40. Kemudian diteruskan lagi dengan grep -v yang berarti menampilkan isi kecuali kata-kata Database, information_schema, dan performance_schema. Terakhir kita memanfaatkan xargs untuk menjalankan perintah dari output grep agar mysqldump seakan mengeksekusi banyak perintah. Dan setelahnya, semua berkas dikompres menggununakn gzip.
  41.  
  42. Crontab
  43.  
  44. Jika kita ingin menggunakan skrip di atas menjadi otomatis dieksekusi pada tiap-tiap waktu. Kita perlu mengaturnya di crontab caranya adalah sebagai berikut:
  45. $ sudo crontab -e
  46. Dan masukan seperti berikut:
  47.  
  48. Jika Anda menggunakan skrip pertama:
  49. 30 0 * * * /usr/bin/mysqldump -u root -p'PasswordAnda' --all-databases > dbbackup.sql
  50. Jika Anda menggunakan skrip kedua:
  51. 30 0 * * * /usr/bin/db-backup.sh
  52.  
  53. Penjelasan Skrip:
  54. 30 0 * * * berati dilakukan setiap hari pada jam 00:30. Adapun format crontab adalah sebagai berikut:
  55. 30 0 * * *
  56. minute hour day month week
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement