ApsaraDB RDS for MariaDB sepenuhnya kompatibel dengan MariaDB native, sehingga proses migrasi datanya sama seperti memindahkan data antara dua server MariaDB. Topik ini memandu Anda melalui seluruh proses migrasi menggunakan mysqldump: mengekspor data tabel dan prosedur tersimpan dari database yang dikelola sendiri, lalu mengimpornya ke instans RDS.
Contoh dalam topik ini menggunakan database sumber yang berjalan di Linux 7 dengan MariaDB 10.2.4.
Setelah migrasi, semua nama tabel disimpan dalam huruf kecil dan tidak peka terhadap huruf besar/kecil (case-insensitive) pada instans RDS.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Mengonfigurasi daftar putih alamat IP untuk instans RDS. Lihat Konfigurasi daftar putih alamat IP untuk instans ApsaraDB RDS for MariaDB.
Memperoleh titik akhir publik untuk instans RDS. Lihat Ajukan atau rilis titik akhir publik untuk instans ApsaraDB RDS for MariaDB.
Migrasi data
Langkah 1: Buat database tujuan
Login ke instans RDS menggunakan alat koneksi jarak jauh dan buat database kosong untuk menerima data yang dimigrasikan. Misalnya, buat database bernama test001. Lihat Hubungkan ke instans ApsaraDB RDS for MariaDB.
Langkah 2: Ekspor file data
Jangan menulis ke database sumber selama proses ekspor berlangsung. Penulisan bersamaan (concurrent writes) dapat menyebabkan ketidakkonsistenan data dalam file dump.
Pada server database on-premises, jalankan mysqldump untuk mengekspor data tabel ke file SQL. Perintah ini mengecualikan prosedur tersimpan, pemicu, dan fungsi — komponen tersebut diekspor secara terpisah pada Langkah 3.
mysqldump -h localhost -u <username> -p --opt --default-character-set=utf8 --hex-blob <db_name> --skip-triggers > /tmp/<db_name>.sqlGanti placeholder dengan nilai Anda:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
<username> | Username akun database yang dikelola sendiri | user |
<db_name> | Nama database yang dikelola sendiri yang akan diekspor | testdb |
Contoh:
mysqldump -h localhost -u user -p --opt --default-character-set=utf8 --hex-blob testdb --skip-triggers > /tmp/testdb.sqlAkun database harus memiliki izin yang diperlukan untuk menjalankan mysqldump. Untuk daftar lengkap izin yang dibutuhkan, lihat referensi mysqldump.
Langkah 3: Ekspor prosedur tersimpan, pemicu, dan fungsi
Jika database Anda berisi prosedur tersimpan, pemicu, atau fungsi, ekspor komponen tersebut ke file terpisah. Perintah sed menghapus klausa DEFINER, yang diperlukan agar kompatibel dengan ApsaraDB RDS for MariaDB.
mysqldump -h localhost -u <username> -p --opt --default-character-set=utf8 --hex-blob <db_name> -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/<db_name>_trigger.sqlContoh:
mysqldump -h localhost -u user -p --opt --default-character-set=utf8 --hex-blob testdb -R | sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > /tmp/testdb_trigger.sqlLewati langkah ini jika database sumber tidak memiliki prosedur tersimpan, pemicu, atau fungsi.
Langkah 4: Impor ke instans RDS
Jalankan perintah berikut untuk mengimpor file data, lalu file prosedur tersimpan ke database tujuan. Impor file data terlebih dahulu.
mysql -h <endpoint> -P <port> -u <username> -p <dest_db> < /tmp/<db_name>.sql
mysql -h <endpoint> -P <port> -u <username> -p <dest_db> < /tmp/<db_name>_trigger.sqlGanti placeholder dengan nilai Anda:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
<endpoint> | Titik akhir publik instans RDS | rm-bpxxxxx.mariadb.rds.aliyuncs.com |
<port> | Port publik instans RDS | 3306 |
<username> | Username akun istimewa pada instans RDS | testuser |
<dest_db> | Nama database tujuan pada instans RDS | test001 |
<db_name> | Nama database yang dikelola sendiri (digunakan dalam path file) | testdb |
Contoh:
mysql -h rm-bpxxxxx.mariadb.rds.aliyuncs.com -P 3306 -u testuser -p test001 < /tmp/testdb.sql
mysql -h rm-bpxxxxx.mariadb.rds.aliyuncs.com -P 3306 -u testuser -p test001 < /tmp/testdb_trigger.sqlLangkah 5: Verifikasi migrasi
Segarkan alat koneksi jarak jauh dan periksa tabel-tabel di database tujuan. Jika tabel sudah ada dan berisi data, migrasi telah selesai.