ARTICLE

Export dan Import Database di MySQL atau MariaDB Menggunakan Mysqldump

28 February 2023 by Tiyan Wisesa

Pada tutorial RSYNC, kita sudah mengetahui tentang cara membackup file and folder pada VM berbasis Linux. Namun, bagaimana jika kita ingin backup database yang ada di VM kita?

Katakanlah VM kita berisi website yang memiliki database sekaligus, nah bagaimana cara backup & restorenya?

Pada tutorial ini, saya akan mencoba menjelaskan beberapa cara untuk generate backup pada salah satu DBMS yang mungkin teman-teman sudah sangat familiar, yaitu MySQL database server.

Seperti yang kita tahu, data adalah aset yang sangat berharga bagi sebuah organisasi atau perusahaan. Sebagai database administrator, menjaga data agar selalu aman dan available adalah tugas utama kita. Jika terjadi hal-hal yang tidak diinginkan seperti database corrupt dan data hilang terjadi, kita wajib bisa melakukan proses recover secepatnya.

Tiap platform database memiliki metode-metodenya sendiri dalam generate database backup dan restore. Banyak juga vendor yang menyediakan solusi berupa software atau hardware yang bisa membantu membackup dan merestore database pada RTO dan RPO yang kita inginkan.

Dalam tutorial ini kita tidak akan berdiskusi mengenai vendor third-party mana pun. Namun, kita akan mendiskusikan metode bawaan yang digunakan untuk mengenerate backup dari MySQL, yang mana adalah mysqldump. Bahasan dari tutorial ini adalah seperti di bawah ini:

Apa itu Mysqldump?

Dari namanya cukup definitif ya, tools untuk “menimbun” atau bisa juga kita analogikan sebagai backup database MySQL.

Mysqldump ini sendiri merupakan tools bawaan dari MySQL, sebuah command-line utility yang paling direkomendasikan untuk generate logical backup dari database MySQL.

Tidak hanya untuk database MySQL, bisa juga untuk MariaDB, mengingat MariaDB adalah pengganti MySQL.

Cara kerja dari mysqldump adalah dengan membuat file SQL Statements (.sql) yang berisi semua perintah berbasis command yang kita minta, di mana file SQL statement ini berguna untuk membuat ulang objek dan data dari database.

Tidak hanya bentuk (.sql), kita juga dapat generate outputnya ke dalam bentuk XML, delimited text file, atau CSV format.

Selain sebagai backup, dengan file (.sql) ini bisa kita gunakan juga untuk memindahkan database ke server lain atau bahkan ke aplikasi database lain.

Format Command dari Mysqldump

Cara kerja dari mysqldump cukup sederhana, tergantung dari goal backup yang kita inginkan.

Format Command Backup

Di point pertama ini kita akan eksplor beberapa command dalam backing up database.
Buka terminal, pastikan Anda tidak dalam keadaan login pada MySQL.

▶️ Backup 1 Database

Apabila kita memiliki 1 Database saja, atau memang hanya ingin membackup 1 Database saja, sintaks dalam mysqldump adalah sebagai berikut:

# mysqldump -u admin -p galerifashion > /var/www/db-backup/galerifashion.sql

Dengan maksud dari command tersebut adalah:

  • Akses database dengan nama user admin.
  • Mysqldump bisa menanyakan password dari nama pengguna (-p).
    Value password sebenarnya opsional. Jika tidak kita berikan di dalam command, mysqldump akan menanyakan password dari username tersebut setelah kita initiate commandnya. Atau kita juga bisa langsung menuliskan password di dalam command. Cara menuliskannya seperti ini, --password=[password_anda] atau -p[password_anda]
  • Nama database yang akan kita backup adalah galerifashion.
  • Kita akan backup database ini ke dalam bentuk file SQL bernama galerifashion.sql ke dalam folder location

Setelah kita berhasil generate backup, mari kita buka file backup untuk melihat konten dari backup file ini sebenarnya seperti apa.

Seperti yang Anda lihat pada gambar di atas, backup file memiliki banyak SQL statements yang mana bisa digunakan untuk membuat ulang sebuah object.

Secara default, nantinya ketika teman-teman ingin restore database, kalian diharuskan membuat databasenya terlebih dahulu pada MySQL (apabila belum ada), jika teman-teman ingin restore database tanpa perlu membuat databasenya terlebih dahulu, kita bisa tambahkan command berikut di awal file

CREATE DATABASE /!32312 IF NOT EXISTS/ galerifashion /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */;
USE galerifashion;
▶️ Backup Beberapa Database

Berikutnya semisal saya punya banyak database tapi ingin backup beberapa database saja, command yang bisa kita gunakan adalah sebagai berikut:

# mysqldump -u admin -p –databases galerifashion cloudforindonesia > /var/www/db-backup/galerifashion_cloudforindonesia.sql

Jadi, di sana kita tambahkan optional modifiers –databases, di mana opsi ini berguna jika kita ingin membackup beberapa database ke dalam 1 file .sql

▶️ Backup Semua Koleksi Database

Kemudian semisal kita ingin backup semua database dari project-project kita ke dalam 1 file .sql, kita bisa gunakan command berikut:

# mysqldump -u admin -p –all-databases > /var/www/db-backup/all_db.sql

Ada yang teman-teman rasa beda? Jadi kalau kita pakai opsi –all-databases kita tidak perlu mention nama database yang kita ingin backup.

▶️ Backup Database Struktur Saja

Kalau kita ingin backup hanya struktur databasenya saja, row, tabel dan sebagainya, tanpa isi datanya, kita bisa gunakan opsi –no-data. Command berikut akan generate database strukturnya saja.

# mysqldump -u admin -p –no-data galerifashion > /var/www/db-backup/structure_galerifashion.sql
▶️ Backup Database Data Saja

Kebalikan dari poin sebelumnya, apabila kita ingin generate datanya saja tanpa struktur databasenya, kita bisa gunakan opsi –no-create-info. Command berikut akan generate datanya saja.

# mysqldump -u admin -p –no-create-info galerifashion > /var/www/db-backup/data_only_galerifashion.sql
▶️ Backup Hanya Spesifik Tabel yang ada di Dalam Database

Untuk melakukan hal tersebut, pada command, tentukan nama-nama tabel yang kita ingin extract di setelah informasi nama database. Contoh penggunaannya adalah sebagai berikut:

# mysqldump -u admin -p galerifashion produk kategori > /var/www/db-backup/produk_kategori_table.sql

Dari semua command-command di atas, apabila ada error yg terjadi di dalam proses exportnya, mysqldump akan menunjukkannya ke dalam layar.


Sebenarnya masih banyak variasi aktifitas backup yang kita bisa explore dengan mysqldump ini. Tergantung dari goal yang kita inginkan untuk aktifitas kita.
Untuk optional modifiers dan fitur lainnya yang lengkap dengan penjelasannya, teman-teman bisa explore langsung di dokumentasi dari MySQL.

Format Command Restore

Oke, setelah kita berhasil backup database yang kita inginkan, pastinya kita butuh merestore database ini kembali di suatu saat atau apabila sedang ada kendala pada project kita.

Merestore sebuah database MySQL menggunakan mysqldump sangatlah simple. Ada sedikit perbedaan dalam command yang kita gunakan, di mana ketika kita merestore database, kita gunakan command “mysql” alih-alih command “mysqldump”.

Ayo kita lihat cara restore database berdasarkan beberapa aktifitas backup yang kita sudah lakukan sebelumnya.

▶️ Restore Database(s) di dalam Satu File Mysqldump

Apabila Anda ingin merestore mysqldump file, Anda bisa gunakan command berikut.

mysql -u admin -p < /var/www/db-backup/all_db.sql
▶️ Restore Satu Database dari Satu File Mysqldump

Apabila di dalam 1 mysqldump file terdapat beberapa database yang sudah kita backup, dan kita hanya ingin merestore salah satu database saja, kita bisa gunakan opsi –one-database sesuai pada command berikut.

# mysql -u admin -p –one-database galerifashion < /var/www/db-backup/all_db.sql
▶️ Restore Satu Tabel dari Satu File Mysqldump

Apabila teman-teman memiliki banyak database dan tidak sengaja menghapus salah satu tabel di dalam salah satu database yang ada, dan ingin merestorenya, bisa mengikuti cara berikut.

Di sini kita akan menggunakan bantuan dari SED command mengingat tidak ada native method dari MySQL sendiri.

# sed -n -e ‘/– Table structure for table `komentar`/,/UNLOCK TABLES/p’ all_db.sql > tabel_komentar.sql

Dengan maksud dari command tersebut adalah mengcopy kumpulan baris perintah pada file all_db.sql, yang mana dalam range dari baris -- Table structure for table `komentar` hingga akhiran baris UNLOCK TABLES, dan mengekstraknya ke dalam file tabel_komentar.sql

Setelah diletakkan di tabel_komentar.sql, restore ke database yg diinginkan.

# mysql -u admin -p galerifashion < /var/www/db-backup/tabel_komentar.sql

Kesimpulan

Penjelasan di atas merupakan command mysqldump yang biasa dilakukan dalam memanage backup pada MySQL.

Tergolong cukup easy to use kan? Satu-satunya permasalahan yang akan timbul ketika merestore database dengan mysqldump ini adalah, karena dia akan membuat backup file yang mengandung command SQL yang diperlukan untuk membuat ulang database, maka ketika kita restore database tersebut, commandnya akan mengeksekusi semua statement SQL untuk membuat tabel dan memasukan data-datanya. Jika Anda mempunyai database yang besar, maka proses restorasi akan memakan waktu yang lama untuk akhirnya selesai.

Solusi hal ini adalah salah satunya kita bisa incremental backup database menggunakan binary logs, atau bahkan replikasi server databasenya langsung saja.

Untuk workaround perihal ini akan kita bahas di next artikel ya.

Kunjungi halaman knowledge base dan blog kami untuk mendapatkan artikel seputar teknologi lainnya. Atau, Anda juga bisa mengunjungi channel Youtube kami untuk video stream tutorial IT yang diinginkan.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

Ready to Make Something Big?

Deploy in Cloud Raya
Background wave