Home » Linux, server

Shell script untuk backup MySQL dan InnoDB bagi Cpanel server

3 June 2017 No Comment

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.

#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

Script untuk backup database InnoDB

#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

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

#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!"


Leave your response!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This is a Gravatar-enabled weblog. To get your own globally-recognized-avatar, please register at Gravatar.