Script Auto Backup Restore MYSQL Dua Server dengan Banyak Database

2015 January 27 at 11:01 am Leave a comment

Saudara semuanya, pernah punya masalah untuk auto restore dari server yang berdeda di dalam database MYSQL

Misal kita ingin membuat sekenario sebagai berikut:

  1. Server satu sebagai Prod/live yang satu lagi untuk Develop.
  2. Server Satu Prod/Live Satu Stand By, dengan database yang mendekati sama antara Live dan Bakup/ Stand By

Misal utuk sekenario satu Kadang kalanya ketika kita ingin membuat suatu perubahan pada program php-nya di server Develop  untuk mengetes-nya kita menginginkan kondisi database-nya mendekati atau bahkan sama dengan yang Prod/Live. Atau untuk sekenario dua berapa lama waktu yang terbuang untuk melakuakn manual bakup and Restore jika kita menginginkan semirip mungkin kondisi satabasenya.

Untuk hal diatas kita harus melakukan backup terlebih dahulu “mysqldump -u UserName -pPassword  –routines –single-transaction DataBaseName>FileBackup_Name.sql -h IP_Address” dari database yang di Prod kemudian Restore database ke local “mysql -u User_Name -pPassword DataBaseName<FileBackup_Name.sql“.

Disini terlihat ketidak efesiensian karena harus melakukan dua perintah, dan mungkin kita harus mengecek terus menerus apakah sudah selesai atau belum hasil backup-nya “padahal kita bisa melakukan hal2 produktif lain selama kita menunggu backcup”. Baru kemudian bisa meresorenya lagi, belum lagi jika database yang ada banyak😦

Untuk hal ini diperlukan solusi script linux sederhana yang nantinya dijalankan crontab dengan sekenario terserah berapa rapat schedule, di script ini juga akan dibuat agar bisa menangani lebih dari satu database sesuai yang ingin kita auto restore yang disimpan pada variable array, berikut script dan keterangan detailnya :

#!/bin/bash

DBS=”DBName1 DBName2 DBName3 DBNameDST”
for db in $DBS
do
echo $(date +%Y”-“%m”-“%d” “%H”:”%M”:”%S) “Start Backup ” $db >> /data/script/log/mysqlautorestore.log
mysqldump –routines -u app_usr -p123456 -h172.16.10.69 $db | mysql -u app_usr -p123456 $db
if [ $? -eq 0 ] #$? variable untuk menampung status command, jika ‘0’ artinya success
then
echo $(date +%Y”-“%m”-“%d” “%H”:”%M”:”%S) “, Done” >> /data/script/log/mysqlautorestore.log
else
err_msg= “$2″
echo $(date +%Y”-“%m”-“%d” “%H”:”%M”:”%S) $db”, it failed” $? $err_msg >> /data/script/log/mysqlautorestore_err.log
fi
done

Keterangan:

DBS, adalah variable array untuk menyimpan nama-nama database yang akan kita auto restore, syntax-nya setiap nama Database dipisahkan dengan spasi, contoh Database1 Database2 dst… .

Kemudian Array DBS di-looping for db in $DBS“artinya variable db akan menampung tiap-tiap isi array DBS“, dengan menjalankan beberapa perintah sbb.:

  • Tulis waktu Mulai jalankan command  echo $(date +%Y”-“%m”-“%d” “%H”:”%M”:”%S) “Start Backup ” $db >> /data/script/log/mysqlautorestore.log ke dalam log file mysqlautorestore.log
  • jalankan perintah mysqldump –routines -u app_usr -p123456 -h172.16.10.69 $db | mysql -u app_usr -p123456 $db. Disini artinya hasil dari command mysqldump dari server 172.16.10.106 langsung menjadi input command mysql ke server local dengan nama database sama $db, dengan demikian kita menghemat waktu karena output langsung jadi input satu kali jalan, dan tidak perlu mengecek terus menerus status backup.
  • jika sukses if [ $? -eq 0 ], maka akan membuat log ke file mysqlautorestore.log
  • jika fail akan tulis ke file mysqlautorestore_err.log

Help…..!: Saya belum nemuin cara nangkap error massage yang ditimbulkan jika bagian command diatas error untuk nambahin keterangan di log error-nya. Jika para pembaca ada yang bisa kasih jawabnnya bisa share ya  cheer😀

Entry filed under: MYSQL, Serba Serbi Linux. Tags: , .

Bagaimana Cara Debug di SAP-SmartForms Commands out of sync; you can’t run this command now

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Categories


%d bloggers like this: