Bagikan melalui


Masalah/batasan yang diketahui dengan migrasi online dari PostgreSQL ke Azure Database for PostgreSQL

Penting

Disarankan untuk menggunakan layanan migrasi baru di Azure Database for PostgreSQL untuk pengalaman migrasi yang lebih efisien dan efisien. Layanan ini menyederhanakan proses dengan mendukung berbagai lingkungan sumber, memastikan transisi bebas repot ke Azure Database for PostgreSQL.

Masalah umum dan batasan terkait dengan migrasi daring dari PostgreSQL ke Azure Database for PostgreSQL dijelaskan di bagian berikut.

Konfigurasi migrasi online

  • Server sumber PostgreSQL harus berjalan pada versi 9.4, 9.5, 9.6, 10, atau 11. Untuk informasi selengkapnya, lihat Versi database PostgreSQL yang didukung.

  • Hanya migrasi ke versi yang sama atau yang lebih tinggi yang didukung. Misalnya, migrasi PostgreSQL 9.5 ke Azure Database for PostgreSQL 9.6 atau 10 didukung. Migrasi dari PostgreSQL 11 ke PostgreSQL 9.6 tidak didukung.

  • Untuk mengaktifkan replikasi logika dalam file sumber PostgreSQL postgresql.conf, atur parameter berikut:

    • wal_level: Ditetapkan sebagai logis.
    • max_replication_slots: Tetapkan setidaknya jumlah maksimum database yang akan dimigrasi. Jika Anda ingin memigrasikan empat database, tetapkan nilainya ke minimal 4.
    • max_wal_senders: Atur jumlah database yang berjalan bersamaan. Nilai yang disarankan adalah 10.
  • Tambahkan IP agen DMS ke sumber PostgreSQL pg_hba.conf.

    1. Catat alamat IP DMS setelah Anda selesai memprovisi instans dari Azure Database Migration Service.

    2. Tambahkan alamat IP ke file pg_hba.conf :

          host    all    172.16.136.18/10    md5
          host    replication postgres    172.16.136.18/10     md5
      
  • Pengguna harus memiliki peran REPLIKASI pada server yang meng-hosting database sumber.

  • Skema database sumber dan target harus cocok.

Batasan ukuran

  • Anda dapat memigrasikan hingga 1 TB data dari PostgreSQL ke Azure Database for PostgreSQL, menggunakan satu layanan DMS.
  • DMS memungkinkan pengguna untuk memilih tabel di dalam database yang ingin mereka migrasikan. Cuplikan layar D M S yang memperlihatkan opsi untuk memilih tabel.

Di balik layar, ada perintah pg_dump yang digunakan untuk mengambil cadangan tabel yang dipilih menggunakan salah satu opsi berikut:

  • -T untuk menyertakan nama tabel yang dipilih di UI
  • -t untuk mengecualikan nama tabel yang tidak dipilih oleh pengguna

Ada batas maksimum 7500 karakter yang dapat disertakan sebagai bagian dari perintah pg_dump mengikuti opsi -t atau -T . Perintah pg_dump menggunakan hitungan karakter untuk tabel yang dipilih atau tidak dipilih, mana pun yang lebih rendah. Jika jumlah karakter untuk tabel yang dipilih dan tidak dipilih melebihi 7500, perintah pg_dump akan gagal karena kesalahan.

Untuk contoh sebelumnya, perintah pg_dump adalah:

pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""

Dalam perintah sebelumnya, jumlah karakter adalah 55 (termasuk tanda kutip ganda, spasi, -T dan garis miring)

Batasan jenis data

Batasan: Jika tidak ada kunci primer pada tabel, perubahan mungkin tidak disinkronkan ke database target.

Solusi sementara: Tetapkan kunci primer tabel untuk sementara untuk melanjutkan migrasi. Hapus kunci primer setelah migrasi data selesai.

Batasan migrasi online dari AWS RDS PostgreSQL

Saat Anda mencoba melakukan migrasi online dari Amazon Web Service (AWS) Relational Database (RDS) PostgreSQL ke Azure Database for PostgreSQL, Anda mungkin mengalami kesalahan berikut:

  • Kesalahan: Nilai default kolom '{column}' dalam tabel '{table}' dalam database '{database}' berbeda pada server sumber dan target. Ini adalah '{value on source}' pada sumber dan '{value on target}' pada target.

    Batasan: Kesalahan ini terjadi ketika nilai default pada skema kolom berbeda antara database sumber dan target.

    Solusi sementara: Pastikan bahwa skema pada target cocok dengan skema pada sumbernya. Untuk informasi selengkapnya tentang migrasi skema, lihat dokumentasi migrasi online Azure Database for PostgreSQL.

  • Kesalahan: Database target '{database}' memiliki tabel '{number of tables}' sedangkan database sumber '{database}' memiliki tabel '{number of tables}'. Jumlah tabel pada database sumber dan target harus cocok.

    Batasan: Kesalahan ini terjadi ketika jumlah tabel berbeda antara database sumber dan target.

    Solusi sementara: Pastikan bahwa skema pada target cocok dengan skema pada sumbernya. Untuk informasi selengkapnya tentang migrasi skema, lihat dokumentasi migrasi online Azure Database for PostgreSQL.

  • Kesalahan: Database sumber {database} kosong.

    Batasan: Kesalahan ini terjadi ketika database sumber kosong. Anda mungkin memilih database yang salah sebagai sumbernya.

    Solusi sementara: Periksa kembali database sumber yang Anda pilih untuk migrasi, lalu coba lagi.

  • Kesalahan: Database target {database} kosong. Memigrasikan skema.

    Pembatasan: Kesalahan ini terjadi ketika tidak ada skema pada database target. Pastikan skema pada target cocok dengan skema pada sumber.

    Solusi sementara: Pastikan bahwa skema pada target cocok dengan skema pada sumbernya. Untuk informasi selengkapnya tentang migrasi skema, lihat dokumentasi migrasi online Azure Database for PostgreSQL.

Batasan lainnya

  • Nama database tidak boleh menyertakan titik koma (;).
  • Tabel yang diambil harus memiliki kunci primer. Jika tabel tidak memiliki kunci primer, hasil operasi rekaman HAPUS dan PERBARUI tidak akan dapat diprediksi.
  • Memperbarui segmen kunci primer diabaikan. Menerapkan pembaruan seperti itu akan diidentifikasi oleh target sebagai pembaruan yang tidak memperbarui baris apa pun. Hasilnya adalah catatan yang ditulis ke tabel pengecualian.
  • Jika tabel Anda memiliki kolom JSON, operasi DELETE atau UPDATE apa pun pada tabel ini dapat menyebabkan migrasi gagal.
  • Migrasi beberapa tabel dengan nama yang sama namun kasusnya berbeda mungkin menyebabkan perilaku yang tidak terduga dan tidak didukung. Contohnya adalah penggunaan table1, TABLE1, dan Table1.
  • Mengubah pemrosesan [BUAT | UBAH | HILANGKAN | POTONG] tabel DDL tidak didukung.
  • Di Database Migration Service, satu aktivitas migrasi hanya dapat menampung hingga empat database.
  • Migrasi tabel pg_largeobject tidak didukung.