PostgreSQL'den PostgreSQL için Azure Veritabanı çevrimiçi geçişlerle ilgili bilinen sorunlar/sınırlamalar

PostgreSQL'den PostgreSQL için Azure Veritabanı çevrimiçi geçişlerle ilgili bilinen sorunlar ve sınırlamalar aşağıdaki bölümlerde açıklanmıştır.

Çevrimiçi geçiş yapılandırması

  • Kaynak PostgreSQL sunucusu 9.4, 9.5, 9.6, 10 veya 11 sürümünü çalıştırıyor olmalıdır. Daha fazla bilgi için bkz . Desteklenen PostgreSQL veritabanı sürümleri.

  • Yalnızca aynı veya daha yüksek sürüme geçişler desteklenir. Örneğin, PostgreSQL 9.5'i PostgreSQL için Azure Veritabanı 9.6 veya 10'a geçirmek desteklenir. PostgreSQL 11'den PostgreSQL 9.6'ya geçiş desteklenmez.

  • PostgreSQL postgresql.conf dosyasında mantıksal çoğaltmayı etkinleştirmek için aşağıdaki parametreleri ayarlayın:

    • wal_level: Mantıksal olarak ayarlayın.
    • max_replication_slots: Geçiş için en az en fazla veritabanı sayısını ayarlayın. Dört veritabanını geçirmek istiyorsanız, değeri en az 4 olarak ayarlayın.
    • max_wal_senders: Eşzamanlı olarak çalışan veritabanı sayısını ayarlayın. Önerilen değer 10'dur.
  • DMS aracısı IP'sini PostgreSQL pg_hba.conf kaynağına ekleyin.

    1. Azure Veritabanı Geçiş Hizmeti örneğini sağlamayı tamamladıktan sonra DMS IP adresini not edin.

    2. IP adresini pg_hba.conf dosyasına ekleyin:

          host    all    172.16.136.18/10    md5
          host    replication postgres    172.16.136.18/10     md5
      
  • Kullanıcının kaynak veritabanını barındıran sunucuda ÇOĞALTMA rolüne sahip olması gerekir.

  • Kaynak ve hedef veritabanı şemaları eşleşmelidir.

Boyut sınırlamaları

  • Tek bir DMS hizmeti kullanarak PostgreSQL'den PostgreSQL için Azure Veritabanı 1 TB'a kadar veri geçirebilirsiniz.
  • DMS, kullanıcıların geçirmek istedikleri veritabanının içindeki tabloları seçmesine olanak tanır. Tabloları seçme seçeneğini gösteren D M S ekranının ekran görüntüsü.

Arka planda, aşağıdaki seçeneklerden birini kullanarak seçili tabloların dökümünü almak için kullanılan bir pg_dump komutu vardır:

  • Kullanıcı arabiriminde seçilen tablo adlarını eklemek için -T
  • -t kullanıcı tarafından seçilmeyen tablo adlarını dışlamak için

-t veya -T seçeneğinden sonra pg_dump komutuna dahil edilebilecek en fazla 7500 karakter sınırı vardır. pg_dump komutu, seçili veya seçilmemiş tabloların karakter sayısını (hangisi daha düşükse) kullanır. Seçili ve seçilmemiş tablolar için karakter sayısı 7500'ü aşarsa, pg_dump komutu hatayla başarısız olur.

Önceki örnekte pg_dump komutu şöyle olacaktır:

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

Önceki komutta karakter sayısı 55'tir (çift tırnak, boşluk, -T ve eğik çizgi içerir)

Veri türü sınırlamaları

Sınırlama: Tablolarda birincil anahtar yoksa, değişiklikler hedef veritabanıyla eşitlenmeyebilir.

Geçici çözüm: Geçişin devam etmesi için tablonun birincil anahtarını geçici olarak ayarlayın. Veri geçişi tamamlandıktan sonra birincil anahtarı kaldırın.

AWS RDS PostgreSQL'den çevrimiçi geçişle ilgili sınırlamalar

Amazon Web Service (AWS) İlişkisel Veritabanı (RDS) PostgreSQL'den PostgreSQL için Azure Veritabanı çevrimiçi geçiş gerçekleştirmeye çalıştığınızda aşağıdaki hatalarla karşılaşabilirsiniz:

  • Hata: '{database}' veritabanındaki '{table}' tablosundaki '{column}' sütununun varsayılan değeri kaynak ve hedef sunucularda farklı. Değer kaynakta '{value on source}', hedefte ise '{value on target}'.

    Sınırlama: Bu hata, bir sütun şemasındaki varsayılan değer kaynak ve hedef veritabanları arasında farklılık gösterdiğinde oluşur.

    Geçici çözüm: Hedef şemanın kaynak şemayla eşleştiğinden emin olun. Şemayı geçirme hakkında daha fazla bilgi için çevrimiçi geçiş PostgreSQL için Azure Veritabanı belgelerine bakın.

  • Hata: '{database}' hedef veritabanında '{number of tables}' tabloları varken,'{database}' kaynak veritabanında '{number of tables}' tabloları var. Kaynak ve hedef veritabanlarındaki tablo sayısı aynı olmalıdır.

    Sınırlama: Bu hata, tablo sayısı kaynak ve hedef veritabanları arasında farklılık gösterdiğinde oluşur.

    Geçici çözüm: Hedef şemanın kaynak şemayla eşleştiğinden emin olun. Şemayı geçirme hakkında daha fazla bilgi için çevrimiçi geçiş PostgreSQL için Azure Veritabanı belgelerine bakın.

  • Hata: {database} kaynak veritabanı boş.

    Sınırlama: Bu hata, kaynak veritabanı boş olduğunda oluşur. Büyük olasılıkla kaynak olarak yanlış veritabanını seçmişsinizdir.

    Geçici çözüm: Geçiş için seçtiğiniz kaynak veritabanını bir kez daha denetleyin ve yeniden deneyin.

  • Hata: {database} hedef veritabanı boş. Şemayı geçirin.

    Sınırlama: Hedef veritabanında şema olmadığında bu hata oluşur. Hedef şemanın kaynak şemayla eşleştiğinden emin olun.

    Geçici çözüm: Hedef şemanın kaynak şemayla eşleştiğinden emin olun. Şemayı geçirme hakkında daha fazla bilgi için çevrimiçi geçiş PostgreSQL için Azure Veritabanı belgelerine bakın.

Diğer sınırlamalar

  • Veritabanı adı noktalı virgül (;)) içeremez.
  • Yakalanan bir tablonun birincil anahtarı olmalıdır. Bir tabloda birincil anahtar yoksa, DELETE ve UPDATE kayıt işlemlerinin sonucu tahmin edilemez.
  • Birincil anahtar kesiminin güncelleştirilmesi yoksayılır. Böyle bir güncelleştirmenin uygulanması hedef tarafından hiçbir satırı güncelleştirmemiş bir güncelleştirme olarak tanımlanır. Sonuç, özel durumlar tablosuna yazılmış bir kayıttır.
  • Tablonuzda bir JSON sütunu varsa, bu tablodaki tüm DELETE veya UPDATE işlemleri başarısız geçişe yol açabilir.
  • Aynı ada sahip ancak farklı bir duruma sahip birden çok tablonun geçişi öngörülemeyen davranışlara neden olabilir ve desteklenmez. Tablo1, TABLO1 ve Tablo1 kullanımı buna örnek olarak verilmiştir.
  • [CREATE | dosyasının değişiklik işlemesi ALTER | DROP | TRUNCATE] tablo DLL'leri desteklenmez.
  • Veritabanı Geçiş Hizmeti'da tek bir geçiş etkinliği en fazla dört veritabanını barındırabilir.
  • pg_largeobject tablosunun geçişi desteklenmez.