全部产品
Search
文档中心

ApsaraDB RDS:Gunakan ekstensi mysqldump untuk memigrasikan data dari instance MySQL yang dikelola sendiri ke instance ApsaraDB RDS for MySQL

更新时间:Jul 06, 2025

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.

Catatan
  • 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.

    Peringatan
    • Setelah mengatur parameter lower_case_table_names ke 0, jangan ubah nilainya menjadi 1. Jika diubah, kesalahan ERROR 1146 (42S02): Table doesn't exist mungkin 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.

  1. Gunakan ekstensi mysqldump untuk mengekspor data, prosedur tersimpan, pemicu, dan fungsi dari instance MySQL yang dikelola sendiri.

    Penting
    • Selama 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.

    1. 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>.sql
      Catatan

      Untuk 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.sql
    2. Di 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.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
      Catatan

      Jika instance MySQL yang dikelola sendiri tidak berisi prosedur tersimpan, pemicu, atau fungsi, Anda dapat melewati langkah ini.

  2. Unggah file yang diekspor ke direktori tertentu pada instance Elastic Compute Service (ECS). Dalam contoh ini, direktorinya adalah /tmp.

    Catatan

    Jika instance MySQL yang dikelola sendiri berada pada instance ECS, Anda dapat melewati langkah ini.

    result

  3. 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.sql 
    Catatan
    • Basis 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.sql
  4. Setelah impor selesai, gunakan DMS untuk masuk ke instance RDS dan periksa apakah data normal.