All Products
Search
Document Center

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

Last Updated:Jun 21, 2026

Topik ini menjelaskan cara menggunakan perintah pg_dumpall, pg_dump, dan pg_restore untuk melakukan migrasi database PostgreSQL yang dikelola sendiri ke .

Jika database sumber Anda adalah instans ApsaraDB RDS for PostgreSQL, lihat Migrasi data dari instans ApsaraDB RDS for PostgreSQL ke kluster PolarDB for PostgreSQL.

Prasyarat

Kluster tujuan harus memiliki ruang penyimpanan yang lebih besar daripada database PostgreSQL yang dikelola sendiri Anda.

Catatan penggunaan

Ini adalah migrasi data penuh. Untuk mencegah ketidaksesuaian data, hentikan semua layanan dan operasi write pada database yang dikelola sendiri sebelum memulai migrasi.

Persiapan

  1. Buat instance ECS yang menjalankan Linux. Tutorial ini menggunakan instance ECS yang menjalankan Ubuntu 16.04 64-bit. Untuk informasi selengkapnya, lihat Create an ECS instance.

    Catatan
    • Instance ECS dan kluster tujuan harus berada dalam virtual private cloud (VPC) yang sama.

    • Anda dapat membuat instance ECS pay-as-you-go dan melepasnya setelah migrasi selesai.

  2. Instal PostgreSQL pada instance ECS untuk memulihkan data. Untuk informasi selengkapnya, lihat PostgreSQL official documentation.

    Catatan

    Pastikan versi PostgreSQL yang Anda instal sama dengan versi database PostgreSQL yang dikelola sendiri Anda.

Langkah 1: Backup database yang dikelola sendiri

  1. Pada server database PostgreSQL yang dikelola sendiri, jalankan perintah berikut untuk mencadangkan semua informasi role.

    pg_dumpall -U <username> -h <hostname> -p <port> -r -f <filename>

    Parameter:

    • <username>: Akun login untuk database PostgreSQL yang dikelola sendiri Anda.

    • <hostname>: Titik akhir database PostgreSQL yang dikelola sendiri Anda. Gunakan localhost jika Anda menjalankan perintah di server database.

    • <port>: Nomor port database.

    • <filename>: Nama file backup output.

    Contoh:

    pg_dumpall -U postgres -h localhost -p 5432 -r -f roleinfo.sql
  2. Saat diminta memasukkan Password:, masukkan password untuk akun database.

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

    Catatan

    Jika file backup informasi role tidak berisi SUPERUSER, Anda dapat melewati langkah ini.

    -- PostgreSQL database cluster dump
    --
    SET default_transaction_read_only = off;
    SET client_encoding = 'UTF8';
    SET standard_conforming_strings = on;
    --
    -- Roles
    --
    CREATE ROLE data1;
    ALTER ROLE data1 WITH NOSUPERUSER INHERIT CREATEROLE CREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'md5xxx';
    CREATE ROLE manisha;
    ALTER ROLE manisha WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB LOGIN NOREPLICATION NOBYPASSRLS PASSWORD 'mdxxx';
    CREATE ROLE postgres;
    ALTER ROLE postgres WITH SUPERUSER INHERIT CREATEROLE CREATEDB LOGIN REPLICATION BYPASSRLS PASSWORD 'md5xxx';
    CREATE ROLE testuser;
    ALTER ROLE testuser WITH NOSUPERUSER INHERIT NOCREATEROLE CREATEDB LOGIN NOREPLICATION NOBYPASSRLS;
    --
    -- PostgreSQL database cluster dump complete
  4. Pada server database PostgreSQL yang dikelola sendiri, jalankan perintah berikut untuk mencadangkan data database.

    pg_dump -U <username> -h <hostname> -p <port> <dbname> -Fd -j <njobs> -f <dumpdir>

    Parameter:

    • <username>: Akun login untuk database PostgreSQL yang dikelola sendiri Anda.

    • <hostname>: Titik akhir database PostgreSQL yang dikelola sendiri Anda. Gunakan localhost jika Anda menjalankan perintah di server database.

    • <port>: Nomor port database.

    • <dbname>: Nama database yang akan dicadangkan.

    • <njobs>: Jumlah job konkuren yang digunakan untuk backup.

      Catatan
      • Nilai parameter yang lebih tinggi mengurangi waktu dump tetapi juga meningkatkan beban pada server database.

      • Jika database PostgreSQL yang dikelola sendiri Anda merupakan versi sebelum 9.2, Anda juga harus menentukan parameter --no-synchronized-snapshots.

    • <dumpdir>: Direktori output untuk file backup.

    Contoh:

    pg_dump -U postgres -h localhost -p 5432 mytestdata -Fd -j 5 -f postgresdump
  5. Saat diminta memasukkan Password:, masukkan password untuk akun database.

  6. Tunggu hingga proses backup selesai. Data dicadangkan ke direktori yang ditentukan, yaitu postgresdump dalam contoh ini.

Langkah 2: Migrasi data ke

  1. Unggah direktori yang berisi file backup ke instance ECS.

    Catatan

    Ini mencakup file backup informasi role dan file backup database.

  2. Pada instance ECS, jalankan perintah berikut untuk mengimpor informasi role dari file backup ke kluster .

    psql -U <username> -h <hostname>  -p <port> -d <dbname>  -f <filename>

    Parameter:

    • <username>: Akun login untuk database .

    • <hostname>: Titik akhir pribadi primary dari kluster .

    • <port>: Nomor port database. Untuk informasi selengkapnya, lihat View the endpoint and port number.

    • <dbname>: Nama database yang akan dihubungi.

    • <filename>: Nama file backup informasi role.

    psql -U gctest -h pc-xxxxxxxx.pg.polardb.cn-qd-pldb1.rds.aliyuncs.com -d testdb -p 1921 -f roleinfo.sql
  3. Saat diminta memasukkan Password:, masukkan password untuk akun database.

  4. Pada instance ECS, jalankan perintah berikut untuk memulihkan data database ke kluster .

    pg_restore -U <username> -h <hostname> -p <port> -d <dbname> -j <njobs> <dumpdir>

    Parameter:

    • <username>: Akun login untuk database .

    • <hostname>: Titik akhir pribadi primary dari kluster . Untuk informasi selengkapnya, lihat View or apply for an endpoint.

    • <port>: Nomor port database. Untuk informasi selengkapnya, lihat View the endpoint and port number.

    • <dbname>: Nama database tujuan tempat data akan dipulihkan.

      Catatan

      Database tujuan harus sudah ada. Jika belum, buat terlebih dahulu.

    • <njobs>: Jumlah job konkuren yang digunakan untuk pemulihan.

      Catatan

      Opsi ini mengurangi waktu pemulihan tetapi juga meningkatkan beban pada server database.

    • <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
  5. Saat diminta memasukkan Password:, masukkan password untuk akun database.

    Catatan

    Jika Anda lupa password, lihat Manage a database account.

Tunggu hingga migrasi data selesai.