- Back to Home »
- database , mysql »
- Backup dan Recovery MySQL
Posted by : Nur Rokhman
Senin, 17 September 2012
Backup dan Recovery merupakan suatu proses penyalinan dan perbaikan data untuk menghindari terjadinya kerusakan data. Hal ini mutlak diperlukan dalam administrasi database, dimana file backup ini nantinya akan menjadi master data yang sewaktu-waktu dibutuhkan. Proses backup pada database MySQL dapat dilakukan secara online maupun offline.
MERENCANAKAN & MEMPERSIAPKAN BACKUP
a. Menentukan waktu backup
Backup merupakan program rutin dan melihat kapan waktu yang tepat untuk proses backup. Jika database itu cukup besar dan sering berubah secara konstan setiap hari, maka sebaiknya direncanakan agar proses backup terjadi setiap hari sehingga data tersebut dapat tersimpan dengan baik. Namun, jika database itu tidak sering berubah setiap hari tidak perlu dilakukan backup setiap hari, bisa seminggu atau dua minggu sekali proses backup baru dilakukan.
b. Menamakan file backup
Seharusnya kita menamakan file backup secara teratur dan selalu memasukkan tanggal dimana backup terakhir dibuat. Misalnya nama database bernama blogDB dan dibackup pada tanggal 21 Juni 2009, sebaiknya diberikan nama file backup dengan nama blogdb-21062009.sql. Untuk penamaan ini tergantung dari administrator itu sendiri dan harus diperhatikan bahwa penamaan file backup tersebut juga sangat penting apalagi jika sering melakukan backup secara regular.
c. Menyimpan file backup
Membuat kopi dari file backup dan menyimpan file tersebut ke komputer lain atau ke penyimpan data yang lain seperti CD atau DVD.
MACAM-MACAM BACKUP
a. Backup satu database
Untuk membackup seluruh database maka format yang digunakan adalah :
# mysqldump -u -p [nama database] > [nama file].sql
Misal ingin membackup database blogDB dengan password ‘bahagia’ dari database MySQL dan jika sudah dibackup maka namanya adalah blogdb.sql, maka format diatas menjadi :
# mysqldump -u root -pbahagia blogDB > blogdb.sql
b. Backup tabel database
Untuk membackup satu atau lebih tabel yang ada dalam suatu database maka formatnya adalah sebagai berikut :
# mysqldump -u -p [nama database] [table1] [table2] … > [nama file].sql
Misal kita ingin membackup dua tabel coba1 dab coba2 dalam database blogDB, maka format perintah menjadi :
# mysqldump -u root -pbahagia blogDB coba1 coba2 > duabuahtabel.sql
c. Backup dua atau lebih database
Jika ingin membackup dua atau lebih database menjadi maka formatnya menjadi :
# mysqldump -u -p - -database [database1] [database2] … > [nama file].sql
Membackup database blogDB dan database mahasiswa digabung menjadi satu dengan nama dua_database.sql, maka formatnya menjadi :
# mysqldump -u root -pbahagia - -database blogDB mahasiswa > dua_database.sql
d. Backup seluruh database
Jika ingin membackup seluruh database maka formatnya sebagai berikut :
# mysqldump -u -p - -all-databases > [nama file].sql
e. Backup struktur data
Jika ingin membackup struktur databasenya saja tanpa mengikutsertakan data recordnya maka formatnya menjadi :
# mysqldump -u -p - -no-data [database] > [nama file].sql
Jika lebih dari satu database formatnya menjadi :
# mysqldump-u -p - -no-data - -database [database1][database2] > [nama file].sql
Jika mau membackup hanya data recordnya saja, maka formatnya :
# mysqldump -u -p - -no-create-info [database] > [nama file].sql
f. Backup Kompress database
Jika ingin mengkompress hasil backup database, maka formatnya :
# mysqldump -u -p [database] | bzip2 -c > [namafile].sql.bz2
# mysqldump -u -p [database] | gzip -c > [namafile].sql.gz
Misalnya ingin membackup database blogDB dan dikompress menggunakan bzip2 atau gzip, maka formatnya :
# mysqldump -u root -pbahagia blogDB | bzip2 -c > blogdb.sql.bz2
atau
# mysqldump -u root -pbahagia blogDB | gzip -c > blogdb.sql.gz
Jika ingin variasi backup seperti backup seluruh database, beberapa tabel maka hanya diubah sebelum tanda | dengan mengikuti pola format sebelumnya. Format untuk membackup seluruh database dengan hasil sudah dikompress.
# mysqldump -u root -pbahagia - -all-databases | bzip2 -c > all_database.sql.bz2
atau
# mysqldump -u root -pbahagia - -all-databases | gzip -c > all_database.sql.gz
g. Script untuk backup
Untuk mempermudah backup bisa menggunakan script dibawah ini :
#!/bin/sh
mysqldump - -all-database | gzip -c > /home/dado/all_database-`date -I`.sql.gz
MACAM-MACAM RESTORE
a. Restore database
Untuk restore database maka formatnya sebagai berikut :
# mysql -u -p [database] < [file backup].sql
Misal kita punya file blogdb.sql ingin direstore ke database formula maka formatnya menjadi :
# mysql -u root -pbahagia formula < blogdb.sql
b. Restore database hasil kompress
Jika file backupnya berupa kompressan, maka formatnya sebagai berikut :
# gunzip < [file backup] | mysql -u -p [database]
Misal bila ingin merestore file blogdb.sql.gz ke database formula, maka formatnya :
# gunzip < blogdb.sql.gz | mysql -u root -pbahagia formula
atau
# bunzip2 < blogdb.sql.bz2 | mysql -u root -pbahagia formula
RECOVERY
Meski bisa dikatakan database MySQL jarang sekali mengalami kerusakan, namun segala kemungkinan bisa terjadi seperti karena konflik atau yang lainnya.
a. Mengecek tabel
Untuk melakukan pengecekan tabel perlu dilakukan penjadwalan rutin agar memastikan tabel-tabel tersebut tetap dalam keadan kondisi stabil. Administrator bisa menggunakan perintah yang ada dalam MySQL itu sendiri memakai perintah Check Table.
Pengecekan pada suatu tabel bisa menggunakan format :
# check table [nama tabel] ;
Misal untuk cek tabel user dan alamat maka formatnya menjadi :
# check table user, alamat ;
b. Menggunakan mysqlcheck
Ini adalah tool untuk melakukan pengecekan tabel yang dijalankan diluar prompt MySQL dan dapat digunakan oleh semua user. Penggunaan mysqlcheck untuk melakukan pengecekan pada tabel bisa dilihat dibawah dimana tabelnya user_blog dengan database blogDB.
# mysqlcheck -u root -pbahagia -c blogDB user_blog
Sedangkan kalau digunakan untuk lebih dari satu database akan menjadi :
# mysqlcheck -u root -pbahagia -o - -database blogDB formula
Bisa juga untuk pengecekan semua database, maka formatnya menjadi :
# mysqlcheck -u root -pbahagia -c - -all-databases
Berikut beberapa option yang dapat digunakan di mysqlcheck, yaitu :
-a atau - -analyze = Menganalisis tabel
- -auto-repair = Memperbaiki tabel secara otomotis jika terjadi kerusakan
-C atau - -check-only-changed = Melakukan pengecekan pada tabel yang terakhir diubah
-F atau - -fast = Melakukan pengecekan pada tabel yang masih terbuka
-e atau - -extended = Melakukan pengecekan 100%
-q atau - -quick = Melakukan pengecekan tiap baris
c. Memperbaiki tabel
Ini digunakan didalam prompt MySQL, dengan perintah Repair Table.
# repair table [nama_table] ;
# repair table [nama_table1] [nama_table2] ;
MERENCANAKAN & MEMPERSIAPKAN BACKUP
a. Menentukan waktu backup
Backup merupakan program rutin dan melihat kapan waktu yang tepat untuk proses backup. Jika database itu cukup besar dan sering berubah secara konstan setiap hari, maka sebaiknya direncanakan agar proses backup terjadi setiap hari sehingga data tersebut dapat tersimpan dengan baik. Namun, jika database itu tidak sering berubah setiap hari tidak perlu dilakukan backup setiap hari, bisa seminggu atau dua minggu sekali proses backup baru dilakukan.
b. Menamakan file backup
Seharusnya kita menamakan file backup secara teratur dan selalu memasukkan tanggal dimana backup terakhir dibuat. Misalnya nama database bernama blogDB dan dibackup pada tanggal 21 Juni 2009, sebaiknya diberikan nama file backup dengan nama blogdb-21062009.sql. Untuk penamaan ini tergantung dari administrator itu sendiri dan harus diperhatikan bahwa penamaan file backup tersebut juga sangat penting apalagi jika sering melakukan backup secara regular.
c. Menyimpan file backup
Membuat kopi dari file backup dan menyimpan file tersebut ke komputer lain atau ke penyimpan data yang lain seperti CD atau DVD.
MACAM-MACAM BACKUP
a. Backup satu database
Untuk membackup seluruh database maka format yang digunakan adalah :
# mysqldump -u -p [nama database] > [nama file].sql
Misal ingin membackup database blogDB dengan password ‘bahagia’ dari database MySQL dan jika sudah dibackup maka namanya adalah blogdb.sql, maka format diatas menjadi :
# mysqldump -u root -pbahagia blogDB > blogdb.sql
b. Backup tabel database
Untuk membackup satu atau lebih tabel yang ada dalam suatu database maka formatnya adalah sebagai berikut :
# mysqldump -u -p [nama database] [table1] [table2] … > [nama file].sql
Misal kita ingin membackup dua tabel coba1 dab coba2 dalam database blogDB, maka format perintah menjadi :
# mysqldump -u root -pbahagia blogDB coba1 coba2 > duabuahtabel.sql
c. Backup dua atau lebih database
Jika ingin membackup dua atau lebih database menjadi maka formatnya menjadi :
# mysqldump -u -p - -database [database1] [database2] … > [nama file].sql
Membackup database blogDB dan database mahasiswa digabung menjadi satu dengan nama dua_database.sql, maka formatnya menjadi :
# mysqldump -u root -pbahagia - -database blogDB mahasiswa > dua_database.sql
d. Backup seluruh database
Jika ingin membackup seluruh database maka formatnya sebagai berikut :
# mysqldump -u -p - -all-databases > [nama file].sql
e. Backup struktur data
Jika ingin membackup struktur databasenya saja tanpa mengikutsertakan data recordnya maka formatnya menjadi :
# mysqldump -u -p - -no-data [database] > [nama file].sql
Jika lebih dari satu database formatnya menjadi :
# mysqldump-u -p - -no-data - -database [database1][database2] > [nama file].sql
Jika mau membackup hanya data recordnya saja, maka formatnya :
# mysqldump -u -p - -no-create-info [database] > [nama file].sql
f. Backup Kompress database
Jika ingin mengkompress hasil backup database, maka formatnya :
# mysqldump -u -p [database] | bzip2 -c > [namafile].sql.bz2
# mysqldump -u -p [database] | gzip -c > [namafile].sql.gz
Misalnya ingin membackup database blogDB dan dikompress menggunakan bzip2 atau gzip, maka formatnya :
# mysqldump -u root -pbahagia blogDB | bzip2 -c > blogdb.sql.bz2
atau
# mysqldump -u root -pbahagia blogDB | gzip -c > blogdb.sql.gz
Jika ingin variasi backup seperti backup seluruh database, beberapa tabel maka hanya diubah sebelum tanda | dengan mengikuti pola format sebelumnya. Format untuk membackup seluruh database dengan hasil sudah dikompress.
# mysqldump -u root -pbahagia - -all-databases | bzip2 -c > all_database.sql.bz2
atau
# mysqldump -u root -pbahagia - -all-databases | gzip -c > all_database.sql.gz
g. Script untuk backup
Untuk mempermudah backup bisa menggunakan script dibawah ini :
#!/bin/sh
mysqldump - -all-database | gzip -c > /home/dado/all_database-`date -I`.sql.gz
MACAM-MACAM RESTORE
a. Restore database
Untuk restore database maka formatnya sebagai berikut :
# mysql -u -p [database] < [file backup].sql
Misal kita punya file blogdb.sql ingin direstore ke database formula maka formatnya menjadi :
# mysql -u root -pbahagia formula < blogdb.sql
b. Restore database hasil kompress
Jika file backupnya berupa kompressan, maka formatnya sebagai berikut :
# gunzip < [file backup] | mysql -u -p [database]
Misal bila ingin merestore file blogdb.sql.gz ke database formula, maka formatnya :
# gunzip < blogdb.sql.gz | mysql -u root -pbahagia formula
atau
# bunzip2 < blogdb.sql.bz2 | mysql -u root -pbahagia formula
RECOVERY
Meski bisa dikatakan database MySQL jarang sekali mengalami kerusakan, namun segala kemungkinan bisa terjadi seperti karena konflik atau yang lainnya.
a. Mengecek tabel
Untuk melakukan pengecekan tabel perlu dilakukan penjadwalan rutin agar memastikan tabel-tabel tersebut tetap dalam keadan kondisi stabil. Administrator bisa menggunakan perintah yang ada dalam MySQL itu sendiri memakai perintah Check Table.
Pengecekan pada suatu tabel bisa menggunakan format :
# check table [nama tabel] ;
Misal untuk cek tabel user dan alamat maka formatnya menjadi :
# check table user, alamat ;
b. Menggunakan mysqlcheck
Ini adalah tool untuk melakukan pengecekan tabel yang dijalankan diluar prompt MySQL dan dapat digunakan oleh semua user. Penggunaan mysqlcheck untuk melakukan pengecekan pada tabel bisa dilihat dibawah dimana tabelnya user_blog dengan database blogDB.
# mysqlcheck -u root -pbahagia -c blogDB user_blog
Sedangkan kalau digunakan untuk lebih dari satu database akan menjadi :
# mysqlcheck -u root -pbahagia -o - -database blogDB formula
Bisa juga untuk pengecekan semua database, maka formatnya menjadi :
# mysqlcheck -u root -pbahagia -c - -all-databases
Berikut beberapa option yang dapat digunakan di mysqlcheck, yaitu :
-a atau - -analyze = Menganalisis tabel
- -auto-repair = Memperbaiki tabel secara otomotis jika terjadi kerusakan
-C atau - -check-only-changed = Melakukan pengecekan pada tabel yang terakhir diubah
-F atau - -fast = Melakukan pengecekan pada tabel yang masih terbuka
-e atau - -extended = Melakukan pengecekan 100%
-q atau - -quick = Melakukan pengecekan tiap baris
c. Memperbaiki tabel
Ini digunakan didalam prompt MySQL, dengan perintah Repair Table.
# repair table [nama_table] ;
# repair table [nama_table1] [nama_table2] ;