Anda dapat menggunakan utilitas mysqldump untuk melakukan migrasi instans MySQL yang dikelola sendiri ke ApsaraDB RDS for MySQL. Metode ini cocok untuk database kecil atau skenario yang dapat mentolerir periode downtime yang panjang. Utilitas ini mengekspor skema dan data dari database yang dikelola sendiri ke file teks berisi pernyataan SQL untuk membuat objek dan memasukkan data, sehingga memastikan integritas dan konsistensi data.
Prasyarat
Anda telah mengonfigurasi daftar putih alamat IP, mengaktifkan titik akhir publik, serta membuat database dan akun untuk instans ApsaraDB RDS for MySQL Anda. Untuk informasi selengkapnya, lihat Quick start.
Informasi latar belakang
Karena ApsaraDB RDS for MySQL sepenuhnya kompatibel dengan MySQL asli, migrasi data dari instans MySQL yang dikelola sendiri ke instans ApsaraDB RDS for MySQL mirip dengan migrasi data antara dua server MySQL.
-
Untuk migrasi data yang lebih cepat dengan downtime minimal, kami merekomendasikan penggunaan Data Transmission Service (DTS).
-
Untuk informasi selengkapnya tentang parameter mysqldump, lihat dokumentasi resmi MySQL.
Skenario
Lakukan migrasi data dari instans MySQL yang dikelola sendiri ke instans ApsaraDB RDS for MySQL.
Catatan penggunaan
Secara default, saat Anda melakukan migrasi database dari instans MySQL yang dikelola sendiri ke ApsaraDB RDS, semua nama tabel akan diubah menjadi huruf kecil. Untuk menjadikan nama tabel case-sensitive pada instans ApsaraDB RDS for MySQL, gunakan salah satu metode berikut.
-
Saat Anda membuat instans ApsaraDB RDS for MySQL atau membuat instans ApsaraDB RDS for MySQL Serverless, atur parameter Table Name Case Sensitivity menjadi Case-sensitive.
-
Untuk instans yang sudah ada, Anda dapat mengatur parameter instans lower_case_table_names ke nilai 0 agar nama tabel menjadi case-sensitive.
Peringatan-
Setelah Anda mengatur parameter lower_case_table_names ke 0, jangan ubah kembali nilainya menjadi 1. Jika tidak, perubahan ini dapat menyebabkan error
ERROR 1146 (42S02): Table doesn't existdan mengganggu layanan Anda. -
Untuk instans ApsaraDB RDS for MySQL yang menjalankan MySQL 8.0 atau 8.4, Anda harus mengatur parameter ini saat pembuatan instans karena nilainya tidak dapat diubah setelahnya.
-
Prosedur
Prosedur berikut menggunakan sistem operasi Linux sebagai contoh. Anda juga dapat menjalankan perintah mysqldump di Terminal pada macOS atau di Command Prompt pada Windows.
-
Gunakan mysqldump untuk mengekspor data, prosedur tersimpan, pemicu, dan fungsi dari instans MySQL yang dikelola sendiri.
Penting-
Jangan memperbarui data selama proses ekspor. Tunggu hingga ekspor selesai.
-
Akun pengguna dalam perintah berikut harus memiliki izin yang diperlukan. Untuk informasi selengkapnya tentang cara mengonfigurasi izin, lihat Permission settings.
-
Di antarmuka baris perintah (CLI) Linux, jalankan perintah berikut untuk mengekspor data database:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <source_database_name> --skip-triggers --skip-lock-tables > /tmp/<source_database_name>.sqlCatatanJika Anda perlu menggunakan mysqldump untuk mengekspor data dari instans ApsaraDB RDS for MySQL, ganti titik akhir, akun, kata sandi, dan nama database dalam perintah tersebut dengan informasi instans ApsaraDB RDS for MySQL Anda.
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 -
Di CLI Linux, jalankan perintah berikut untuk mengekspor prosedur tersimpan, pemicu, dan fungsi:
mysqldump -h 127.0.0.1 -u user -p --opt --default-character-set=utf8 --hex-blob <source_database_name> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/<source_database_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.sqlCatatanJika database Anda tidak menggunakan prosedur tersimpan, pemicu, atau fungsi, Anda dapat melewati langkah ini.
-
-
Unggah kedua file yang diekspor ke instans ECS. Dalam contoh ini, file diunggah ke direktori /tmp.
CatatanJika database yang dikelola sendiri Anda sudah berada di instans ECS, Anda dapat melewati langkah ini.

-
Impor file yang diekspor ke instans ApsaraDB RDS for MySQL tujuan:
mysql -h <rds_instance_endpoint> -P <rds_instance_port> -u <rds_instance_account> -p <destination_database_name> < /tmp/<source_database_name>.sql mysql -h <rds_instance_endpoint> -P <rds_instance_port> -u <rds_instance_account> -p <destination_database_name> < /tmp/<source_database_name>Trigger.sqlCatatan-
Database tujuan harus merupakan database yang sudah ada pada instans ApsaraDB RDS for MySQL. Untuk membuat database, lihat Database management.
-
Akun untuk instans ApsaraDB RDS for MySQL harus merupakan akun istimewa atau 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 -
-
Setelah impor selesai, login ke database ApsaraDB RDS for MySQL menggunakan DMS untuk memverifikasi data yang diimpor.