Script Auto Backup Database
Bagi Administrator System terkadang direpotkan backup database dengan cara manual. Sedikit sebagai catatan saya pribadi saja dibawah ini ada contoh script auto backup untuk database postgresql ataupun mysql.
Script Auto Backup Mysql
1. Buat file dengan nama terserah, misal di /usr/local/etc/mysqlscript.sh , isikan seperti berikut.
#!/usr/local/bin/bash # Basic configuration: datestamp e.g. YYYYMMDD DATE=$(date +"%Y%m%d") # Location of your backups (create th directory first!) BACKUP_DIR="/backup" # MySQL login details MYSQL_USER="user" MYSQL_PASSWORD="password" MYSQL_HOST="localhost" # MySQL executable locations (no need to change this) MYSQL=/usr/local/bin/mysql MYSQLDUMP=/usr/local/bin/mysqldump # MySQL databases you wish to skip #SKIPDATABASES="Database|information_schema|performance_schema|mysql" SKIPDATABASES="Database" # Number of days to keep the directories (older than X days will be removed) RETENTION=7 # 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 -h$MYSQL_HOST -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"` ###databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST -e "SHOW DATABASES;"` # Dumb the databases in seperate names and gzip the .sql file for db in $databases; do echo $db $MYSQLDUMP --force -v --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD -h$MYSQL_HOST --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 -exec rm -rf {} \;
2. Chmod file tsb agar bisa di eksekusi.
# chmod +x mysqlscript.sh
3. Jangan lupa dibuat jadwal untuk cron di /etc/crontab. misal seperti dibawah ini untuk backup tiap jam 1 malam.
0 1 * * * root /usr/local/etc/mysqlscript.sh
4. Script backup mysql diatas bisa dimodifikasi sesuai kebutuhan.
Script Auto Backup Postgresql
1. Buat file dengan nama misal /usr/local/etc/postgresqlscript.sh
#!/usr/local/bin/bash DATE=$(date +"%Y-%m-%d") ##command postgre PG_DUMP=/usr/local/bin/pg_dump PSQL=/usr/local/bin/psql HOSTNAME=localhost USERNAME=pgsql BACKUP_DIR="/backup" # Number of days to keep the directories (older than X days will be removed) RETENTION=7 ##buat direktori berdasarkan date mkdir -p $BACKUP_DIR/$DATE echo "Direktoi sudah terbuat" ENABLE_PLAIN_BACKUPS="yes" ENABLE_CUSTOM_BACKUPS="yes" FULL_BACKUP_QUERY="select datname from pg_database where not datistemplate and datallowconn order by datname;" echo -e "\n\n Mulai Backup" echo -e "--------------------------------------------\n" for DATABASE in `$PSQL -h "$HOSTNAME" -U "$USERNAME" -At -c "$FULL_BACKUP_QUERY" postgres` do echo "Plain backup of $DATABASE" $PG_DUMP -Fp -x -O -h$HOSTNAME -U$USERNAME $DATABASE | gzip> "$BACKUP_DIR/$DATE/$DATABASE.sql.gz" echo "Custom backup of $DATABASE" $PG_DUMP -Fc -x -O -h$HOSTNAME -U$USERNAME $DATABASE> "$BACKUP_DIR/$DATE/$DATABASE.backup" done # Delete file yang lebih dari X hari #find $BACKUP_DIR/* -mtime +$RETENTION -exec rm -rf {} \; find $BACKUP_DIR/* -maxdepth 1 -mtime +$RETENTION -name -exec rm -rf '{}' ';'
2. Chmod file tsb agar bisa di eksekusi.
# chmod +x postgresqlscript.sh
3. Jangan lupa dibuat jadwal untuk cron di /etc/crontab. misal seperti dibawah ini untuk backup tiap jam 1 malam.
0 1 * * * root /usr/local/etc/postgresqlscript.sh
4. Script backup postgresql diatas bisa dimodifikasi sesuai kebutuhan.
Script-script contoh diatas hanya bisa berjalan di shell BASH. Silahkan dikembangkan sesuai kebutuhan dan keperluan masing-masing.
Sedikit contoh tambahan disini untuk syntax melakukan restore database postgresql dari file hasil backup melalui console dengan hostdb server ip 192.168.1.1 (bukan di localhost).
pg_restore -v -h192.168.1.1 -Uuserdb -W -dnamedb file-db.backup
Selamat berinovasi……salam
wah baru tau kalau ada cara untuk auto backup, terima kasih infornya pak
sama2 mas..silahkan diujicoba dan dikembangkan..
Mantaapp.. 😀 saya simpan dulu.
Silahkan mas
nice info.. semoga semakin berkembang blognya.
untuk orang non programmer sepertinya masih mengalami kesulitan Pak.
Adakah cara lain yang lebih sederhana, sehingga bisa dilakukan dengan mudah oleh orang non programmer?
terima kasih
Saya sndiri juga bkn seorang programer, tapi sy hanya sekedar script kiddies yg mencoba memahami setiap syntax2 program sesuai dengan fungsi dan kegunaannya. Tinggal bagaimana kita sendiri mau belajar.