All Products
Search
Document Center

ApsaraDB RDS:Buat database sekunder berbasis cloud menggunakan replikasi native RDS

Last Updated:Sep 16, 2026

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)

Catatan

Untuk menggunakan instans replikasi native Serverless, pertama-tama buat instans pay-as-you-go dan aktifkan replikasi native, lalu ubah metode penagihannya menjadi Serverless.

Penting

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 CLIENT dan REPLICATION 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:

  1. Lakukan cadangan penuh database MySQL yang dikelola sendiri.

  2. Impor cadangan tersebut ke instans replikasi native RDS.

  3. 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.rpm

Untuk 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.rpm

Pada 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.rpm

Untuk 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.rpm

Kemudian instal qpress (hanya untuk Ubuntu—tidak disertakan dalam paket XtraBackup di Ubuntu):

sudo apt-get install -y qpress

Langkah 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

--stream=xbstream

Mengalirkan cadangan ke stdout sebagai arsip xbstream, bukan menulis ke file individual

--compress

Mengompresi data cadangan sebelum dialirkan, sehingga mengurangi ukuran transfer

Langkah 3: Unggah cadangan ke OSS

Penting

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 config

Unggah 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

<OSS_Endpoint>

Titik akhir OSS untuk wilayah Anda

oss-cn-shanghai.aliyuncs.com

<your_AccessKeyId>

ID AccessKey Alibaba Cloud Anda

LTAI5tXxx...

<your_AccessKeySecret>

Rahasia AccessKey Alibaba Cloud Anda

xXxXxXx...

<backup_file_name>

Jalur lokal ke file cadangan

./backup_1206.xb

<Bucket_name>

Nama bucket OSS Anda

my-rds-backup-bucket

Langkah 4: Impor cadangan dan siapkan saluran replikasi

  1. Buka daftar Instans RDS, pilih wilayah, lalu klik ID instans target.

  2. Pada panel navigasi kiri, klik Native Replication.

  3. 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: .xb (xbstream), _qp.xb (QuickLZ), .xb.zst (zstd).

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 REPLICATION CLIENT dan REPLICATION SLAVE).

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

  1. Masuk ke Konsol ApsaraDB RDS, pilih wilayah, lalu klik ID instans.

  2. Pada panel navigasi kiri, klik Native Replication.

  3. 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 REPLICATION CLIENT dan REPLICATION SLAVE).

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

Flag utama:

Flag

Tujuan

--single-transaction

Mengambil snapshot konsisten tabel InnoDB tanpa mengunci, sehingga database tetap tersedia selama proses dump

--order-by-primary

Mengurutkan baris setiap tabel berdasarkan primary key, yang mempercepat proses impor

--set-gtid-purged=off

Menghilangkan pernyataan SET @@GLOBAL.GTID_PURGED dari dump. RDS for MySQL tidak memberikan izin untuk memodifikasi GTID_PURGED, sehingga menyertakan pernyataan ini menyebabkan error saat impor

--master-data=2

Menambahkan pernyataan CHANGE MASTER TO yang dikomentari ke dalam dump, berisi nama file log biner dan posisi pada saat pengambilan snapshot. Hal ini memungkinkan Anda menyiapkan replikasi tanpa perlu menanyakan informasi tersebut secara manual ke primary

Output --master-data=2 tampak seperti berikut dalam file SQL:

Langkah 2: Impor dump SQL menggunakan DMS

  1. Masuk ke database RDS for MySQL menggunakan DMS dengan akun istimewa Anda.

  2. Klik ikon 2023-01-28_15-57-17.png di pojok kiri atas dan pilih All Features > Database Development > Data Change > Data Import.

    Catatan

    Pada mode non-streamlined, pilih Database Development > Data Change > Data Import dari bilah menu atas.

  3. 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

Penting

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 MASTER dan 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\G
Catatan

CHANGE 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

Slave_IO_Running

Yes

Thread I/O terhubung ke sumber dan menerima event log biner

Slave_SQL_Running

Yes

Thread SQL sedang menerapkan event tersebut

Seconds_Behind_Master

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.

Langkah selanjutnya