10 April 2009

mysqldump - Tool untuk Backup Database MySQL

MySQL mempunyai tool untuk backup program yaitu mysqldump. mysqldump adalah program pada sisi client yang dapat digunakan untuk backup beberapa database atau transfer data ke server lain. Tool ini tersedia jika kita install MySQL dan terdapat pada direktori <mysql_install_dir>\bin. Output dari mysqldump adalah file yang berisi perintah-perintah SQL yang dapat dibaca dengan editor teks seperti wordpad. File output ini dapat dijalankan untuk membuat database, tabel, atau melakukan operasi pada database atau tabel. Tool ini bisa digunakan untuk engine MyISAM atau InnoDB dan bisa dijalankan tanpa menghentikan instace MySQL. Menurut manual MySQL, ada tiga cara umum untuk menjalankan mysqldump:
mysqldump [options] db_name [tables]
mysqldump [options] --databases db_name1 [db_name2 db_name3...]
mysqldump [options] --all-databases

Parameter [options] punya banyak variasi pilihan yang bisa digunakan sesuai dengan kebutuhan. Berikut ini sebagian parameter yang sering atau pernah aku pakai untuk backup database.

  • --host=<host_name>, -h <host_name>
  • Backup data dari server MySQL <host_name>. Defaultnya adalah localhost.
  • --user=<user_name>, -u <user_name>
  • Nama user MySQL yang digunakan untuk koneksi.
  • --password=<password>, -p<password>
  • Password MySQL yang digunakan untuk koneksi. Perhatikan jika menggunakan sintax –p<password> tidak ada spasi antara –p dan password.
  • --verbose, -v
  • Cetak informasi tentang apa yang dilakukan program.
  • --complete-insert, -c
  • Perintah INSERT menyertakan nama kolom. Cara aman pada pengembangan database yang belum final atau masih bisa menambahkan field pada tabel.
  • --skip-extended-insert
  • Jika menggunakan parameter ini, perintah INSERT di generate per baris data. Contohnya:
    INSERT INTO tbl1 VALUES (1, ‘a’);
    INSERT INTO tbl1 VALUES (2, ‘b’);
    INSERT INTO tbl1 VALUES (3, ‘c’);
    Jika parameter ini tidak digunakan, yang merupakan pilihan default, perintah INSERT di generate per tabel. Contoh:
    INSERT INTO tbl1 VALUES (1, ‘a’), (2, ‘b’), (3, ‘c’);
    Menggunakan pilihan ini menurutku lebih aman, karena berdasar pengalaman, jika data sudah ada atau terjadi kesalahan, baris perintah INSERT yang berikutnya masih dijalankan. Tapi jika tidak menggunakan pilihan ini dan data sudah ada atau terjadi kesalahan, data berikutnya tidak akan masuk.
  • --single-transaction
  • Hanya berguna untuk tabel transactional seperti InnoDB. Sebelum melakukan backup data, akan diberikan perintah BEGIN. Dengan begini akan mendapatkan konsistensi dari database yang di backup tanpa melakukan blocking pada aplikasi apapun.
  • --routines, -R
  • Backup function dan procedure. Minimum membutuhkan MySQL 5.1.2.
  • --no-data, -d
  • Baris data tidak di backup, hanya struktur saja.
  • --no-create-info, -t
  • Struktur tabel tidak di backup, hanya data saja.
  • --result-file=<nama_file>, -r <nama_file>
  • Menghasilkan output file sesuai <nama_file> yang diinputkan.
  • --ignore-table=<nama_database.nama_tabel>
  • Tidak melakukan backup pada tabel yang diinputkan. Berguna misalnya jika melakukan backup pada database mysql tapi hanya tabel user saja.
  • --xml
  • Menghasilkan output file format xml.
Penggunaan yang umum dari mysqldump mungkin adalah melakukan backup terhadap seluruh database yang ada:
mysqldump --user=root --all-databases --result-file=”backup.sql”

Backup data saja:
mysqldump --user=root db_name --no-create-info --result-file=”backup.sql”

Backup struktur saja:
mysqldump --user=root db_name --no-data --result-file=”backup.sql”

Backup database tertentu beserta database MySQL tabel user saja, dan tidak tabel lain:
mysqldump --user=root --databases db_name mysql --result-file="backup.sql" --ignore-table="mysql.columns_priv" --ignore-table="mysql.db" --ignore-table="mysql.func" --ignore-table="mysql.host" --ignore-table="mysql.plugin" --ignore-table="mysql.proc" --ignore-table="mysql.proc_priv" --ignore-table="mysql.servers" --ignore-table="mysql.tables_priv" --ignore-table="mysql.general_log" --ignore-table="mysql.help_category" --ignore-table="mysql.help_keyword" --ignore-table="mysql.help_relation" --ignore-table="mysql.help_topic" --ignore-table="mysql.ndb_binlog_index" --ignore-table="mysql.procs_priv" --ignore-table="mysql.slow_log" --ignore-table="mysql.time_zone" --ignore-table="mysql.time_zone_leap_second" --ignore-table="mysql.time_zone_name" --ignore-table="mysql.time_zone_transition" --ignore-table="mysql.time_zone_transition_type"

1 komentar:

  1. mau tanya, file hasil dump tersebut disimpan di folder apa? apa kita bisa menentukan tempat / folder untuk menyimpan hasil dump tersebut?

    BalasHapus