All Products
Search
Document Center

ApsaraDB RDS:Pengenalan laporan penilaian migrasi cloud

Last Updated:Aug 22, 2026

Jika laporan penilaian migrasi cloud menampilkan status failure, klik View report pada kolom operation untuk melihat pemeriksaan mana yang gagal. Setiap pemeriksaan mencakup persyaratan kompatibilitas atau konfigurasi tertentu.

Tingkat keparahan laporan:

Level Makna Tindakan yang diperlukan
Error Masalah penghambat yang akan menyebabkan migrasi gagal Perbaiki semua error sebelum mencoba kembali migrasi
Warning Risiko potensial yang dapat menyebabkan perilaku tak terduga setelah migrasi Tinjau dan atasi sebelum melakukan migrasi

Penilaian menjalankan pemeriksaan berikut:

Untuk petunjuk menjalankan migrasi cloud, lihat Gunakan fitur migrasi cloud untuk instans ApsaraDB RDS for PostgreSQL.

Check rds empty

Check item: Check rds databases

Error message:

error:postgres not empty, check if any table exists

Dampak: Migrasi menulis data ke instans RDS tujuan dari awal. Jika tujuan sudah berisi database atau tabel, migrasi akan gagal atau menghasilkan data duplikat.

Solution:

Hapus semua database kecuali template0, template1, dan postgres dari instans ApsaraDB RDS for PostgreSQL. Kemudian, di database postgres, hapus semua tabel kecuali ha_health_check.

Check source connectivity

Pemeriksaan ini memvalidasi akses jaringan dan autentikasi antara instans PostgreSQL self-managed sumber dan instans ApsaraDB RDS for PostgreSQL tujuan. Pemeriksaan ini mencakup enam sub-pemeriksaan.

Check ip connectable

Error message:

error:XX.XX.XX.XX is unapproachable

Dampak: Layanan migrasi tidak dapat menjangkau host sumber. Cadangan penuh dan replikasi akan langsung gagal.

Solution:

  • Jika instans PostgreSQL self-managed berjalan pada instans Elastic Compute Service (ECS), masukkan private IP address instans ECS sebagai host sumber. Untuk menemukan alamat IP pribadi, lihat View IP addresses.

  • Jika instans PostgreSQL self-managed berjalan di pusat data, masukkan alamat IP server DNS sebagai host sumber.

Check port connectable

Error message:

error:5432 is unapproachable

Dampak: Layanan migrasi tidak dapat membuat koneksi TCP ke PostgreSQL. Migrasi tidak dapat dimulai.

Solution:

Atasi salah satu atau kedua penyebab berikut:

Check database connectable

Error message:

error:cannot connect to source database by migratetest:123456

Dampak: Layanan migrasi tidak dapat melakukan autentikasi terhadap database sumber. Migrasi tidak dapat dimulai.

Solution:

Atasi salah satu atau kedua penyebab berikut:

  • Password salah: Verifikasi bahwa kredensial berfungsi dengan menghubungkan secara manual. Untuk mengatur ulang password, jalankan:

    ALTER USER migratetest WITH PASSWORD '123456';
  • pg_hba.conf tidak dikonfigurasi untuk mengizinkan koneksi dari VPC RDS: Tambahkan baris berikut ke pg_hba.conf:

    host  all  migratetest  <CIDR block of the VPC to which the ApsaraDB RDS for PostgreSQL instance belongs>  md5

    Untuk detail pembaruan pg_hba.conf, lihat Update the pg_hba.conf file.

Check account replication privilege

Error message:

error:migratetest has no replication privilege

Dampak: Layanan migrasi menggunakan streaming replication untuk menyinkronkan perubahan yang sedang berlangsung. Tanpa hak istimewa REPLICATION, replikasi inkremental akan gagal setelah cadangan penuh selesai.

Solution:

Atasi salah satu atau kedua penyebab berikut:

  • Akun tidak memiliki hak istimewa REPLICATION: Berikan hak istimewa tersebut:

    ALTER ROLE migratetest REPLICATION;
  • pg_hba.conf tidak mengizinkan koneksi replikasi dari VPC RDS: Tambahkan baris berikut ke pg_hba.conf:

    host  replication  migratetest  <CIDR block of the VPC to which the ApsaraDB RDS for PostgreSQL instance belongs>  md5

    Untuk detail pembaruan pg_hba.conf, lihat Update the pg_hba.conf file.

Check account createrole privilege

Error message:

error:migratetest has no createrole privilege

Dampak: Layanan migrasi perlu membuat ulang role pada instans tujuan. Tanpa CREATEROLE, migrasi role akan gagal.

Solution:

Berikan hak istimewa CREATEROLE:

ALTER ROLE migratetest CREATEROLE;

Check account monitor privilege

Error message:

error:migratetest should be a member of pg_monitor to monitor replication status

Dampak: Layanan migrasi melakukan kueri terhadap pg_stat_replication dan pg_stat_wal_receiver untuk melacak progres replikasi. Tanpa role pg_monitor, layanan tidak dapat memastikan replikasi berjalan lancar, yang dapat menyebabkan migrasi macet atau gagal diam-diam.

Solution:

Berikan role pg_monitor:

GRANT pg_monitor TO migratetest;

Check source version

Check item: Check major version consistent

Error message:

error:version mismatch, source version:10, current version:13.0

Dampak: Migrasi lintas versi utama tidak didukung. Migrasi akan gagal jika sumber dan tujuan menjalankan versi mesin utama yang berbeda.

Solution:

Beli instans ApsaraDB RDS for PostgreSQL yang menjalankan versi mesin utama yang sama dengan instans PostgreSQL self-managed.

Check source glibc version

Check item: Check source glibc version compatible

Warning message:

warning:source glibc version is not compatible with rds pg

Dampak: Versi GNU C Library (glibc) memengaruhi cara PostgreSQL mengurutkan karakter dalam encoding UTF-8. Versi 2.28 memperkenalkan urutan pengurutan yang berbeda. Jika sumber dan tujuan menggunakan versi glibc yang berbeda, indeks teks dengan aturan pengurutan non-C mungkin mengembalikan hasil dalam urutan yang tidak terduga setelah migrasi, menyebabkan masalah kebenaran kueri.

Solution:

Jalankan kueri diagnostik berikut untuk menilai risiko aktual terhadap data Anda.

  1. Periksa apakah urutan pengurutan saat ini memengaruhi data Anda:

    • Jika hasilnya true, urutan pengurutan tidak terpengaruh. Tidak diperlukan tindakan lebih lanjut.

    • Jika hasilnya false, lanjutkan ke langkah 2.

    BEGIN;
    CREATE TEMP TABLE testcollation(id varchar(20) COLLATE "en_US.utf8") ON COMMIT DROP;
    INSERT INTO testcollation VALUES('-1'),('1');
    SELECT id='1' FROM testcollation ORDER BY id LIMIT 1;
    ROLLBACK;
  2. Periksa apakah ada database yang menggunakan aturan pengurutan non-C:

    • Jika tidak ada baris yang dikembalikan, migrasi tidak memiliki risiko aturan pengurutan. Tidak diperlukan tindakan lebih lanjut.

    • Jika ada baris yang dikembalikan, lanjutkan ke langkah 3.

    SELECT datname, datcollate FROM pg_database WHERE datcollate NOT IN ('C', 'POSIX');
  3. Identifikasi semua indeks dengan aturan pengurutan non-C di seluruh database:

    • Jika tidak ada baris yang dikembalikan, migrasi tidak memiliki risiko aturan pengurutan.

    • Jika ada baris yang dikembalikan, indeks yang terpengaruh mungkin menghasilkan hasil pengurutan yang salah setelah migrasi. Evaluasi apakah indeks ini memengaruhi kueri aplikasi sebelum melanjutkan.

    WITH result AS (
        WITH defcoll AS (
            SELECT datcollate AS coll
            FROM pg_database
            WHERE datname = current_database()
        )
        SELECT indrelid::regclass::text relname, indexrelid::regclass::text indexname,
            CASE WHEN c.collname = 'default'
                THEN defcoll.coll
                ELSE c.collname
            END AS collation
        FROM (SELECT indexrelid, indrelid, indcollation[i] coll FROM pg_index, generate_subscripts(indcollation, 1) g(i)) s
            JOIN pg_collation c ON coll=c.oid
            CROSS JOIN defcoll
        WHERE collprovider IN ('d', 'c') AND collname NOT IN ('C', 'POSIX')
    )
    SELECT result.relname, result.indexname, result.collation FROM result WHERE result.collation NOT IN ('C', 'POSIX');

Check disk size

Check item: Check disk size enough

Error message:

error:source_db_size > disk_size * 0.95

Dampak: Data sumber harus muat dalam 95% ruang penyimpanan tujuan yang tersedia. Jika penyimpanan tujuan terlalu kecil, transfer cadangan penuh akan gagal di tengah jalan, sehingga tujuan berada dalam keadaan tidak lengkap.

Solution:

  1. Periksa ukuran total data pada instans sumber (hasil dalam MB):

    SELECT SUM(pg_database_size(pg_database.datname))/1024/1024 AS size FROM pg_database;
  2. Hitung kapasitas penyimpanan yang dibutuhkan. Penyimpanan tujuan harus minimal 110% dari ukuran data sumber. Misalnya, jika sumber menggunakan 100 GB, tujuan harus memiliki minimal 110 GB ruang penyimpanan yang tersedia.

  3. Perluas penyimpanan instans ApsaraDB RDS for PostgreSQL. Untuk petunjuknya, lihat Change instance specifications.

Check wal keep size

Check item: Check wal keep size large enough

Warning message:

warning:wal_keep_size X MB is too small. Try to set wal_keep_segments or wal_keep_size large enough ensure pg_basebackup success

Dampak: Selama migrasi, pg_basebackup mentransfer snapshot lengkap dari database sumber. Jika sumber menghasilkan WAL lebih cepat daripada pg_basebackup dapat menyalin data, dan sumber tidak menyimpan cukup segmen WAL, pg_basebackup akan gagal dengan error "WAL segment has been removed".

Solution:

Tingkatkan pengaturan retensi WAL pada instans ApsaraDB RDS for PostgreSQL untuk mengurangi risiko kegagalan pg_basebackup:

  • PostgreSQL 13 dan yang lebih baru: Tingkatkan nilai wal_keep_size.

  • Versi PostgreSQL sebelum 13: Tingkatkan nilai wal_keep_segments.

Untuk versi PostgreSQL sebelum 13, hubungan antara kedua parameter tersebut adalah: wal_keep_size = wal_keep_segments × wal_segment_size.

Check spec params

Check item: Check if spec params too large

Error messages:

error:max_connections too large, value=XXX
error:max_prepared_transactions too large, value=XXX

Dampak: Jika max_connections atau max_prepared_transactions pada instans sumber lebih dari 100 kali nilai yang sesuai pada instans RDS tujuan, instans tujuan mungkin gagal memulai ketika layanan migrasi membuat tautan replikasi.

Solution:

Kurangi max_connections dan max_prepared_transactions pada instans sumber agar nilainya tidak melebihi 100 kali nilai tujuan.

Perubahan pada max_connections dan max_prepared_transactions memerlukan restart instans PostgreSQL sumber agar berlaku.

Check rds user

Check item: Check if rds system user is occupied

Warning message:

warning:Check if rds system user is occupied ...XXX will be reused in rds

Dampak: ApsaraDB RDS for PostgreSQL mencadangkan akun aurora, replicator, dan pgxxx untuk penggunaan internal sistem. Jika akun ini ada di instans sumber, migrasi mungkin menimpa konfigurasinya di tujuan, menyebabkan fungsi manajemen rusak.

Solution:

Pastikan Anda tidak menggunakan akun aurora, replicator, dan pgxxx di instans PostgreSQL self-managed.

Check extensions

Pemeriksaan ini memvalidasi kompatibilitas ekstensi antara instans PostgreSQL self-managed sumber dan instans ApsaraDB RDS for PostgreSQL tujuan. Pemeriksaan ini mencakup tiga sub-pemeriksaan.

Check source supported extensions

Error message:

error:Check source supported extensions XXX not supported

Dampak: Ekstensi yang ada di sumber tetapi tidak didukung oleh ApsaraDB RDS for PostgreSQL tidak dapat dibuat di tujuan. Jika migrasi dilanjutkan, objek yang bergantung pada ekstensi ini tidak akan berfungsi.

Solution:

Hapus ekstensi yang tidak didukung dari instans sumber:

DROP EXTENSION <extension_name>;

Check source extensions with higher version

Error message:

error:Check source extensions with higher version XXX

Dampak: ApsaraDB RDS for PostgreSQL tidak dapat memuat ekstensi yang versinya lebih tinggi daripada versi yang disediakannya. Ekstensi akan gagal diinisialisasi di tujuan, menyebabkan objek dependen rusak.

Solution:

Pasang ulang ekstensi yang terpengaruh di instans sumber dengan versi yang sama seperti tujuan:

DROP EXTENSION <extension_name>;
CREATE EXTENSION <extension_name> VERSION '<destination_version>';

Check source extensions with lower version

Warning message:

warning:Check source extensions with lower version XXX

Dampak: Ekstensi pada instans sumber berada pada versi yang lebih lama daripada di tujuan. Hal ini normal dan aman — ekstensi akan ditingkatkan secara otomatis ke versi tujuan setelah migrasi.

Solution:

Tidak diperlukan tindakan.

Check Postgres system catalogs

Pemeriksaan ini memeriksa katalog sistem instans sumber untuk konfigurasi yang tidak kompatibel dengan ApsaraDB RDS for PostgreSQL. Pemeriksaan ini mencakup empat sub-pemeriksaan.

Unsupported procedural languages

Error message:

error: disallowed language exist in databases [xxx, xxx], the languages allowed are [c, internal, sql, plpgsql, pltcl, plperl].

Dampak: ApsaraDB RDS for PostgreSQL hanya mendukung C, internal, SQL, PL/pgSQL, PL/Tcl, dan PL/Perl. Fungsi yang ditulis dalam bahasa lain tidak dapat dimigrasikan dan akan gagal di tujuan.

Solution:

Hapus bahasa yang tidak didukung dari database yang terpengaruh di instans sumber:

DROP LANGUAGE <language_name>;

Large objects

Error message:

error: large object exist in databases [xxx, xxx].

Dampak: ApsaraDB RDS for PostgreSQL tidak mendukung large object PostgreSQL. Large object di instans sumber tidak dapat dimigrasikan dan tidak akan ada di tujuan.

Solution:

Hapus semua large object dari database yang terpengaruh di instans sumber sebelum migrasi.

Default ACL settings

Error message:

error: default acl settings exist in databases [xxx, xxx].

Dampak: Pernyataan ALTER DEFAULT PRIVILEGES mengisi pg_catalog.pg_default_acl, yang menyimpan pemberian izin default untuk objek di masa depan. Pengaturan ini tidak dapat dimigrasikan secara langsung dan akan menyebabkan pemeriksaan migrasi gagal.

Solution:

  1. Di instans sumber, cabut semua hak istimewa default untuk membersihkan pg_default_acl:

    ALTER DEFAULT PRIVILEGES ... REVOKE ...;
  2. Setelah migrasi selesai, terapkan kembali hak istimewa default di instans tujuan:

    ALTER DEFAULT PRIVILEGES ... GRANT ...;

Non-empty system tables (pg_parameter_acl and pg_db_role_setting)

Warning message:

warning: Invalid system tables: [pg_parameter_acl, pg_db_role_setting], these system tables should be empty.

Dampak:

  • pg_parameter_acl mencatat izin akses per pengguna untuk parameter kernel. ApsaraDB RDS for PostgreSQL mengelola izin ini secara internal, sehingga entri sumber tidak dapat diterapkan ke tujuan.

  • pg_db_role_setting mencatat nilai parameter default per database dan per role. Pengaturan ini tidak akan dipindahkan dengan benar jika tabel tidak dibersihkan sebelum migrasi.

Solution:

  1. Bersihkan kedua tabel sistem di instans sumber:

    DELETE FROM pg_parameter_acl;
    DELETE FROM pg_db_role_setting;
  2. Setelah penerapan DR selesai, konfigurasikan izin default pengguna pada berbagai database di instans tujuan.

Check reserved role permission

Check content: Periksa apakah izin role cadangan yang tidak diizinkan diberikan kepada akun di instans sumber.

Error message:

error: some disallowed reserved roles [pg_write_server_files] are granted to user. you should revoke these roles from their members

Dampak: ApsaraDB RDS for PostgreSQL membatasi role bawaan tertentu — seperti pg_write_server_files — karena memberikan akses ke operasi sistem file server yang tidak diizinkan di lingkungan terkelola. Jika role ini diberikan kepada akun di instans sumber, migrasi akan gagal.

Solution:

Cabut role cadangan yang tidak diizinkan dari semua akun di instans sumber. Contohnya:

REVOKE pg_write_server_files FROM "user";