Gunakan fitur migrasi cloud ApsaraDB RDS for PostgreSQL untuk memindahkan instans PostgreSQL yang dikelola sendiri atau instans PostgreSQL dari penyedia cloud pihak ketiga ke ApsaraDB RDS. Migrasi ini menghubungkan instans sumber Anda ke instans RDS melalui jalur Network Address Translation (NAT) yang aman melalui internet—instans RDS menginisiasi koneksi ke sumber, tetapi tidak pernah terpapar ke internet publik.
Pendekatan ini cocok untuk instans sumber yang hanya dapat dijangkau melalui alamat IP publik (server yang dikelola sendiri atau database cloud pihak ketiga seperti AWS RDS atau Google Cloud SQL). Jika instans sumber Anda sudah berada di dalam VPC Alibaba Cloud, gunakan jalur migrasi jaringan privat sebagai gantinya.
Cara kerja
Proses end-to-end terdiri dari empat fase:
Konfigurasikan konektivitas jaringan — Pasang Internet NAT Gateway dan alamat IP elastis (EIP) ke VPC RDS agar instans RDS dapat menjangkau instans sumber melalui internet.
Konfigurasikan instans sumber — Atur parameter WAL, buat akun migrasi, dan tambahkan EIP ke daftar putih di sisi sumber.
Jalankan evaluasi kelayakan — ApsaraDB RDS memeriksa kompatibilitas versi, izin akun, dan konfigurasi WAL sebelum migrasi dimulai.
Mulai dan alihkan — Picu migrasi, pantau sinkronisasi inkremental, lalu alihkan beban kerja ke instans RDS.
Latar belakang
Instans ApsaraDB RDS berjalan di dalam virtual private cloud (VPC) dan secara default tidak memiliki akses internet. Untuk menarik data dari instans sumber yang hanya memiliki alamat IP publik, Anda perlu memberikan konektivitas internet arah keluar kepada instans RDS. Pasang Internet NAT Gateway ke VPC dan asosiasikan EIP dengannya. Entri Source Network Address Translation (SNAT) yang dibuat untuk gateway NAT memungkinkan instans RDS menjangkau internet tanpa mengekspos layanan RDS apa pun ke publik.
Untuk informasi lebih lanjut tentang Internet NAT Gateway dan SNAT, lihat Gunakan fitur SNAT pada Internet NAT Gateway untuk mengakses Internet.
Kasus penggunaan
Migrasikan instans PostgreSQL yang dikelola sendiri dan memiliki alamat IP publik ke ApsaraDB RDS for PostgreSQL.
Migrasikan instans PostgreSQL yang dihosting di penyedia cloud pihak ketiga (seperti Google Cloud atau AWS) ke ApsaraDB RDS for PostgreSQL.
Penyedia cloud pihak ketiga mungkin menggunakan ekstensi PostgreSQL kustom. Jika terjadi masalah kompatibilitas ekstensi, submit a ticketsubmit a ticket.
Prasyarat
Sebelum memulai, pastikan bahwa:
Instans PostgreSQL sumber dan instans RDS menjalankan versi mesin utama yang sama. PostgreSQL 10 atau versi yang lebih baru didukung.
CatatanJika versi sumber lebih awal dari PostgreSQL 10, lakukan upgrade terlebih dahulu sebelum migrasi. Jika versi utamanya berbeda, evaluasi kelayakan akan gagal dan migrasi tidak dapat dilanjutkan.
Instans RDS adalah instans primary. Instans read-only tidak mendukung fitur migrasi cloud.
Instans RDS menggunakan cloud disk.
Instans RDS kosong, dan kapasitas penyimpanannya tersedia lebih besar dari atau sama dengan ukuran data pada instans sumber.
CatatanJika instans RDS berisi data, evaluasi kelayakan akan gagal. Cadangkan dan hapus datanya, atau buat instans RDS baru sebelum melanjutkan.
Batasan
Tidak ada.
Dampak
Tidak ada.
Catatan penggunaan
Selama migrasi, pastikan instans PostgreSQL sumber tetap dapat diakses. Jangan melakukan restart. Koneksi sementara atau alih bencana high-availability pada instans sumber menyebabkan migrasi gagal.
Penagihan
Konfigurasi Internet NAT Gateway dan EIP dikenai biaya. Lihat Penagihan Internet NAT Gateway.
Langkah 1: Konfigurasikan Internet NAT gateway dan EIP
Langkah ini memberikan akses internet arah keluar ke VPC RDS sehingga instans RDS dapat menjangkau instans sumber.
Pastikan tidak ada Internet NAT Gateway yang sudah dikonfigurasi dan tidak ada alamat IP publik yang sudah diasosiasikan dengan VPC RDS. Konfigurasi yang sudah ada dapat menyebabkan instans RDS menjadi tidak dapat diakses.
Buka halaman Instances. Di bilah navigasi atas, pilih wilayah tempat instans RDS berada. Temukan instans tersebut dan klik ID-nya.
Di panel navigasi kiri, klik Database Connection. Di bagian Database Connection, klik tautan VPC di samping Network Type.

Di konsol VPC, klik tab Resources. Di bagian Access to Internet, klik Create Now.

Di halaman Internet NAT Gateway, konfigurasikan parameter berikut. Biarkan semua parameter lain pada nilai default-nya.
Parameter Deskripsi Contoh EIP Jika EIP sudah diasosiasikan dengan VPC, pilih Select EIP. Jika belum, pilih Purchase EIP. Purchase EIP Maximum Bandwidth Atur ke nilai tertinggi yang diizinkan oleh paket Anda untuk mencegah bandwidth memperlambat migrasi. 200Mbps Klik Buy Now.
Tinjau pengaturan, terima Terms of Service, lalu klik Confirm. Saat halaman berikut muncul, gateway NAT telah dibuat, EIP telah diasosiasikan, dan entri SNAT telah dikonfigurasi.

Klik ID resource EIP. Di tab Instance Information, catat IP address publiknya. Anda akan membutuhkan EIP ini saat mengonfigurasi instans sumber di langkah berikutnya.

Langkah 2: Konfigurasikan instans sumber
Langkah konfigurasi berbeda tergantung apakah sumber Anda adalah instans yang dikelola sendiri atau instans cloud pihak ketiga.
Instans PostgreSQL yang dikelola sendiri
Buat akun migrasi pada instans sumber.
Perbarui file pg_hba.conf untuk mengizinkan koneksi dari EIP yang diperoleh di Langkah 1.
PentingAlamat IP yang ditambahkan ke pg_hba.conf adalah EIP yang diasosiasikan dengan instans RDS di Langkah 1, bukan IP privat instans RDS.
Konfigurasikan firewall server untuk mengizinkan koneksi inbound dari EIP.
Instans PostgreSQL cloud pihak ketiga
1. Atur parameter retensi WAL.
PostgreSQL menghapus file write-ahead log (WAL) dari direktori pg_wal setelah cadangan penuh jika retensinya terlalu rendah. Jika file WAL dihapus sebelum cadangan penuh selesai, migrasi gagal dan Anda harus memulai ulang dari cadangan penuh. Atur retensi cukup tinggi untuk mencakup durasi jendela cadangan penuh:
PostgreSQL 10, 11, dan 12 — `wal_keep_segments`: Atur ke
4096atau lebih tinggi. Setiap segmen berukuran 16 MB, sehingga 4096 segmen menyimpan sekitar 64 GB WAL, yang cukup untuk sebagian besar jendela cadangan penuh. Jika cadangan penuh Anda memakan waktu lebih dari beberapa jam, naikkan nilai ini.PostgreSQL 13, 14, dan 15 — `wal_keep_size`: Atur ke
65536(MB) atau lebih tinggi. Nilai ini secara langsung mengontrol ukuran minimum WAL yang disimpan di direktori pg_wal.
2. Buat akun migrasi.
Jalankan SQL berikut pada instans sumber:
CREATE USER migratetest CREATEROLE REPLICATION LOGIN PASSWORD '123456';
GRANT pg_monitor TO migratetest;Ganti migratetest dan 123456 dengan username dan password aktual Anda.
3. Tambahkan EIP ke daftar putih.
Aktifkan titik akhir publik pada instans sumber dan konfigurasikan security group atau daftar putih untuk mengizinkan koneksi inbound dari EIP yang diperoleh di Langkah 1. Lihat dokumentasi penyedia cloud Anda.
Internet Control Message Protocol (ICMP) harus diaktifkan pada instans sumber. Verifikasi hal ini dengan menjalankan ping <public endpoint of the source instance> sebelum memulai migrasi.
Langkah 3: Jalankan evaluasi kelayakan
Evaluasi kelayakan memeriksa apakah semua prasyarat terpenuhi sebelum migrasi dimulai. Jalankan evaluasi ini sebelum memulai migrasi.
Buka halaman Instances. Temukan instans RDS Anda dan klik ID-nya.
Di panel navigasi kiri, klik Cloud Migration/DR Deployment. Di halaman yang muncul, klik tab Feasibility Evaluation.
Di langkah Configure Scenario and Source Type, pilih Migration to Cloud untuk Scenario dan Self-managed Instance or Other Instance untuk Source. Klik Next.
Di langkah Destination Instance Configuration, klik Next.
Di langkah Source Instance Configuration, pastikan semua item persiapan yang tercantum telah selesai, lalu klik Next.
Di langkah Start Feasibility Evaluation, isi detail instans sumber:
Parameter Deskripsi Migration Task Name Dihasilkan otomatis. Tidak perlu diubah. Source VPC/DNS IP Untuk instans yang dikelola sendiri: alamat IP publik server. Untuk instans cloud pihak ketiga: titik akhir publik instans tersebut. Port of Source Instance Untuk instans yang dikelola sendiri: jalankan netstat -a | grep PGSQLuntuk melihat port-nya. Untuk instans cloud pihak ketiga: periksa konsol penyedia.Username Akun migrasi yang dibuat di Langkah 2. Password Password untuk akun migrasi tersebut. Klik Create Feasibility Evaluation Task.
Setelah evaluasi selesai, periksa kolom Status di bagian Migration to Cloud pada tab Feasibility Evaluation:
Successful — Lanjutkan ke Langkah 4.
Failed — Klik View Report di kolom Actions untuk meninjau error. Setelah memperbaikinya, klik Re-assess untuk menjalankan evaluasi lagi. Untuk error umum, lihat Pengenalan laporan evaluasi migrasi cloud.
Jika ekstensi penyedia cloud pihak ketiga menyebabkan error ketidakcocokan, submit a ticketsubmit a ticket.
Langkah 4: Mulai migrasi dan alihkan
Mulai migrasi hanya setelah status evaluasi kelayakan menunjukkan Successful.
Buka halaman Instances. Temukan instans RDS Anda dan klik ID-nya.
Di panel navigasi kiri, klik Cloud Migration/DR Deployment. Di tab Migration to Cloud, klik Create Cloud Migration Task.
Di kotak dialog Create Cloud Migration Task, pilih tugas evaluasi yang berhasil dari daftar drop-down Associated Assessment Task. Sistem akan mengisi parameter yang diperlukan secara otomatis.
Klik Initiate Migration to Cloud. Migrasi akan dimulai secara otomatis.
PeringatanSelama migrasi, pastikan instans PostgreSQL sumber tetap dapat diakses dan jangan melakukan restart. Koneksi sementara atau alih bencana high-availability menyebabkan migrasi gagal.
Alihkan beban kerja ke instans RDS:
Klik tautan di kolom Cloud Migration Phase untuk memantau progres.
Saat migrasi memasuki fase Incremental Data Synchronization, klik Switchover di kolom Actions.
Di kotak dialog Switchover, hentikan aplikasi Anda dari menulis ke instans sumber. Jalankan SQL berikut untuk mengatur instans sumber ke mode read-only dan menghentikan koneksi yang ada:
-- Set the source instance to read-only. ALTER SYSTEM SET default_transaction_read_only=on; -- Apply the change without a restart. SELECT pg_reload_conf(); -- Terminate all active sessions except system accounts. SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();Centang semua kotak centang dan klik Switch Now. Tunggu hingga migrasi selesai.
Langkah selanjutnya
Arahkan string koneksi aplikasi Anda ke titik akhir instans RDS yang baru.
Aktifkan pencadangan otomatis dan pemantauan pada instans RDS.
Tinjau dokumentasi ApsaraDB RDS for PostgreSQL untuk mengonfigurasi fitur seperti instans read-only, penyetelan parameter, dan wawasan performa.