Jika Anda ingin memigrasikan data dari instance MySQL yang dikelola sendiri ke instance ApsaraDB RDS for MySQL dengan volume data relatif kecil atau downtime yang dapat diterima untuk bisnis Anda, gunakan ekstensi mysqldump. Metode ini mempermudah migrasi data. Ekstensi mysqldump mengekspor skema dan data dari database yang dikelola sendiri ke file teks, mencakup pernyataan SQL yang diperlukan untuk membuat tabel dan menyisipkan data, memastikan integritas dan konsistensi data.
Prasyarat
Daftar putih alamat IP telah dikonfigurasi, titik akhir publik telah diperoleh, serta basis data dan akun telah dibuat untuk instance RDS. Untuk informasi lebih lanjut, lihat Alur kerja umum untuk menggunakan ApsaraDB RDS for MySQL.
Informasi latar belakang
ApsaraDB RDS for MySQL sepenuhnya kompatibel dengan MySQL sumber terbuka. Proses migrasi data dari instance MySQL yang dikelola sendiri ke instance RDS mirip dengan proses migrasi data antar server MySQL.
Data Transmission Service (DTS) memungkinkan migrasi data yang lebih nyaman dan efisien tanpa gangguan layanan. Kami merekomendasikan penggunaan DTS untuk migrasi data. Untuk informasi lebih lanjut, lihat Ikhtisar metode migrasi data.
Untuk detail parameter ekstensi mysqldump, lihat dokumentasi resmi MySQL.
Skenario
Anda ingin memigrasikan data dari instance MySQL yang dikelola sendiri ke instance ApsaraDB RDS for MySQL.
Catatan penggunaan
Setelah migrasi selesai, semua nama tabel yang dimigrasikan dari instance MySQL yang dikelola sendiri akan menjadi huruf kecil di instance RDS. Gunakan salah satu metode berikut untuk memeriksa sensitivitas huruf besar-kecil nama tabel pada instance ApsaraDB RDS for MySQL:
Saat membuat instance RDS for MySQL, atur parameter Table Name Case Sensitivity ke Case-sensitive.
Untuk mengaktifkan sensitivitas huruf besar-kecil nama tabel pada instance RDS yang sudah ada, atur parameter lower_case_table_names ke 0 di konsol ApsaraDB RDS. Untuk informasi lebih lanjut, lihat Modifikasi parameter instance ApsaraDB RDS for MySQL.
PeringatanSetelah mengatur parameter lower_case_table_names ke 0, jangan ubah nilainya menjadi 1. Jika diubah, kesalahan
ERROR 1146 (42S02): Table doesn't existmungkin dilaporkan, dan beban kerja Anda mungkin terpengaruh secara serius.Jika instance RDS Anda menjalankan MySQL 8.0, Anda tidak dapat mengonfigurasi ulang parameter lower_case_table_names.
Prosedur
Contoh ini menggunakan server Linux. Anda juga dapat menjalankan perintah mysqldump di Terminal pada macOS atau di Command Prompt pada Windows.
Gunakan ekstensi mysqldump untuk mengekspor data, prosedur tersimpan, pemicu, dan fungsi dari instance MySQL yang dikelola sendiri.
PentingSelama tugas ekspor berlangsung, jangan perbarui data. Tunggu hingga tugas ekspor selesai.
Pengguna yang disebutkan dalam langkah-langkah berikut harus memiliki izin yang diperlukan. Untuk informasi lebih lanjut, lihat dokumentasi resmi MySQL.
Di CLI Linux, jalankan perintah berikut untuk mengekspor data sebagai file:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <Nama instance MySQL yang dikelola sendiri> --skip-triggers --skip-lock-tables > /tmp/<Nama instance MySQL yang dikelola sendiri>.sqlCatatanUntuk menggunakan mysqldump mengekspor data dari instance RDS for MySQL, ganti alamat basis data, nama pengguna, kata sandi, dan nama basis data dalam perintah di atas dengan informasi yang sesuai dari instance RDS for MySQL.
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.sqlDi CLI Linux, jalankan perintah berikut untuk mengekspor prosedur tersimpan, pemicu, dan fungsi sebagai file:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <Nama instance MySQL yang dikelola sendiri> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/*/' > /tmp/<Nama instance MySQL yang dikelola sendiri> 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.sqlCatatanJika instance MySQL yang dikelola sendiri tidak berisi prosedur tersimpan, pemicu, atau fungsi, Anda dapat melewati langkah ini.
Unggah file yang diekspor ke direktori tertentu pada instance Elastic Compute Service (ECS). Dalam contoh ini, direktorinya adalah /tmp.
CatatanJika instance MySQL yang dikelola sendiri berada pada instance ECS, Anda dapat melewati langkah ini.

Jalankan perintah berikut untuk mengimpor file yang diekspor ke instance RDS:
mysql -h <Titik akhir instance RDS> -P <Port instance RDS> -u <Akun instance RDS> -p <Nama instance RDS> < /tmp/<Nama instance MySQL yang dikelola sendiri>.sql mysql -h <Titik akhir instance RDS> -P <Port instance RDS> -u <Akun instance RDS> -p <Nama instance RDS> < /tmp/<Nama instance MySQL yang dikelola sendiri> Trigger.sqlCatatanBasis data tujuan pada instance RDS harus merupakan basis data yang ada yang Anda buat. Untuk informasi lebih lanjut tentang cara membuat basis data, lihat Kelola basis data.
Akun yang digunakan untuk masuk ke instance RDS harus merupakan akun istimewa atau akun standar yang memiliki izin baca dan tulis.
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.sqlSetelah impor selesai, gunakan DMS untuk masuk ke instance RDS dan periksa apakah data normal.