Gunakan metode ini jika instans MySQL yang Anda kelola sendiri dapat di-offline-kan selama migrasi. Buat cadangan fisik penuh menggunakan Percona XtraBackup, alirkan ke Object Storage Service (OSS), lalu impor melalui konsol ApsaraDB RDS untuk membuat instans RDS baru.
Jika database Anda tidak dapat di-offline-kan, gunakan Data Transmission Service (DTS) untuk melakukan migrasi dengan downtime minimal.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans MySQL yang dikelola sendiri yang memenuhi persyaratan migrasi. Lihat Batasan untuk daftar lengkapnya.
Bucket OSS di wilayah yang sama dengan instans RDS tujuan. Lihat Buat bucket jika Anda perlu membuatnya.
Go dan Unzip telah terinstal di Host yang menjalankan Instans MySQL yang dikelola sendiri.
Batasan
Tinjau batasan berikut sebelum melanjutkan:
Category | Constraint |
MySQL version | Sumber harus menjalankan MySQL 5.7.32 atau versi sebelumnya, atau MySQL 8.0.18 atau versi sebelumnya. Sumber dan tujuan harus menjalankan versi MySQL yang sama. |
Backup tool | MySQL 5.7 memerlukan Percona XtraBackup 2.4. MySQL 8.0 memerlukan Percona XtraBackup 8.0. |
Backup scope | Hanya cadangan penuh. File cadangan diferensial dan log tidak didukung. Data inkremental yang dihasilkan setelah pencadangan selesai tidak termasuk. |
XtraBackup options | Opsi |
Backup file format | File harus dalam format |
OSS encryption | Atur Encryption Method ke None saat membuat bucket OSS. Bucket terenkripsi tidak didukung. |
OSS region | Bucket OSS harus berada di wilayah yang sama dengan instans RDS. |
OSS file size | Maksimum 16 TB saat mengunggah secara bertahap melalui CLI. |
Data directory | Direktori |
InnoDB configuration |
|
Destination | Data hanya dapat dipulihkan ke instans RDS baru — bukan ke instans yang sudah ada. Tujuan harus berupa instans pay-as-you-go yang menjalankan MySQL 5.7 atau MySQL 8.0 pada RDS Edisi Dasar dengan SSD standar. |
Storage | Instans RDS tujuan harus memiliki kapasitas penyimpanan lebih besar daripada data sumber. |
Not migrated | Akun pengguna, fungsi kustom, prosedur tersimpan, dan informasi zona waktu tidak dimigrasikan. Catat hal-hal ini sebelum migrasi dan tambahkan secara manual setelahnya. |
GTID replication | Jika Anda berencana mereplikasi data inkremental setelah migrasi, aktifkan replikasi berbasis GTID dan atur |
AliyunRDSImportRole | Setelah Anda memberi otorisasi kepada ApsaraDB RDS untuk mengakses OSS, sebuah peran RAM bernama |
Backup retention | Jangan hapus file cadangan dari OSS sebelum migrasi selesai. |
Identifikasi objek yang tidak dimigrasikan
Jalankan kueri berikut pada instans sumber untuk mencantumkan prosedur tersimpan dan fungsi yang perlu Anda buat ulang setelah migrasi:
SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE
FROM information_schema.routines
WHERE ROUTINE_SCHEMA NOT IN ('sys', 'information_schema', 'performance_schema', 'mysql');Catat juga akun pengguna dan pengaturan zona waktu sebelum melanjutkan.
Cara kerja
Instal Percona XtraBackup pada host yang menjalankan instans MySQL yang dikelola sendiri.
Instal MySQL Backup Helper, yang menyediakan
backup_helper(pemeriksaan kompatibilitas) danoss_stream(unggah ke OSS).Jalankan pemeriksaan kompatibilitas, buat cadangan penuh, dan alirkan langsung ke OSS. Kemudian impor file cadangan melalui konsol ApsaraDB RDS untuk membuat instans RDS baru.
Lingkungan dalam panduan ini menggunakan instans Elastic Compute Service (ECS) yang menjalankan CentOS Linux V8.3.2011. Untuk langkah-langkah khusus Ubuntu, lihat Lampiran 1: Instal Percona XtraBackup pada Ubuntu dan Lampiran 2: Instal Go dan Unzip pada Ubuntu.
Langkah 1: Instal Percona XtraBackup
Langkah 2: Instal MySQL Backup Helper
MySQL Backup Helper menyediakan dua alat: backup_helper memeriksa apakah instans Anda mendukung migrasi, dan oss_stream mengalirkan cadangan langsung ke OSS.
Instal dependensi (CentOS)
sudo yum install -y go
sudo yum install -y unzipUntuk Ubuntu, lihat Lampiran 2.
Buat MySQL Backup Helper
Unduh kode sumber:
wget https://github.com/aliyun/mysql-backup-helper/archive/refs/heads/master.zipEkstrak paket:
unzip master.zipBuat
backup_helper:cd mysql-backup-helper-master go build -a -o backup_helper main.goBuat
oss_stream:cd oss_stream go build -a -o oss_stream oss_stream.go
Langkah 3: Cadangkan dan migrasikan
3.1 Periksa kompatibilitas migrasi
Jalankan backup_helper untuk memverifikasi bahwa instans sumber mendukung migrasi:
cd ~/mysql-backup-helper-master && ./backup_helper \
-host <host-ip> \
-port <port> \
-user <username> \
--password <password>Ganti placeholder dengan nilai aktual Anda:
Placeholder | Description | Example |
| Alamat IP host yang menjalankan instans MySQL |
|
| Port MySQL |
|
| Username akun root |
|
| Password akun root |
|
Jika pemeriksaan berhasil, lanjutkan ke langkah berikutnya.
3.2 Cadangkan dan unggah ke OSS
Percona XtraBackup menulis baris perintah lengkap (termasuk kata sandi) ke file xtrabackup_info di dalam cadangan. Setelah pengunggahan selesai, pastikan file ini tidak mengekspos kredensial sensitif.
Jalankan pencadangan dan alirkan langsung ke bucket OSS Anda. Pilih perintah sesuai versi MySQL Anda.
MySQL 5.7
MySQL 5.7 — menggunakan innobackupex:
innobackupex --backup \
--host=<host-ip> \
--port=<port> \
--user=<username> \
--password=<password> \
--stream=xbstream \
--compress <temp-dir> | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId <AccessKey-ID> \
-accessKeySecret <AccessKey-secret> \
-bucketName <bucket-name> \
-endpoint <OSS-endpoint> \
-objectName <backup-file-name>Contoh:
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ****** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xbMySQL 8.0
MySQL 8.0 — menggunakan xtrabackup:
xtrabackup --backup \
--host=<host-ip> \
--port=<port> \
--user=<username> \
--password=<password> \
--stream=xbstream \
--compress <temp-dir> | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId <AccessKey-ID> \
-accessKeySecret <AccessKey-secret> \
-bucketName <bucket-name> \
-endpoint <OSS-endpoint> \
-objectName <backup-file-name>Contoh:
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ******** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xbGanti placeholder dengan nilai aktual Anda:
Placeholder | Description | Example |
| Alamat IP host yang menjalankan instans MySQL |
|
| Port MySQL |
|
| Username akun root |
|
| Password akun root |
|
| Direktori sementara untuk pencadangan |
|
| ID AccessKey Alibaba Cloud Anda |
|
| Rahasia AccessKey Alibaba Cloud Anda |
|
| Nama bucket OSS Anda |
|
| Titik akhir bucket OSS Anda |
|
| Nama objek cadangan di OSS |
|
Untuk database besar, jalankan perintah dengan nohup agar tidak terganggu jika sesi terputus. MySQL 5.7: MySQL 8.0:nohup sh -c 'innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream --compress /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI**************** -accessKeySecret ****** -bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &nohup sh -c 'xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** -accessKeySecret ****** \
-bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &Saat pencadangan selesai, terminal akan menampilkan completed OK !.
Login ke konsol OSS untuk memastikan file berhasil diunggah. Jika pengunggahan gagal, jalankan kembali perintah pencadangan.
Jika OSS sementara tidak tersedia, simpan cadangan ke file lokal terlebih dahulu lalu unggah nanti. Lihat Lampiran 3: Cadangkan secara lokal dan unggah ke OSS.
3.3 Impor cadangan di konsol ApsaraDB RDS
Login ke konsol ApsaraDB RDS. Di bilah navigasi atas, pilih wilayah instans RDS tujuan. Di panel navigasi kiri, klik Backups.
Di tab User Backups, klik Import Backup.
Pada wizard Import Guide, baca instruksi dan klik Next hingga mencapai 3. Import Data.
Langkah 1. Back Up Source Database dan 2. Upload Backup Files to OSS dalam wizard ini sesuai dengan Langkah 3.1 dan 3.2 dalam panduan ini.
Pada langkah 3. Import Data, konfigurasikan parameter berikut lalu klik OK.
Jika ApsaraDB RDS belum diberi otorisasi untuk mengakses OSS, klik Authorize di bagian bawah langkah ini. Di halaman yang muncul, klik Confirm Authorization Policy.
Parameter
Description
MySQL version
Menampilkan 5.7/8.0 secara otomatis. MySQL 5.7 dan MySQL 8.0 keduanya didukung.
Region
Wilayah bucket OSS yang menyimpan file cadangan. Harus sesuai dengan wilayah instans RDS tujuan.
OSS Bucket
Bucket OSS yang berisi file cadangan. Lihat Upload objects untuk detailnya.
OSS file name
Objek cadangan di bucket OSS. Mendukung pencocokan fuzzy dan eksak. File harus dalam format
_QP.XB, atau dikompresi sebagaiTAR.GZ.Note
Deskripsi opsional untuk membantu mengidentifikasi file cadangan.
Zone
Zona bucket OSS. Memilih zona memungkinkan ApsaraDB RDS membuat snapshot dalam hitungan detik, sehingga mengurangi waktu impor. Instans RDS baru akan dibuat di zona ini.
Storage Capacity
Kapasitas penyimpanan yang diperlukan untuk file cadangan. Nilai valid: 20–6000 GB. Default-nya 3× ukuran file cadangan (minimum 20 GB).
Di tab User Backups, tunggu hingga Status tugas verifikasi berubah dari Verifying menjadi Completed.
PentingWaktu verifikasi bervariasi. Instans dengan aktivitas write tinggi atau transaksi besar selama pencadangan mungkin memerlukan waktu verifikasi lebih lama.
Temukan file cadangan dan klik Restore di kolom Actions.
Konfigurasikan parameter berikut lalu klik Next: Instance Configuration.
Parameter
Description
Zone of Primary Node
Zona untuk instans RDS utama. Hanya ditampilkan jika Anda tidak memilih zona saat mengimpor file cadangan.
Storage Type
ESSD PL1: Enterprise SSD tingkat kinerja 1. Standard SSD: Perangkat penyimpanan blok elastis standar. Lihat Storage types untuk detailnya.
Instance Type
General-purpose (Entry-level): Memori dan I/O dialokasikan eksklusif, dengan CPU dan penyimpanan bersama. Lihat Primary ApsaraDB RDS instance types untuk daftar lengkapnya.
Storage Capacity
Penyimpanan yang disediakan untuk file data, file sistem, file log, dan file transaksi. Dapat disesuaikan dalam penambahan 5 GB.
Konfigurasikan parameter berikut lalu klik Next: Confirm Order.
Parameter
Description
Network Type
Pilih VPC. virtual private cloud (VPC) menyediakan keamanan lebih tinggi dan kinerja lebih baik. Anda juga harus mengonfigurasi VPC dan vSwitch of Primary Node. Instans RDS dan instans ECS apa pun yang ingin Anda hubungkan harus berada di VPC yang sama.
Parameter Template
Template parameter sistem atau kustom. Lihat Use a parameter template.
Time Zone
Zona waktu untuk instans RDS.
Table Name Case Sensitivity
Jika nama tabel di instans sumber peka huruf besar/kecil, pilih Case-sensitive untuk menjaga konsistensi.
Konfirmasi konfigurasi instans di bagian Parameters, atur Purchase Plan, terima Ketentuan Layanan, lalu klik Pay Now.
ApsaraDB RDS memerlukan waktu 1–5 menit untuk membuat instans.
Langkah selanjutnya
Konfigurasikan periode retensi cadangan
Secara default, file cadangan yang diimpor disimpan selama 3 hari. Sesuaikan periode retensi sesuai kebutuhan Anda.
Login ke konsol ApsaraDB RDS. Pilih wilayah, lalu klik Backups di panel navigasi kiri.
Temukan file cadangan. Di kolom Expiration Time, klik Set Retention Period.
Pilih periode retensi dari daftar drop-down, atau pilih Custom Retention Period dan masukkan nilai.
Klik OK.
Jika waktu kedaluwarsa melebihi tahun 2099, akan ditampilkan sebagai Permanent.
Tambahkan tag ke file cadangan
Login ke konsol ApsaraDB RDS. Pilih wilayah, lalu klik Backups.
Temukan file cadangan. Di kolom Tags, klik +Add.
Di kotak dialog, klik Create a label, isi Key dan Value, klik OK di samping bidang untuk membuat tag, lalu klik OK di pojok kanan bawah.
Untuk menggunakan tag yang sudah ada, pilih dari daftar drop-down Select the label.
Untuk memperbarui tag, arahkan kursor ke tag tersebut lalu klik edit. Di tooltip, ulangi langkah 3.
Periksa data log untuk pemulihan inkremental
Jika terjadi perubahan data di instans sumber selama pencadangan, file cadangan berisi informasi log untuk pemulihan inkremental.
Login ke konsol ApsaraDB RDS. Pilih wilayah, lalu klik Backups.
Temukan file cadangan dan klik View Details di kolom Actions.
Di pesan yang muncul, tinjau data log:
Master_Log_File: File log pertama yang berisi data inkremental.
Master_Log_Position: Entri log pertama dalam file tersebut yang berisi data inkremental.
Periode retensi default untuk catatan validasi cadangan adalah 7 hari. Setelah migrasi, segera replikasikan data inkremental dari instans sumber ke instans RDS tujuan.
Hapus file cadangan
Jika Anda tidak lagi memerlukan file cadangan, hapus untuk mengurangi biaya penyimpanan.
Login ke konsol ApsaraDB RDS. Pilih wilayah, lalu klik Backups.
Temukan file cadangan dan klik Delete di kolom Actions.
Di kotak dialog konfirmasi, klik OK.
Tingkatkan instans RDS Anda
Setelah migrasi, Anda dapat melakukan operasi berikut pada instans RDS baru:
Operasi lain di tab User Backups
Filter kolom: Klik ikon
di pojok kanan atas untuk menampilkan atau menyembunyikan kolom. Pindahkan kolom antara daftar tersembunyi (kiri) dan daftar ditampilkan (kanan) menggunakan ikon
dan
. Klik OK.Ekspor daftar instans: Klik ikon
untuk mengekspor informasi cadangan sebagai file CSV.Refresh: Klik ikon
untuk merefresh tab User Backups.
Lampiran 1: Instal Percona XtraBackup pada Ubuntu
Lampiran 2: Instal Go dan Unzip pada Ubuntu
Lampiran 3: Cadangkan secara lokal dan unggah ke OSS
Gunakan pendekatan ini jika OSS sementara tidak tersedia saat Anda menjalankan pencadangan.
Langkah 1: Cadangkan ke file lokal
Pilih perintah sesuai versi MySQL Anda.
MySQL 5.7:
innobackupex --backup \
--host=<host-ip> --port=<port> \
--user=<username> --password=<password> \
--stream=xbstream --compress <temp-dir> \
> /<backup-dir>/<backup-file-name>_qp.xbContoh:
innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data > /root/backup_qp.xbMySQL 8.0:
xtrabackup --backup \
--host=<host-ip> --port=<port> \
--user=<username> --password=<password> \
--stream=xbstream --compress <temp-dir> \
> /<backup-dir>/<backup-file-name>_qp.xbContoh:
xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
--stream=xbstream --compress /root/mysql/data > /root/backup_qp.xbLangkah 2: Unggah file lokal ke OSS
Saat OSS tersedia, unggah menggunakan oss_stream:
cat /<backup-dir>/<backup-file-name>_qp.xb | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId LTAI**************** \
-accessKeySecret ******** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xbContoh:
cat /root/backup_qp.xb | \
./mysql-backup-helper-master/oss_stream/oss_stream \
-accessKeyId ******** \
-accessKeySecret LTAI**************** \
-bucketName test \
-endpoint oss-ap-southeast-1.aliyuncs.com \
-objectName backup_qp.xb