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:
Instans baru: Saat membuat instans RDS for MySQL, atur Table Name Case Sensitivity menjadi Case-sensitive.
Instans yang sudah ada: Atur
lower_case_table_namesmenjadi0di Konsol ApsaraDB RDS. Untuk detailnya, lihat Ubah parameter instans ApsaraDB RDS for MySQL.
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
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>.sqlContoh:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers --skip-lock-tables > /tmp/testdb.sqlUntuk 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.sqlContoh:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdbTrigger.sqlLewati 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.

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.sqlContoh:
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| Placeholder | Deskripsi | Contoh |
|---|---|---|
<RDS endpoint> | Titik akhir publik instans RDS | rm-bpxxxxx.mysql.rds.aliyuncs.com |
<port> | Port instans RDS | 3306 |
<account> | Akun RDS (akun istimewa, atau akun standar dengan izin baca dan tulis) | testuser |
<database> | Nama database tujuan — harus sudah ada pada instans RDS | testdb |
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
Ikhtisar metode migrasi data — bandingkan mysqldump dengan DTS dan pendekatan migrasi lainnya
Ubah parameter instans ApsaraDB RDS for MySQL — sesuaikan
lower_case_table_namesdan parameter instans lainnya