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:
Siapkan instans ECS dalam virtual private cloud (VPC) yang sama dengan kluster tujuan.
Backup informasi role dan data database dari database PostgreSQL sumber.
Unggah file backup ke instans ECS dan pulihkan ke kluster PolarDB for PostgreSQL.
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.
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>| Parameter | Deskripsi |
|---|---|
<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.sqlSaat 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.

Mencadangkan data database
pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>| Parameter | Deskripsi |
|---|---|
<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 postgresdumpFile 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>| Parameter | Deskripsi |
|---|---|
<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.sqlSaat 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>| Parameter | Deskripsi |
|---|---|
<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 postgresdumpJika 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.