All Products
Search
Document Center

PolarDB:Migrasi dari database PostgreSQL yang dikelola sendiri ke PolarDB for PostgreSQL

Last Updated:Mar 29, 2026

Gunakan pg_dumpall, pg_dump, dan pg_restore untuk melakukan migrasi offline penuh dari database PostgreSQL yang dikelola sendiri ke kluster PolarDB for PostgreSQL melalui instans Elastic Compute Service (ECS) perantara.

Untuk migrasi dari instans ApsaraDB RDS for PostgreSQL, lihat Migrasi data dari instans ApsaraDB RDS for PostgreSQL ke kluster PolarDB for PostgreSQL.

Cara kerja

Migrasi ini mencakup empat langkah:

  1. Siapkan instans ECS dalam virtual private cloud (VPC) yang sama dengan kluster tujuan.

  2. Backup informasi role dan data database dari database PostgreSQL sumber.

  3. Unggah file backup ke instans ECS dan pulihkan ke kluster PolarDB for PostgreSQL.

  4. Verifikasi bahwa data telah berhasil dimigrasikan.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Kluster PolarDB for PostgreSQL dengan kapasitas penyimpanan tersedia yang lebih besar daripada ukuran database sumber.

  • Instans ECS Linux yang menjalankan Ubuntu 16.04 64-bit di VPC yang sama dengan kluster tujuan (Anda dapat menggunakan instans pay-as-you-go dan melepasnya setelah migrasi).

  • Klien PostgreSQL yang terinstal pada instans ECS yang sesuai dengan versi utama database sumber — lihat dokumentasi PostgreSQL untuk petunjuk instalasi.

Penting

Ketidaksesuaian versi klien merupakan penyebab umum kegagalan migrasi. Pastikan versi klien sesuai dengan versi database sumber Anda.

Untuk petunjuk membuat instans ECS, lihat Create an ECS instance.

Catatan penggunaan

Prosedur ini melakukan migrasi data penuh. Hentikan semua operasi write pada database sumber sebelum memulai dan pertahankan status read-only selama proses migrasi untuk mencegah inkonsistensi data.

Langkah 1: Backup database PostgreSQL yang dikelola sendiri

Jalankan perintah berikut pada server yang menghosting database PostgreSQL yang dikelola sendiri.

Cadangkan informasi peran

pg_dump tidak mengekspor role. Gunakan pg_dumpall -r untuk membackup semua definisi role secara terpisah.

pg_dumpall -U <username> -h <hostname> -p <port> -r -f <filename>
ParameterDeskripsi
<username>Akun yang digunakan untuk login ke database sumber
<hostname>Titik akhir database sumber. Gunakan localhost jika menjalankan perintah pada server yang sama
<port>Port layanan database
<filename>Nama file output untuk backup role

Contoh:

pg_dumpall -U postgres -h localhost -p 5432 -r -f roleinfo.sql

Saat prompt Password: muncul, masukkan password database untuk memulai proses backup.

Ganti SUPERUSER dengan polar_superuser

PolarDB for PostgreSQL menggunakan polar_superuser sebagai pengganti hak istimewa SUPERUSER standar PostgreSQL. Sebelum memulihkan role, perbarui file backup agar mencerminkan perbedaan ini.

Jalankan perintah vim untuk mengganti SUPERUSER dalam file backup informasi role dengan polar_superuser.

Jika file backup tidak berisi entri SUPERUSER, lewati langkah ini.

Example of SUPERUSER replacement in the role backup file

Mencadangkan data database

pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>
ParameterDeskripsi
<username>Akun yang digunakan untuk login ke database sumber
<hostname>Titik akhir database sumber. Gunakan localhost jika menjalankan perintah pada server yang sama
<port>Port layanan database
<dbname>Nama database yang akan dibackup
<njobs>Jumlah pekerjaan backup konkuren. Lebih banyak pekerjaan mengurangi waktu backup tetapi meningkatkan beban server
<dumpdir>Direktori output untuk file backup
Jika database PostgreSQL sumber versinya lebih awal dari 9.2, tambahkan flag --no-synchronized-snapshots.

Contoh:

pg_dump -U postgres -h localhost -p 5432 mytestdata -Fd -j 5 -f postgresdump

File backup disimpan ke direktori yang ditentukan (postgresdump pada contoh ini).

Saat prompt Password: muncul, masukkan password database untuk memulai proses backup.

Langkah 2: Migrasi data ke kluster PolarDB for PostgreSQL

Jalankan perintah berikut pada instans ECS.

Unggah file backup ke instans ECS

Unggah file backup role dan direktori backup database ke instans ECS.

Pulihkan informasi role

psql -U <username> -h <hostname> -p <port> -d <dbname> -f <filename>
ParameterDeskripsi
<username>Akun yang digunakan untuk login ke kluster PolarDB for PostgreSQL
<hostname>Titik akhir pribadi utama kluster. Lihat View or apply for an endpoint
<port>Port layanan database. Lihat View the endpoint and port number
<dbname>Nama database tujuan
<filename>Nama file backup role

Contoh:

psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d testdb -p 1921 -f roleinfo.sql

Saat prompt Password: muncul, masukkan password database untuk memulai migrasi data.

Pulihkan data database

pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>
ParameterDeskripsi
<username>Akun yang digunakan untuk login ke kluster PolarDB for PostgreSQL
<hostname>Titik akhir pribadi utama kluster. Lihat View or apply for an endpoint
<port>Port layanan database. Lihat View the endpoint and port number
<dbname>Nama database tujuan. Database tersebut harus sudah ada di kluster — buat terlebih dahulu jika belum ada
<njobs>Jumlah pekerjaan pemulihan konkuren. Lebih banyak pekerjaan mengurangi waktu pemulihan tetapi meningkatkan beban server
<dumpdir>Direktori yang berisi file backup

Contoh:

pg_restore -U gctest -h pc-mxxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -p 1921 -d mytestdata -j 6 postgresdump
Jika Anda perlu mengatur ulang password akun database, lihat Manage a database account.

Tunggu hingga migrasi selesai sebelum melanjutkan.

Langkah berikutnya

  • Lanjutkan operasi write dengan mengarahkan string koneksi aplikasi Anda ke titik akhir kluster PolarDB for PostgreSQL.

  • Jika Anda membuat instans ECS pay-as-you-go untuk migrasi ini, lepaskan instans tersebut agar tidak dikenai biaya lebih lanjut.