Shell script untuk backup MySQL dan InnoDB bagi Cpanel server

mysql
Shell script yang aku biasa pakai untuk backup MySQL database ataupun InnoDB database untuk kegunaan sendiri ataupun sesiapa yang memerlukan.  Kalau setakat nak dump 1-2 database command ‘mysqldump’ dah cukup. Tapi macam mana pulak yang ada beratus database dalam 1 server. Penat la nak dump semua kalau tak ada script yang berguna macam ni.

Since aku dah biasa pakai script ni memang memudahkan kerja untuk dump semua database sekaligus. Database akan disimpan dalam folder yang kita define sendiri dalam bentuk *.sql.

Disertakan juga script untuk backup database InnoDB SAHAJA. Ianya berguna jikalau InnoDB crash dah menyebabkan MySQL database server down.  Ianya boleh digunakan kemudiannya untuk recreate balik ibdata dengan ib_logfile. Turut disertakan script untuk restore database. Script ini perlu diletak dalam folder output(dimana database backup diletak). Pastikan juga folder backup tersebut dibuat dahulu. Pastikan juga bash script ada executable permission.

Script juga boleh pakai untuk server yang tak ada Cpanel.

[bash]
#Script to backup whole MySQL database. Remove comment if not root and need to define password.
#!/bin/bash

#USER=”root”
#PASSWORD=”n8=?JBw*oJqlG,DH”
OUTPUT=”/mysqlbackup/”

rm “$OUTPUT/*sql” > /dev/null 2>&1

#databases=`mysql -u $USER -p$PASSWORD -e “SHOW DATABASES;” | tr -d “| ” | grep -v Database`
databases=`mysql -e “SHOW DATABASES;” | tr -d “| ” | grep -v Database`

for db in $databases; do
if [[ “$db” != “information_schema” ]] && [[ “$db” != _* ]] ; then
echo “Dumping database: $db”
# mysqldump –user=$USER –password=$PASSWORD –databases $db > $OUTPUT/$db.sql
mysqldump –databases $db > $OUTPUT/$db.sql

echo “Sleep for 10 seconds”
sleep 10
echo “wakeup and run again”
fi
done
[/bash]

Script untuk backup database InnoDB

[bash]
#Script to backup InnoDB database. Remove comment if not root and need to define password.
#!/bin/bash

#USER=”root”
#PASSWORD=”07d9ukwxbiq7″
OUTPUT=”/mysqlinnodb/”

rm “$OUTPUT/*sql” > /dev/null 2>&1

databases=`mysql -N mysql -e “SELECT table_schema, table_name FROM INFORMATION_SCHEMA.TABLES WHERE engine = ‘innodb’;” | awk ‘{print $1}’ | sort | uniq`

for db in $databases; do
if [[ “$db” != “information_schema” ]] && [[ “$db” != _* ]] ; then
echo “Dumping database: $db”
# mysqldump –user=$USER –password=$PASSWORD –databases $db > $OUTPUT/$db.sql
mysqldump –databases $db > $OUTPUT/$db.sql
echo “Sleep for 10 seconds”
sleep 10
echo “wakeup and run again”
fi
done
[/bash]

Script untuk restore perlu diletak dalam folder dimana database backup diletak.

[bash]
#Script to restore database. Remove comment if not root and need to define password.
#!/bin/bash

# USER=”root”
# PASSWORD=”07d9ukwxbiq7″

echo “Restoring Databases….”

for SQL in *.sql
do
DB=${SQL/\.sql/}
echo restoring $DB
# mysql -u $USER -p$PASSWORD $DB < $SQL
mysql $DB < $SQL

echo Done $DB >> Databaserestore.txt
sleep 5
done
echo “……Complete ALL DB!”
[/bash]

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.