Replikasi native ApsaraDB RDS for MySQL memungkinkan Anda mereplikasi data dari database MySQL yang dikelola sendiri langsung ke instans RDS menggunakan replikasi MySQL standar—tanpa alat migrasi tambahan atau layanan transfer data berbayar.
Kasus penggunaan
-
Migrasi ke cloud dengan downtime minimal: Impor cadangan penuh dari database yang dikelola sendiri, lalu jaga agar instans RDS tetap sinkron melalui replikasi hingga Anda siap melakukan cut over aplikasi.
-
Sinkronisasi data hybrid: Jaga agar database MySQL on-premises dan instans RDS cloud tetap tersinkronisasi secara berkelanjutan, misalnya selama migrasi bertahap atau konfigurasi pemulihan bencana.
-
Replikasi multicloud: Replikasi data dari database MySQL di penyedia cloud lain ke instans ApsaraDB RDS for MySQL.
Prasyarat
Sebelum memulai, pastikan bahwa:
-
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: Langganan atau pay-as-you-go
-
Wilayah: Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Shenzhen), Tiongkok (Guangzhou), atau Tiongkok (Chengdu)
Replikasi native saat ini hanya tersedia di wilayah-wilayah yang tercantum di atas. Jika Anda memerlukannya di wilayah lain, ajukan tiket.
Untuk menggunakan instans replikasi native Serverless, pertama-tama buat instans pay-as-you-go, aktifkan replikasi native, lalu ubah metode penagihan menjadi Serverless.
Penagihan
-
Instans baru dengan replikasi native diaktifkan: Berlaku biaya instans standar. Tidak ada biaya tambahan untuk fitur replikasi native itu sendiri.
-
Peningkatan instans yang sudah ada: Tidak ada biaya tambahan.
-
Mengimpor data melalui Object Storage Service (OSS): Biaya penyimpanan OSS berlaku selama file backup disimpan di OSS.
Batasan
Batasan fungsional
-
Instans beroperasi dalam mode read-only selama replikasi native aktif.
-
Peningkatan versi utama tidak didukung.
-
Replikasi lintas versi utama tidak didukung. Database MySQL yang dikelola sendiri dan instans replikasi native RDS harus menjalankan versi utama yang sama (misalnya, keduanya MySQL 8.0).
-
Peningkatan seri produk tidak didukung (misalnya, dari Edisi Dasar ke Edisi Ketersediaan Tinggi atau Edisi Kluster).
-
Penggantian VPC tidak didukung.
-
Pemulihan database dan tabel tidak didukung.
-
Saat Anda meningkatkan instans yang sudah ada menjadi instans replikasi native, koneksi sementara sekitar 30 detik dapat terjadi. Lakukan operasi ini selama jam sepi dan pastikan aplikasi Anda memiliki mekanisme rekoneksi.
Batasan izin
Cakupan akun istimewa
Beberapa hak istimewa SUPER untuk replikasi native diberikan kepada akun istimewa instans RDS. Hanya akun istimewa yang dapat menjalankan perintah replikasi native seperti CHANGE MASTER TO (MySQL 5.7) atau CHANGE REPLICATION SOURCE TO (MySQL 8.0).
Daftar izin replikasi yang diizinkan
Saat replikasi native menerapkan event log biner dari sumber eksternal, izin terlebih dahulu diperiksa. Operasi apa pun yang memerlukan izin di luar daftar berikut akan ditolak dan menghentikan replikasi:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE,
DROP, RELOAD, PROCESS, REFERENCES, INDEX,
ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES,
LOCK TABLES, EXECUTE, REPLICATION SLAVE,
REPLICATION CLIENT, CREATE VIEW, SHOW VIEW,
CREATE ROUTINE, ALTER ROUTINE, CREATE USER,
EVENT, TRIGGER ON *.* TO XXX;
Batasan database sistem
Semua operasi pada database sistem diabaikan selama replikasi. Database sistem mencakup mysql, sys, information_schema, performance_schema, dan __recyclebin__.
Operasi yang secara tidak langsung memodifikasi database sistem—sepertiCREATE USERdanGRANT—tidak diabaikan. Operasi ini harus mematuhi daftar izin replikasi yang diizinkan. Pernyataan yang melebihi izin yang diberikan, sepertiGRANT SUPER ON *.* TO xxx;, akan menghentikan replikasi.
Batasan GTID
ApsaraDB RDS for MySQL mewajibkan mode Global Transaction Identifier (GTID) diaktifkan dan tidak mendukung menonaktifkannya. Untuk mereplikasi dari database MySQL eksternal, sumber juga harus mengaktifkan GTID.
Sebelum menyiapkan replikasi, jalankan perintah berikut pada database sumber untuk memeriksa status GTID:
SHOW VARIABLES LIKE 'gtid_mode';
Jika GTID belum diaktifkan, jalankan:
SET GLOBAL gtid_mode = ON;
Perilaku maintenance
Selama operasi maintenance seperti migrasi cross-server atau peningkatan versi minor, izin perintah replikasi native dan izin modifikasi parameter dicabut sementara. Proses replikasi itu sendiri tidak terpengaruh. Izin dipulihkan secara otomatis setelah maintenance selesai.
Izin replikasi native
Akun istimewa pada instans replikasi native memiliki izin tambahan yang tidak tersedia pada instans RDS standar.
Perintah replikasi
| Perintah (MySQL 5.7) | Perintah (MySQL 8.0) | Deskripsi |
|---|---|---|
CHANGE MASTER TO |
CHANGE REPLICATION SOURCE TO |
Mengonfigurasi sumber dan posisi awal untuk replikasi. Lihat dokumentasi MySQL 5.7. |
START SLAVE |
START REPLICA |
Memulai proses replikasi. |
STOP SLAVE |
STOP REPLICA |
Menghentikan proses replikasi. |
RESET SLAVE |
RESET REPLICA |
Mengatur ulang status replica untuk memulai ulang replikasi dari sumber. |
Modifikasi parameter
Akun istimewa juga dapat memodifikasi parameter waktu proses berikut:
-
`SET GLOBAL read_only = ON/OFF;` — Mengalihkan instans antara mode read-only (ON) dan read/write (OFF).
-
`SET SESSION sql_log_bin = ON/OFF;` — Mengontrol apakah pernyataan SQL dalam session saat ini direkam dalam log biner.
-
`SET SESSION GTID_NEXT = "<gtid_value>";` — Menetapkan nilai GTID untuk transaksi berikutnya.
Langkah 1: Aktifkan replikasi native
Aktifkan replikasi native pada instans baru
Saat membuat instans ApsaraDB RDS for MySQL baru di halaman Standard Create, gulir ke bawah, perluas More, lalu aktifkan sakelar Native Replication.
Sakelar tersebut hanya muncul jika konfigurasi instans memenuhi prasyarat.
Aktifkan replikasi native pada instans yang sudah ada
Peningkatan instans yang sudah ada menyebabkan koneksi sementara sekitar 30 detik. Lakukan operasi ini selama jam sepi dan pastikan aplikasi Anda memiliki mekanisme rekoneksi.
-
Buka halaman RDS Instances, pilih wilayah, lalu klik ID instans target.
-
Di panel navigasi kiri, klik Native Replication, lalu klik Enable.
-
Tinjau informasi dalam kotak dialog lalu klik OK.
Jika akun layanan resmi ApsaraDB RDS belum memiliki izin untuk mengakses OSS Anda serta membuat dan menyambungkan elastic network interfaces (ENIs), centang kotak centang yang sesuai dalam kotak dialog untuk memberikan izin tersebut.
Langkah 2: Konfigurasi konektivitas jaringan
Sebelum mengimpor data, pastikan database MySQL yang dikelola sendiri dapat berkomunikasi dengan instans RDS melalui jaringan.
| Skenario | Konfigurasi | Biaya |
|---|---|---|
| MySQL yang dikelola sendiri di ECS dalam VPC yang sama | Konektivitas jaringan tersedia secara default. Konfigurasikan security group ECS untuk mengizinkan inbound traffic pada port 3306 dari IP instans RDS. Untuk mendapatkan IP instans RDS, hubungkan ke instans tersebut dan jalankan SHOW VARIABLES LIKE 'report_host';. |
Tidak ada |
| Cross-VPC atau cross-region di Alibaba Cloud | Gunakan VPC peering connection atau Cloud Enterprise Network (CEN). | Biaya VPC peering connection berlaku. Instans CEN gratis, tetapi biaya transfer data dan bandwidth mungkin berlaku. |
| Pusat data on-premises ke cloud | Gunakan VPN Gateway atau leased line untuk menghubungkan pusat data Anda ke VPC. | Biaya bervariasi tergantung metode. Lihat dokumentasi resmi untuk detailnya. |
| Penyedia cloud lain ke ApsaraDB RDS | Gunakan VPN atau leased line untuk membuat koneksi jaringan cross-cloud. | Biaya bervariasi tergantung metode. Lihat dokumentasi resmi untuk detailnya. |
| Jaringan publik (tidak disarankan) | Instans replikasi native ApsaraDB RDS mendukung akses jaringan publik. Metode ini tidak disarankan karena risiko keamanan. | Biaya bervariasi tergantung metode. |
Untuk referensi lengkap, lihat Connections and networking.
Langkah 3: Impor data penuh dan atur replikasi
Impor cadangan penuh dari database yang dikelola sendiri ke RDS, lalu atur replikasi inkremental untuk menjaga kedua database tetap sinkron.
Instal Percona XtraBackup dan backup database sumber
Instal Percona XtraBackup pada host database yang dikelola sendiri.
Instal di 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
Instal di 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
XtraBackup di Ubuntu tidak menyertakan qpress. Instal secara terpisah:
sudo apt-get install -y qpress
Buat backup
Perintah berikut ditujukan untuk database yang terutama menggunakan engine InnoDB. Jika database Anda berisi tabel MyISAM, gunakan perintah innobackupex sebagai gantinya.
Tiga metode kompresi didukung. Pilih salah satu:
Metode 1: Kompresi qpress default
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
--compress > ./<backup_file_name>.xb
Metode 2: Kompresi QuickLZ
Memerlukan XtraBackup versi 8.0.34-29 atau lebih lama. Lihat dokumentasi Percona XtraBackup untuk detailnya.
xtrabackup --backup \
--host=127.0.0.1 \
--port=3306 \
--user=<user_of_self-managed_MySQL> \
--password=<password> \
--stream=xbstream \
--compress > ./<backup_file_name>_qp.xb
Metode 3: Kompresi Zstandard (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>.xb.zstd
Impor backup dan atur replikasi
Dua metode impor tersedia. Jika Anda dapat mengunggah file backup ke OSS, gunakan Metode 1. Jika lingkungan Anda terbatas dan streaming langsung lebih disukai, gunakan Metode 2.
Metode 1: Impor file backup dari OSS
Unggah backup ke bucket OSS
Bucket OSS harus berada di wilayah yang sama dengan instans RDS.
Instal ossutil:
yum install -y unzip
sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash
ossutil config
Unggah file backup:
ossutil -e <OSS_Endpoint> -i <your_AccessKeyId> -k <your_AccessKeySecret> cp <backup_file_name> oss://<bucket_name>/
Impor backup ke RDS
-
Buka halaman RDS Instances, pilih wilayah, lalu klik ID instans.
-
Di panel navigasi kiri, klik Native Replication.
-
Klik Import Full Data, konfigurasi parameter, lalu klik OK.
| Kategori | Parameter | Deskripsi |
|---|---|---|
| Metode unggah backup (wajib) | MySQL version | Ditampilkan secara otomatis sebagai 5.7 atau 8.0. Tidak perlu dikonfigurasi. |
| Import method | Pilih Import from OSS. | |
| OSS bucket | Pilih bucket OSS yang berisi file backup Anda. | |
| OSS file name | Pilih file backup. Jika file berada di subdirektori, masukkan path lengkapnya. Format yang didukung: .xb (xbstream), _qp.xb (QuickLZ), .xb.zst (zstd). |
|
| Pengaturan replikasi otomatis (opsional) | Auto replication building | Aktifkan untuk secara otomatis menyiapkan replikasi dari database sumber setelah impor. Jika Anda membiarkannya nonaktif, atur replikasi secara manual setelah impor. |
| Source IP address | Alamat IP database sumber yang dikelola sendiri. | |
| Source port | Port database sumber yang dikelola sendiri. | |
| Source account | Akun di database sumber. Harus memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE. |
|
| Account password | Password untuk akun sumber. |
Metode 2: Streaming backup langsung ke RDS
Instal tool backup-helper dan mulai stream backup
# Instal tool backup-helper
wget -O backup-helper https://mysql-backup-helper.oss-cn-beijing.aliyuncs.com/v1.0.0-alpha/backup-helper && chmod +x backup-helper
# Mulai stream backup (memerlukan MySQL dan versi XtraBackup yang sesuai telah diinstal)
./backup-helper --backup --mode=stream --host=<MySQL_IP> --port=<MySQL_port> --user=<MySQL_account> --password=<MySQL_password>
Impor stream ke RDS
-
Login ke Konsol ApsaraDB RDS, pilih wilayah, lalu klik ID instans.
-
Di panel navigasi kiri, klik Native Replication.
-
Klik Import Full Data, konfigurasi parameter, lalu klik OK.
| Kategori | Parameter | Deskripsi |
|---|---|---|
| Metode unggah backup (wajib) | MySQL version | Ditampilkan secara otomatis sebagai 5.7 atau 8.0. Tidak perlu dikonfigurasi. |
| Import method | Pilih Direct Stream Backup. | |
| Source backup IP address | Alamat IP yang digunakan untuk stream backup. | |
| Source backup port | Port yang digunakan untuk stream backup. Default: 9999. | |
| Pengaturan replikasi otomatis (opsional) | Auto replication building | Aktifkan untuk secara otomatis menyiapkan replikasi dari database sumber setelah impor. Jika Anda membiarkannya nonaktif, atur replikasi secara manual setelah impor. |
| Source IP address | Alamat IP database sumber yang dikelola sendiri. | |
| Source port | Port database sumber yang dikelola sendiri. | |
| Source account | Akun di database sumber. Harus memiliki izin REPLICATION CLIENT dan REPLICATION SLAVE. |
|
| Account password | Password untuk akun sumber. |
Atur replikasi secara manual (jika diperlukan)
Jika Anda tidak mengaktifkan Auto replication building selama impor, atau jika pengaturan otomatis gagal dan tidak dapat dipulihkan, atur tautan replikasi secara manual.
-
Buat akun istimewa pada instans RDS.
-
Pada database sumber yang dikelola sendiri, buat akun replikasi dan berikan izin yang diperlukan:
-- Buat akun replikasi. Untuk produksi, batasi alamat IP yang diizinkan alih-alih menggunakan '%'. -- Ganti 'Test123!' dengan password yang kuat. CREATE USER 'replica'@'%' IDENTIFIED BY 'Test123!'; -- Berikan izin replikasi GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%'; -- Terapkan perubahan FLUSH PRIVILEGES; -
Login ke instans RDS menggunakan akun istimewa dan jalankan perintah berikut: MySQL 5.7
-- Konfigurasi sumber replikasi CHANGE MASTER TO MASTER_HOST='<source_IP>', MASTER_PORT='<source_port>', MASTER_USER='<replication_account>', MASTER_PASSWORD='<replication_account_password>', MASTER_AUTO_POSITION=1; -- Mulai replikasi START SLAVE; -- Periksa status replikasi SHOW SLAVE STATUS;MySQL 8.0
-- Konfigurasi sumber replikasi CHANGE REPLICATION SOURCE TO SOURCE_HOST='<source_IP>', SOURCE_PORT='<source_port>', SOURCE_USER='<replication_account>', SOURCE_PASSWORD='<replication_account_password>', SOURCE_AUTO_POSITION=1; -- Mulai replikasi START REPLICA; -- Periksa status replikasi SHOW REPLICA STATUS;
Verifikasi status replikasi
Di halaman Native Replication instans RDS, periksa status replikasi. Saat status menunjukkan Running, tautan replikasi aktif dan data sedang disinkronkan.
Nonaktifkan replikasi native
Saat Anda siap melakukan cut over aplikasi—atau jika Anda tidak lagi memerlukan replikasi—nonaktifkan replikasi native untuk mengalihkan instans kembali ke mode read/write.
-
Buka halaman RDS Instances, pilih wilayah, lalu klik ID instans.
-
Di panel navigasi kiri, klik Native Replication, lalu klik Disable.
-
Klik OK.
Setelah Anda mengklik OK, tautan replikasi dari database sumber dihentikan. Instans RDS kembali menjadi instans ApsaraDB RDS for MySQL standar dan beralih dari mode read-only ke mode read/write, sehingga memungkinkan operasi tulis.
Referensi API
| Operasi | API | Catatan |
|---|---|---|
| Buat instans dengan replikasi native | CreateDBInstance | Atur ExternalReplication ke ON. Konfigurasi dasar instans harus memenuhi prasyarat. |
| Atur tautan replikasi native untuk instans yang sudah ada | ImportUserBackupFile | — |