ApsaraDB RDS for MySQL mendukung instans replikasi native—instans MySQL yang di-host di cloud dan berfungsi sebagai database sekunder read-only untuk database MySQL utama Anda yang dikelola sendiri. Topik ini menjelaskan tiga solusi untuk melakukan cadangan penuh, mengimpornya ke instans replikasi native RDS, dan menetapkan saluran replikasi langsung dari database yang dikelola sendiri ke cloud.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans RDS for MySQL dengan replikasi native diaktifkan. Buat instans baru atau tingkatkan instans yang sudah ada. Instans tersebut harus memenuhi semua kondisi berikut, yang dapat Anda verifikasi pada halaman Basic Information:
Versi database: MySQL 5.7 (versi minor 20240930 atau lebih baru) atau MySQL 8.0 (versi minor 20250531 atau lebih baru)
Seri produk: Edisi Dasar
Metode penagihan: subscription atau pay-as-you-go
Wilayah: China (Shanghai), China (Beijing), China (Shenzhen), China (Guangzhou), atau China (Chengdu)
Untuk menggunakan instans replikasi native Serverless, pertama-tama buat instans pay-as-you-go dan aktifkan replikasi native, lalu ubah metode penagihannya menjadi Serverless.
Replikasi native saat ini hanya tersedia di lima wilayah yang disebutkan di atas. Jika Anda memerlukan fitur ini di wilayah yang belum didukung, kirim tiket.
Database MySQL yang dikelola sendiri yang menjalankan versi utama yang sama dengan instans RDS for MySQL (misalnya, keduanya MySQL 8.0). Replikasi native lintas versi utama tidak didukung. Jika versi utamanya berbeda, seperti mengimpor cadangan MySQL 5.7 ke instans MySQL 8.0, tugas impor cadangan akan gagal dengan error seperti berikut:
[ERROR] [MY-011825] [Xtrabackup] This version of Percona XtraBackup can only perform backups and restores against MySQL 8.0 and Percona Server 8.0, please use Percona XtraBackup 2.4 for this database.Akun istimewa pada instans RDS for MySQL.
Koneksi jaringan antara database MySQL yang dikelola sendiri dan instans RDS for MySQL. Lihat Konfigurasi jaringan.
Akun replikasi pada database MySQL yang dikelola sendiri dengan hak istimewa
REPLICATION CLIENTdanREPLICATION SLAVE. Jalankan perintah berikut pada MySQL yang dikelola sendiri untuk membuatnya:CREATE USER 'repl_user'@'<rds_instance_ip>' IDENTIFIED BY '<replication_password>'; GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'repl_user'@'<rds_instance_ip>'; FLUSH PRIVILEGES;
Pilih solusi
Pilih solusi yang paling sesuai dengan situasi Anda:
Solusi | Metode transfer | Paling cocok untuk | OSS diperlukan |
Solusi 1: XtraBackup + impor OSS | Unggah cadangan ke OSS, lalu impor melalui konsol | Database besar; memerlukan enkripsi sisi server atau pemulihan berdasarkan titik waktu tertentu | Ya |
Solusi 2: XtraBackup + transfer aliran langsung | Alirkan cadangan langsung ke RDS melalui tool backup-helper | Penyiapan lebih sederhana tanpa OSS | Tidak |
Solusi 3: mysqldump + impor Data Management Service | Dump SQL logis diimpor melalui DMS | Database kecil; XtraBackup tidak tersedia | Tidak |
Ketiga solusi mengikuti alur kerja yang sama secara umum:
Lakukan cadangan penuh database MySQL yang dikelola sendiri.
Impor cadangan tersebut ke instans replikasi native RDS.
Siapkan saluran replikasi dari database yang dikelola sendiri ke RDS.
Solusi 1: Cadangan aliran XtraBackup dan impor OSS
Keunggulan
Instans replikasi native RDS for MySQL sepenuhnya kompatibel dengan cadangan fisik XtraBackup dan mendukung fitur-fitur berikut:
Mendeteksi GTID dalam file cadangan secara otomatis untuk menyelaraskan offset guna menyiapkan saluran replikasi.
Anda dapat mengunggah file cadangan ke Object Storage Service (OSS) dan mengaktifkan enkripsi sisi server untuk memastikan keamanan data.
Anda dapat membangun ulang instans replikasi native dari set cadangan tertentu, yang membantu menyelesaikan masalah gangguan replikasi kompleks.
Penagihan
Membuat instans baru dengan replikasi native yang diaktifkan akan dikenai biaya instans. Meningkatkan instans yang sudah ada tidak dikenai biaya tambahan.
Menyimpan file cadangan di Object Storage Service (OSS) akan dikenai biaya penyimpanan OSS.
Langkah 1: Instal XtraBackup pada host database yang dikelola sendiri
Pada CentOS:
Untuk MySQL 5.7:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpmUntuk MySQL 8.0:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpmPada Ubuntu:
Untuk MySQL 5.7:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpmUntuk MySQL 8.0:
wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpmKemudian instal qpress (hanya untuk Ubuntu—tidak disertakan dalam paket XtraBackup di Ubuntu):
sudo apt-get install -y qpressLangkah 2: Lakukan cadangan penuh
Perintah berikut ditujukan untuk database yang menggunakan InnoDB sebagai mesin penyimpanan utama. Jika database Anda berisi tabel MyISAM, gunakan innobackupex sebagai ganti xtrabackup.
Pilih salah satu metode kompresi:
Metode 1: Kompresi qpress default (output .xb)
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
--compress > ./<backup_file_name_such_as_backup_1206.xb>Metode 2: Kompresi QuickLZ (output _qp.xb)—memerlukan XtraBackup 8.0.34-29 atau lebih lama
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
--compress > ./<backup_file_name_such_as_backup_1206_qp.xb>Untuk informasi lebih lanjut, lihat tutorial resmi Percona XtraBackup.
Metode 3: Kompresi eksternal zstd (output .xb.zstd)
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
| zstd -q - > ./<backup_file_name_such_as_backup_1206.xb.zstd>Flag utama yang digunakan dalam ketiga perintah:
Flag | Tujuan |
| Mengalirkan cadangan ke stdout sebagai arsip xbstream, bukan menulis ke file individual |
| Mengompresi data cadangan sebelum dialirkan, sehingga mengurangi ukuran transfer |
Langkah 3: Unggah cadangan ke OSS
Bucket OSS harus berada di wilayah yang sama dengan instans RDS for MySQL Anda. Jika tidak, RDS tidak dapat mengambil file cadangan tersebut.
Instal ossutil:
yum install -y unzip
sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
ossutil configUnggah file cadangan:
ossutil -e <OSS_Endpoint> -i <your_AccessKeyId> -k <your_AccessKeySecret> cp <backup_file_name> oss://<Bucket_name>/Ganti placeholder dengan nilai aktual:
Placeholder | Deskripsi | Contoh |
| Titik akhir OSS untuk wilayah Anda |
|
| ID AccessKey Alibaba Cloud Anda |
|
| Rahasia AccessKey Alibaba Cloud Anda |
|
| Jalur lokal ke file cadangan |
|
| Nama bucket OSS Anda |
|
Langkah 4: Impor cadangan dan siapkan saluran replikasi
Buka daftar Instans RDS, pilih wilayah, lalu klik ID instans target.
Pada panel navigasi kiri, klik Native Replication.
Klik Import Full Data, konfigurasikan parameter di bawah ini, lalu klik OK.
Metode unggah cadangan (wajib)
Parameter | Deskripsi |
MySQL Version | Otomatis diisi dengan 5.7 atau 8.0. Tidak perlu tindakan tambahan. |
Import Method | Pilih Import from OSS. |
OSS Bucket | Pilih bucket tempat file cadangan disimpan. |
OSS File Name | Pilih file cadangan. Jika file berada di subdirektori, masukkan jalur lengkapnya secara manual. Format yang didukung: |
Konfigurasi saluran replikasi otomatis (opsional tetapi direkomendasikan)
Parameter | Deskripsi |
Auto Replication Building | Nyalakan agar RDS secara otomatis menyiapkan saluran replikasi setelah impor selesai. Jika dinonaktifkan, siapkan saluran secara manual setelah impor selesai. |
Source IP Address | Alamat IP database MySQL yang dikelola sendiri. |
Source Port | Port database MySQL yang dikelola sendiri. |
Source Account | Akun replikasi pada database MySQL yang dikelola sendiri (harus memiliki hak istimewa |
Account Password | Password untuk akun replikasi. |
Verifikasi status replikasi
Setelah mengklik OK, kembali ke halaman Native Replication. Saat status replikasi berubah menjadi Running, saluran telah terbentuk dan data mengalir dari database yang dikelola sendiri ke RDS.
Jika status menunjukkan Error, periksa:
Konektivitas jaringan antara database yang dikelola sendiri dan instans RDS
Akun replikasi memiliki hak istimewa yang benar
Wilayah bucket OSS dan jalur file yang ditentukan sudah benar
Solusi 2: Cadangan aliran XtraBackup dan transfer langsung
Solusi ini mengalirkan cadangan langsung dari database yang dikelola sendiri ke RDS menggunakan tool backup-helper, tanpa memerlukan bucket OSS.
Penagihan
Membuat instans baru dengan replikasi native yang diaktifkan akan dikenai biaya instans. Meningkatkan instans yang sudah ada tidak dikenai biaya tambahan.
Langkah 1: Instal XtraBackup pada host database yang dikelola sendiri
Ikuti instruksi yang sama seperti Langkah 1 pada Solusi 1.
Langkah 2: Instal backup-helper dan mulai aliran cadangan
Pada host database yang dikelola sendiri, unduh dan jalankan tool backup-helper:
# Unduh dan jadikan backup-helper dapat dieksekusi
wget -O backup-helper https://mysql-backup-helper.oss-cn-beijing.aliyuncs.com/v1.0.0-alpha/backup-helper && chmod +x backup-helper
# Mulai aliran cadangan
./backup-helper --backup --mode=stream \
--host=<MySQL_IP> \
--port=<MySQL_port> \
--user=<MySQL_account> \
--password=<MySQL_password>Tool ini akan memulai pendengar pada port 9999 secara default dan menunggu RDS terhubung serta menarik aliran cadangan.
Langkah 3: Impor aliran cadangan ke RDS
Masuk ke Konsol ApsaraDB RDS, pilih wilayah, lalu klik ID instans.
Pada panel navigasi kiri, klik Native Replication.
Klik Import Full Data, konfigurasikan parameter di bawah ini, lalu klik OK.
Metode unggah cadangan (wajib)
Parameter | Deskripsi |
MySQL Version | Otomatis diisi dengan 5.7 atau 8.0. Tidak perlu tindakan tambahan. |
Import Method | Pilih Direct Stream Backup. |
Source Backup IP Address | Alamat IP pendengar backup-helper (host database yang dikelola sendiri). |
Source Backup Port | Port pendengar backup-helper. Default: 9999. |
Konfigurasi saluran replikasi otomatis (opsional tetapi direkomendasikan)
Parameter | Deskripsi |
Auto Replication Building | Nyalakan agar RDS secara otomatis menyiapkan saluran replikasi setelah impor selesai. Jika dinonaktifkan, siapkan saluran secara manual setelah impor selesai. |
Source IP Address | Alamat IP database MySQL yang dikelola sendiri. |
Source Port | Port database MySQL yang dikelola sendiri. |
Source Account | Akun replikasi (harus memiliki hak istimewa |
Account Password | Password untuk akun replikasi. |
Verifikasi status replikasi
Setelah mengklik OK, kembali ke halaman Native Replication. Saat status replikasi berubah menjadi Running, saluran telah aktif.
Jika status menunjukkan Error, periksa:
Backup Helper masih berjalan di host yang dikelola sendiri.
Konektivitas jaringan antara host yang dikelola sendiri dan instans RDS pada port 9999
Akun replikasi memiliki hak istimewa yang benar
Solusi 3: mysqldump dan impor DMS
Solusi ini menggunakan dump SQL logis dan mengimpornya melalui Data Management Service (DMS). Solusi ini cocok untuk database yang lebih kecil dan tidak memerlukan XtraBackup.
Penagihan
Membuat instans RDS for MySQL baru akan dikenai biaya instans RDS dan biaya penyimpanan.
Langkah 1: Lakukan cadangan logis dengan mysqldump
mysqldump --all-databases \
--single-transaction \
--order-by-primary \
--set-gtid-purged=off \
--master-data=2 \
-u local_user \
-p local_password \
-h 127.0.0.1 \
-P 3306 > data.sqlFlag utama:
Flag | Tujuan |
| Mengambil snapshot konsisten tabel InnoDB tanpa mengunci, sehingga database tetap tersedia selama proses dump |
| Mengurutkan baris setiap tabel berdasarkan primary key, yang mempercepat proses impor |
| Menghilangkan pernyataan |
| Menambahkan pernyataan |
Output --master-data=2 tampak seperti berikut dalam file SQL:
Langkah 2: Impor dump SQL menggunakan DMS
Masuk ke database RDS for MySQL menggunakan DMS dengan akun istimewa Anda.
Klik ikon
di pojok kiri atas dan pilih All Features > Database Development > Data Change > Data Import.CatatanPada mode non-streamlined, pilih Database Development > Data Change > Data Import dari bilah menu atas.
Pada halaman Ticket Application, pilih Large Data Import, tentukan database RDS for MySQL target, lalu unggah file
data.sql. Untuk opsi konfigurasi lainnya, lihat Data Import.
Langkah 3: Siapkan saluran replikasi
Mengimpor cadangan logis melalui DMS menghasilkan entri log biner dan GTID sendiri pada secondary RDS. Jika nantinya Anda mempromosikan secondary ini menjadi primary, GTID tambahan tersebut dapat menyebar ke replica lain dan mengganggu replikasi. Sebelum menyiapkan saluran replikasi, lakukan salah satu langkah berikut untuk menghindarinya:
Nonaktifkan lalu aktifkan kembali replikasi native pada instans RDS. Ini akan menjalankan
RESET MASTERdan menghapus GTID tambahan.Sisipkan transaksi kosong pada semua node lain dalam topologi replikasi Anda untuk menyerap GTID berlebih tersebut.
Jalankan perintah berikut di DMS pada instans secondary RDS. Temukan nama file log biner dan posisinya dari baris CHANGE MASTER TO yang dikomentari dalam file data.sql Anda.
-- Siapkan saluran replikasi
CHANGE MASTER TO
MASTER_HOST = '<source_host_IP>',
MASTER_USER = '<replication_user>',
MASTER_PASSWORD = '<replication_password>',
MASTER_PORT = 3306,
MASTER_LOG_FILE = '<binlog_file_name>',
MASTER_LOG_POS = 190;
-- Mulai replikasi
START SLAVE;
-- Periksa status replikasi
SHOW SLAVE STATUS\GCHANGE MASTER TO, START SLAVE, dan SHOW SLAVE STATUS kompatibel dengan MySQL 5.7. Untuk MySQL 8.0.22 dan versi lebih baru, sintaks yang disarankan adalah CHANGE REPLICATION SOURCE TO, START REPLICA, dan SHOW REPLICA STATUS. Kedua bentuk ini berfungsi pada instans MySQL 8.0, tetapi sintaks baru lebih direkomendasikan untuk 8.0.
Verifikasi status replikasi
Pada output SHOW SLAVE STATUS\G, pastikan hal berikut:
Field | Nilai yang diharapkan | Makna |
|
| Thread I/O terhubung ke sumber dan menerima event log biner |
|
| Thread SQL sedang menerapkan event tersebut |
| Angka yang menurun | Keterlambatan replikasi; nilai tinggi awalnya normal karena secondary sedang mengejar ketinggalan |
Jika salah satu thread menunjukkan No, periksa Last_IO_Error atau Last_SQL_Error dalam output untuk pesan error spesifik.
Atau, kembali ke halaman Native Replication di konsol RDS. Saat status replikasi menunjukkan Running, saluran telah terbentuk.