Cara Import dan Export Database MySQL
Anda perlu memindahkan database dari server lama ke server baru, atau mengambil salinan data untuk keperluan migrasi. Proses export dan import database MySQL adalah tugas rutin yang harus dikuasai oleh setiap sysadmin dan developer.
Kesalahan dalam proses ini bisa menyebabkan data hilang atau struktur database rusak. Panduan ini membahas cara export dan import database MySQL dengan aman, baik melalui command line maupun file SQL.
Prasyaratโ
- Server Nusa Cloud VPS dengan MySQL terinstal
- Akses root atau user MySQL dengan hak
SELECT,LOCK TABLES,CREATE,ALTER,INSERT - Ruang disk yang cukup untuk menampung file hasil export
Export Database dengan mysqldumpโ
mysqldump adalah utilitas bawaan MySQL untuk membuat backup logical โ berupa kumpulan perintah SQL yang bisa dijalankan kembali untuk merekonstruksi database.
Export Satu Databaseโ
mysqldump -u root -p nama_database > nama_database_$(date +%F).sql
Perintah di atas menghasilkan file SQL yang berisi struktur tabel dan data dari database yang ditentukan. Flag -p akan meminta password MySQL.
Export Beberapa Database Sekaligusโ
mysqldump -u root -p --databases db1 db2 db3 > multi_db_$(date +%F).sql
Opsi --databases memungkinkan export lebih dari satu database dalam satu file. File hasil export akan menyertakan perintah CREATE DATABASE sehingga database tujuan tidak perlu dibuat terlebih dahulu.
Export Semua Databaseโ
mysqldump -u root -p --all-databases > all_databases_$(date +%F).sql
Opsi ini mencadangkan seluruh database di server MySQL โ termasuk tabel system seperti mysql, sys, dan performance_schema. Gunakan opsi ini jika Anda perlu memigrasikan seluruh instance MySQL.
Export Tanpa Data (Hanya Struktur)โ
mysqldump -u root -p --no-data nama_database > struktur_nama_database.sql
Berguna saat Anda hanya membutuhkan skema tabel โ misalnya untuk dokumentasi atau replikasi struktur ke environment staging.
Export Database Tertentu Saja (WHERE)โ
mysqldump -u root -p nama_database nama_tabel --where="tanggal >= '2026-01-01'" > data_partial.sql
Dengan opsi --where, Anda hanya mengekspor baris yang memenuhi kondisi tertentu. Ini membantu saat ukuran database sangat besar dan Anda hanya membutuhkan data periode tertentu.
Kompresi File Exportโ
Untuk database berukuran besar, file SQL bisa mencapai puluhan gigabyte. Kompresi langsung saat export menghemat ruang disk dan waktu:
mysqldump -u root -p nama_database | gzip > nama_database_$(date +%F).sql.gz
Untuk membacanya nanti, gunakan zcat:
zcat nama_database_2026-06-09.sql.gz | mysql -u root -p nama_database_baru
Import Database MySQLโ
Ada dua metode utama untuk mengimpor database: menggunakan mysql command dan menggunakan source di dalam MySQL shell.
Import dengan mysql Commandโ
mysql -u root -p nama_database_baru < nama_database_2026-06-09.sql
Pastikan database tujuan sudah dibuat sebelum menjalankan import:
CREATE DATABASE IF NOT EXISTS nama_database_baru;
Import File Terkompresiโ
gunzip < nama_database_2026-06-09.sql.gz | mysql -u root -p nama_database_baru
Import dari MySQL Shellโ
mysql -u root -p
Kemudian di dalam shell MySQL:
USE nama_database_baru;
SOURCE /path/to/nama_database_2026-06-09.sql;
Metode ini berguna saat Anda sudah berada di dalam sesi MySQL dan ingin mengimpor file dari lokasi tertentu.
Pertimbangan untuk Database Besarโ
Jika ukuran database di atas 1 GB, beberapa penyesuaian diperlukan agar proses import berjalan stabil.
Tingkatkan Timeoutโ
Tambahkan parameter berikut saat menjalankan import:
mysql -u root -p --max_allowed_packet=512M --net_buffer_length=16384 nama_database < file.sql
Gunakan mysqlimportโ
Untuk file yang sudah dalam format CSV atau TSV, gunakan mysqlimport:
mysqlimport -u root -p --local nama_database /path/to/file.csv
Nonaktifkan Sementara Foreign Key Checkโ
Saat mengimpor data dengan relasi foreign key, urutan import bisa menyebabkan error. Nonaktifkan sementara:
SET FOREIGN_KEY_CHECKS = 0;
SOURCE /path/to/file.sql;
SET FOREIGN_KEY_CHECKS = 1;
Verifikasiโ
Setelah import selesai, lakukan verifikasi:
# Cek jumlah tabel
mysql -u root -p -e "USE nama_database_baru; SHOW TABLES;"
# Cek jumlah baris
mysql -u root -p -e "USE nama_database_baru; SELECT COUNT(*) FROM nama_tabel;"
# Cek ukuran database
mysql -u root -p -e "SELECT table_schema AS 'Database', ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' FROM information_schema.tables WHERE table_schema = 'nama_database_baru' GROUP BY table_schema;"
Pastikan jumlah tabel, jumlah baris, dan ukuran database sesuai dengan sumber aslinya.
Ringkasan Perintahโ
| Operasi | Perintah |
|---|---|
| Export satu database | mysqldump -u root -p db > db.sql |
| Export semua database | mysqldump -u root -p --all-databases > all.sql |
| Export hanya struktur | mysqldump -u root -p --no-data db > struktur.sql |
| Export dengan kompresi | mysqldump -u root -p db | gzip > db.sql.gz |
| Import file SQL | mysql -u root -p db < db.sql |
| Import terkompresi | gunzip < db.sql.gz | mysql -u root -p db |
| Import via MySQL shell | SOURCE /path/to/file.sql |
Butuh Bantuan?โ
Jika mengalami error saat import atau export โ seperti "The input is a MySQL connection", "Access denied", atau "Table doesn't exist" โ buka Tiket Bantuan dengan menyertakan pesan error lengkap dan output dari mysql --version.
