Sebelum melakukan migrasi instans PostgreSQL yang dikelola sendiri ke ApsaraDB RDS for PostgreSQL, Anda harus mengonfigurasi dua parameter dalam file postgresql.conf: listen_addresses agar instans RDS dapat terhubung selama migrasi, serta parameter retensi WAL (wal_keep_segments atau wal_keep_size) untuk mencegah catatan write-ahead logging (WAL) dihapus sebelum replikasi selesai.
Contoh dalam topik ini menggunakan PostgreSQL 13 pada CentOS 7. Sesuaikan nomor versi dalam path file dan perintah dengan lingkungan Anda.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans PostgreSQL yang dikelola sendiri yang di-deploy pada instans Elastic Compute Service (ECS) atau di pusat data
Akses ke pengguna
postgresdan penggunarootpada host
Langkah 1: Periksa nilai parameter saat ini
Hubungkan ke instans PostgreSQL yang dikelola sendiri dan jalankan perintah berikut untuk memeriksa nilai saat ini.
| Parameter | Berlaku untuk | Perintah | Nilai yang diperlukan |
|---|---|---|---|
listen_addresses | Semua versi | SHOW listen_addresses; | * |
wal_keep_segments | PostgreSQL 10, 11, 12 | SHOW wal_keep_segments; | 4096 atau lebih besar |
wal_keep_size | PostgreSQL 13 dan versi setelahnya | SHOW wal_keep_size; | 65536 MB atau lebih besar |
Fungsi parameter ini:
listen_addresses: Menentukan alamat IP yang diterima oleh instans untuk koneksi. Mengaturnya ke*memungkinkan instans RDS terhubung selama migrasi.wal_keep_segments/wal_keep_size: Mengontrol jumlah data WAL yang disimpan di direktoripg_wal. Jika nilainya terlalu rendah, catatan WAL akan dihapus setelah cadangan penuh, sehingga mengganggu replikasi dan memaksa Anda untuk memulai ulang pencadangan dari awal.
Kedua parameter listen_addresses dan parameter retensi WAL merupakan parameter statis yang hanya berlaku setelah layanan di-restart sepenuhnya. Jika ada nilai yang tidak memenuhi persyaratan, lakukan Langkah 2 hingga 5 untuk menghentikan layanan, memperbarui file, lalu menjalankannya kembali.
Jika semua nilai sudah memenuhi persyaratan, lanjutkan ke Buat akun untuk migrasi cloud pada instans PostgreSQL yang dikelola sendiri.
Langkah 2: Hentikan layanan database PostgreSQL
Hanya penggunapostgresyang dapat menjalankan perintahpg_ctl. Jalankansu - postgresuntuk beralih ke penggunapostgres.
/usr/pgsql-13/bin/pg_ctl stop -m fastLangkah 3: Temukan file postgresql.conf
Hanya penggunarootyang dapat menjalankan perintahfind. Jalankansu - rootuntuk beralih ke penggunaroot.
find / -name postgresql.confOutput menampilkan path file, contohnya:
/var/lib/pgsql/13/data/postgresql.confLangkah 4: Edit file postgresql.conf
Navigasi ke direktori tersebut dan buka file tersebut.
cd /var/lib/pgsql/13/data/
vim postgresql.confAtur parameter ke nilai yang diperlukan. Parameter ini mungkin dikomentari secara default — hapus tanda # di awal setiap baris setelah diedit.
listen_addresses = '*'
# PostgreSQL 10, 11, atau 12:
wal_keep_segments = 4096
# PostgreSQL 13 dan versi setelahnya:
wal_keep_size = 65536Tekan Esc, lalu masukkan :wq untuk menyimpan dan keluar.
Langkah 5: Jalankan layanan database PostgreSQL
Hanya penggunapostgresyang dapat menjalankan perintahpg_ctl. Jalankansu - postgresuntuk beralih ke penggunapostgres.
/usr/pgsql-13/bin/pg_ctl startLangkah selanjutnya
Buat akun untuk migrasi cloud pada instans PostgreSQL yang dikelola sendiri