All Products
Search
Document Center

ApsaraDB RDS:Migrasi data MySQL menggunakan mysqldump

Last Updated:Mar 29, 2026

mysqldump mengekspor skema dan data sebuah database ke dalam file SQL yang berisi pernyataan CREATE TABLE dan INSERT, lalu menjalankan ulang file tersebut pada instans target. Gunakan metode ini jika volume data Anda kecil atau bisnis Anda dapat mentolerir downtime yang lama selama migrasi.

Untuk migrasi tanpa gangguan layanan, gunakan Data Transmission Service (DTS). DTS mendukung replikasi berkelanjutan dan pergantian dengan downtime minimal.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Mengonfigurasi daftar putih alamat IP untuk instans RDS

  • Memperoleh titik akhir publik instans RDS

  • Membuat database dan akun tujuan pada instans RDS

Untuk instruksi penyiapan, lihat Alur kerja umum penggunaan ApsaraDB RDS for MySQL.

Kasus penggunaan

mysqldump merupakan pilihan tepat ketika:

  • Volume data kecil — ekspor dan impor selesai dalam jendela pemeliharaan Anda

  • Downtime dapat diterima — penulisan ke database sumber harus dihentikan selama ekspor untuk menjamin konsistensi

  • Tidak diperlukan replikasi berkelanjutan — salinan logis satu kali sudah cukup

Gunakan DTS jika Anda memerlukan pergantian tanpa downtime atau replikasi berkelanjutan.

Catatan penggunaan

Setelah migrasi, semua nama tabel dari instans MySQL yang dikelola sendiri disimpan dalam huruf kecil pada instans RDS. Untuk mempertahankan nama tabel yang peka terhadap huruf besar/kecil, gunakan salah satu metode berikut:

Peringatan

Setelah Anda mengatur lower_case_table_names menjadi 0, jangan ubah kembali menjadi 1. Melakukannya dapat memicu ERROR 1146 (42S02): Table doesn't exist dan sangat memengaruhi beban kerja Anda. Jika instans RDS Anda menjalankan MySQL 8.0, lower_case_table_names tidak dapat dikonfigurasi ulang setelah instans dibuat.

Migrasi data dengan mysqldump

Langkah-langkah berikut menggunakan lingkungan Linux. Perintah yang sama berlaku di Terminal macOS atau Command Prompt Windows.

Langkah 1: Ekspor data dari instans MySQL yang dikelola sendiri

Penting

Hentikan semua operasi tulis ke database sumber sebelum menjalankan ekspor. Memperbarui data selama ekspor dapat merusak file dump.

Akun yang digunakan untuk ekspor harus memiliki izin yang diperlukan. Untuk informasi lebih lanjut, lihat dokumentasi resmi MySQL.

Ekspor skema dan data (tidak termasuk prosedur tersimpan, pemicu, dan fungsi):

mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <db_name> --skip-triggers --skip-lock-tables > /tmp/<db_name>.sql

Contoh:

mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers --skip-lock-tables > /tmp/testdb.sql
Untuk mengekspor data dari instans RDS for MySQL, ganti host, username, dan nama database dengan nilai RDS yang sesuai.
Flag --default-character-set=utf8 mengatur set karakter untuk file dump. Jika database sumber menggunakan set karakter yang berbeda, atur flag ini agar sesuai. Ketidaksesuaian antara set karakter file dump dan set karakter instans target akan menyebabkan teks menjadi rusak setelah impor.

Ekspor prosedur tersimpan, pemicu, dan fungsi:

mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <db_name> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/*/' > /tmp/<db_name>Trigger.sql

Contoh:

mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdbTrigger.sql
Lewati perintah ini jika database sumber tidak memiliki prosedur tersimpan, pemicu, atau fungsi.

Langkah 2: Unggah file yang diekspor ke instans ECS

Unggah file .sql dari Langkah 1 ke direktori /tmp pada instans Elastic Compute Service (ECS) yang dapat mengakses instans RDS.

result
Lewati langkah ini jika instans MySQL yang dikelola sendiri sudah berjalan pada instans ECS.

Langkah 3: Impor file ke instans RDS

Jalankan perintah berikut pada instans ECS. Ganti placeholder dengan detail koneksi RDS Anda.

mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>.sql
mysql -h <RDS endpoint> -P <port> -u <account> -p <database> < /tmp/<db_name>Trigger.sql

Contoh:

mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdb.sql
mysql -h rm-bpxxxxx.mysql.rds.aliyuncs.com -P 3306 -u testuser -p testdb < /tmp/testdbTrigger.sql
PlaceholderDeskripsiContoh
<RDS endpoint>Titik akhir publik instans RDSrm-bpxxxxx.mysql.rds.aliyuncs.com
<port>Port instans RDS3306
<account>Akun RDS (akun istimewa, atau akun standar dengan izin baca dan tulis)testuser
<database>Nama database tujuan — harus sudah ada pada instans RDStestdb

Untuk membuat database tujuan jika belum ada, lihat Kelola database.

Langkah 4: Verifikasi migrasi

Gunakan DMS untuk login ke instans RDS dan pastikan tabel, jumlah baris, serta data tampak benar.

Langkah selanjutnya