PostgreSQL için Azure Veri Tabanı esnek sunucu için geçiş hizmetinde bilinen hatalar

Bu makale, geçiş öncesi doğrulama için hata iletisi numaralarını ve bunların açıklamasını içerir.

Aşağıdaki tablolar, PostgreSQL için Azure Veritabanı geçiş hizmeti özelliği için kapsamlı bir hata kodları listesi sağlar. Bu hata kodları, geçiş işlemi sırasında sorunları gidermenize ve çözmenize yardımcı olur. Her hata kodunda, sorunu çözmeye yönelik daha fazla bağlam ve rehberlik sağlayan bir hata iletisi ve diğer ayrıntılar bulunur.

Bağlantı zaman aşımları

Symptoms

Geçiş hataları genellikle bağlantı sorunlarını gösteren hata iletileri aracılığıyla ortaya çıkar. Bu sorunlar veri aktarımı işlemi sırasında ortaya çıkabilir. Bu tür hatalar oluştuğunda aşağıdaki hata iletileriyle sonuçlanır:

  • sunucu beklenmedik bir şekilde bağlantıyı kapattı
  • SSL SYSCALL hatası: EOF algılandı
  • istemci bağlantısında beklenmeyen EOF
  • istemciden veri alınamadı: Bağlantı karşı tarafça sıfırlandı

Cause

Bu belirtilerin temel nedeni bir connection timeout'dir. Bu durum genellikle sunucu veya istemci belirli bir zaman dilimi içinde veri almayı beklediğinde, ancak veri gönderilmediğinde veya alınmadığında oluşur ve bağlantı zaman aşımına neden olur. Bağlantı zaman aşımının belirli nedenleri farklılık gösterebilir, ancak yaygın faktörler arasında ağ tıkanıklığı, yanlış yapılandırılmış ağ ayarları veya aşırı agresif zaman aşımı ayarları sayılabilir.

PostgreSQL için Azure Veritabanı'daki geçiş hizmeti bağlamında, kaynak ile geçiş hizmeti arasında veya geçiş hizmeti ile hedef arasında bağlantı zaman aşımına uğrayarak veri aktarımı işlemini kesintiye uğratabilir ve bu da yukarıda açıklanan belirtilerle sonuçlanır.

Resolution

  • Bağlantı zaman aşımı sorunlarını gidermek için hem kaynak hem de hedef sunuculardaki TCP parametrelerini aşağıdaki gibi ayarlayın:

    • tcp_keepalives_idle=10
    • tcp_keepalives_interval=10
    • tcp_keepalives_count=60

Bu ayarlar, bağlantının sürdürülmesine yardımcı olmak için etkin olmama nedeniyle oluşan zaman aşımlarını önlemek üzere keepalive yoklamaları gönderir. Önemli olan, bu TCP parametrelerini değiştirmek için kaynak veya hedef PostgreSQL örneklerinin yeniden başlatılması gerekmez. Değişiklikler dinamik olarak uygulanarak, veritabanı işlemlerini kesintiye uğratmadan hizmetin sorunsuz bir şekilde devam ettirilmesine olanak sağlar.

İşlem sırasında boşta kalma zaman aşımı nedeniyle bağlantı sonlandırıldı

Symptoms

  • Geçiş hizmeti bir bağlantı sonlandırma iletisiyle karşılaşır.
  • Günlükler şu hatayı görüntüler: terminating connection due to idle-in-transaction timeout.

Cause

Bu hata, bir veritabanı bağlantısı parametrede belirtilen değerden daha uzun süre bir işlem içinde idle_in_transaction_timeout boşta kaldığında oluşur. PostgreSQL, kaynak kilitleme sorunlarını önlemek için bu tür bağlantıları otomatik olarak sonlandırır.

Resolution

  • idle_in_transaction_timeout Geçiş işlemi sırasında zaman aşımını devre dışı bırakmak için parametresini 0 olarak ayarlayın.
  • Bu ayarı uygulamak için örnek komut:
ALTER SYSTEM SET idle_in_transaction_timeout = 0;
  • Veritabanı performansını korumak ve uzun süreli boşta bağlantıları önlemek için geçiş sonrasında bu parametreyi özgün değerine sıfırlayın.

Paylaşılan Bellek Tükenmesi

Symptoms

Geçiş işlemi beklenmedik bir şekilde durduruldu. Günlükler şu hatayı görüntüler: out of shared memory.

Cause

Bu hata PostgreSQL'in kilitler için ayrılan paylaşılan belleği tüketmiş olduğunu gösterir. Genellikle geçiş işlemi, max_locks_per_transaction parametresinin geçerli ayarının ötesinde birçok kilit içerdiğinde oluşur.

Resolution

  • Geçiş işlemi sırasında gereken ek kilitleri karşılamak için max_locks_per_transaction parametresinin değerini artırın.
  • Bu ayarı değiştirmek için örnek komut: ALTER SYSTEM SET max_locks_per_transaction = <<>>;
  • Şundan emin olun: max_locks_per_transaction * max_connections > Number of tables + Number of indexes
  • Sorun devam ederse, kilit yönetimi için yeterli paylaşılan belleğin kullanılabilir olduğundan emin olmak için shared_buffers parametresini artırmayı göz önünde bulundurun.

"CREATE TYPE'in kullanımı"

Symptoms

Geçiş işlemi beklenmedik bir şekilde durduruldu. Günlükler şu hatayı görüntüler: pg_restore: error: could not execute query: ERROR: must be superuser to create a base type .

Cause

Yeni bir temel tür oluşturmak için süper kullanıcı olmanız gerekir (Hatalı bir tür tanımı sunucunun kafasını karıştırabileceği ve hatta kilitleyebileceği için bu kısıtlama yapılır).

Resolution

  • Özel temel türün silinmesi ve/veya tanınan bir temel türle değiştirilmesi gerekir.
  • Diğer ayrıntıları burada bulabilirsiniz.

Geçiş hata kodları

Hata Kodu Hata iletisi Resolution
603000 Bağlantı başarısız oldu. Sunucu {serverName} bağlantısı başarısız oldu. Kaynak sunucuya hedef veya çalışma zamanı sunucusundan ulaşılabilir olduğundan emin olun. Bağlantı sorunlarının hatalarını ayıklamak için Ağ kılavuzuna bakın.
603001 SSL Yapılandırma Hatası. Sunucu {serverName} SSL'yi desteklemez. SSL ayarlarını denetleyin. SSL modunu prefer olarak ayarlayın ve geçişi yeniden deneyin. Bağlantı sorunlarının hatalarını ayıklamak için Ağ kılavuzuna bakın.
603100 Kimlik doğrulaması başarısız oldu. Sunucu {serverName} parolası yanlış. Doğru parolayı girin ve geçişi yeniden deneyin. N/A
603101 Veritabanı hedefte mevcut. Veritabanı {dbName} hedef sunucuda var. Hedef sunucuda veritabanı olmadığından emin olun ve geçişi yeniden deneyin. N/A
603102 Kaynak Veritabanı Eksik. Veritabanı {dbName} kaynak sunucuda yok. Geçerli bir veritabanı sağlayın ve geçişi yeniden deneyin. N/A
603103 Microsoft Entra rolü eksik. Hedef sunucuda Microsoft Entra rolü {roleNames} eksik. Entra rolünü oluşturun ve geçişi yeniden deneyin. N/A
603104 Eksik Replikasyon Rolü. Kullanıcı {0} sunucusunda {1}çoğaltma rolüne sahip değil. Geçişi yeniden denemeden önce çoğaltma rolünü verin. Gerekli izni vermek için kullanın ALTER ROLE <rolename> WITH REPLICATION; .
603105 GUC Ayarları Hatası. Kaynak sunucuda, taşıma için yeterli çoğaltma yuvası yok. max_replication_slots GUC parametresini {0} ya da daha yüksek bir değere yükseltin. Kaynak sunucuda çevrimiçi geçiş gerçekleştirmek için yeterli çoğaltma yuvası yok. Geçişi başlatmadan önce, etkin olmayan çoğaltma yuvalarının listesini almak için bu sorguyu SELECT * FROM pg_replication_slots WHERE active = false AND slot_type = 'logical'; kullanın ve bunları SELECT pg_drop_replication_slot('slot_name'); kullanarak kaldırın. Alternatif olarak, 'max_replication_slots' parametresini {0} veya daha yüksek bir değere ayarlayın. max_wal_senders parametresinin de max_replication_slots' parameter değerinden büyük ya da ona eşit olacak şekilde değiştirildiğinden emin olun.
603106 GUC Ayarları Hatası. max_wal_senders GUC parametresi olarak {0}ayarlanır. 'max_replication_slots' değeriyle eşleştiğinden veya değerini aştığından emin olun. N/A
603107 GUC Ayarları Hatası. Kaynak sunucu WAL düzeyi parametresi olarak {0}ayarlanır. GUC parametresi WAL düzeyini 'mantıksal' olarak ayarlayın. N/A
603108 Uzantılar için izin listesi gereklidir. Uzantılar izin verilenler {0} listesinde olmadığından hedef sunucuya yüklenemedi. Uzantıları izin verilenler listesine ekleyin ve geçişi yeniden deneyin. PostgreSQL uzantılarında belirtilen adımları izleyerek izin verilenler listesini ayarlayın.
603109 Paylaşılan önceden yükleme kitaplıkları yapılandırma hatası. Hedef sunucuda, izin verilen uzantıları {0} 'shared_preload_libraries' ayarına ekleyin ve geçişi yeniden deneyin. PostgreSQL uzantılarında belirtilen adımları izleyerek paylaşılan ön yükleme kitaplıklarını ayarlayın. Bunun için sunucunun yeniden başlatılması gerekir.
603110 Yetersiz ayrıcalıklar. Geçiş kullanıcısı veritabanı erişimi için gerekli izinlere sahip değil. Geçiş kullanıcısının kaynak veritabanlarının sahibi olduğundan ve hem okuma hem de yazma ayrıcalıklarına sahip olduğundan emin olun ve geçişi yeniden deneyin. N/A
603111 Hedef veritabanı temizleme başarısız oldu. Geçiş aşaması sırasında hedef veritabanındaki etkin bağlantılar sonlandırılamıyor. Geçiş kullanıcısına pg_signal_backend rol verin ve geçişi yeniden deneyin. 'GRANT pg_signal_backend to <migration_user>' komutunu kullanarak migration kullanıcısına pg_signal_backend rolünü ekleyin
603112 GUC ayarları hatası. default_transaction_read_only GUC parametresi off değerine ayarlanamadı. Kullanıcı yazma erişiminin düzgün ayarlandığından emin olun ve geçişi yeniden deneyin. Azure portalı veya psql komutu aracılığıyla kaynak sunucuda 'default_transaction_read_only' ayarını KAPALI olarak ayarlayın (örneğin, ALTER SYSTEM SET default_transaction_read_only = off).
603113 Geçiş hatası. Geçiş işlemi zaten Tamamlandı/Başarısız/İptal Edildi durumunda olduğundan, '{dbName}' veritabanı için cutover başlatılamaz. N/A
603114 Geçiş hatası. Çevrimdışı geçiş modunda, '{dbName}' veritabanı için geçiş başlatılamaz. N/A
603115 Eksik kullanıcı ayrıcalıkları. '{0}' geçiş kullanıcısı azure_pg_admin rolünün üyesi değil. Hedef sunucuya gerekli ayrıcalıkları ekleyin ve geçişi yeniden deneyin. N/A
603116 Eksik kullanıcı ayrıcalıkları. '{0}' geçiş kullanıcısının rol oluşturma ayrıcalığı yok. Hedef sunucuya gerekli ayrıcalıkları ekleyin ve geçişi yeniden deneyin. Sorguyu ALTER ROLE <rolename> WITH CREATEROLE; hedef sunucuda çalıştırın.
603117 Eksik kullanıcı ayrıcalıkları. '{0}' geçiş kullanıcısı, hedef sunucudaki '{dbName}' veritabanını silmek için gerekli ayrıcalıklara sahip değil. Hedef sunucudaki veritabanını manuel olarak silin ve geçişi yeniden deneyin. N/A
603400 Desteklenmeyen kaynak sürümü. Aşağıdaki {0} PostgreSQL sürümlerinin geçişi desteklenmiyor. Başka bir geçiş yöntemi kullanmanız gerekir.
603401 Sıralama uyuşmazlığı. Veritabanında {0} harmanlama {1} hedef sunucuda yok. N/A
603402 Sıralama uyuşmazlığı. {0} sütunundaki {1} tablosu için {2} karşılaştırma düzeni hedef sunucuda bulunmuyor. Gerekli harmanlamaları eklemek için Microsoft desteğine başvurun.
603403 Sıralama uyuşmazlığı. Kaynak veritabanı kullanıcı tanımlı harmanlamalar içerir. Bu karşılaştırma düzenlerini silin ve taşıma işlemini yeniden deneyin. N/A
603404 Desteklenmeyen OID'ler Algılandı. {0} veritabanında 'WITH OIDs' içeren tablolar algılandı. PostgreSQL sürüm 12 ve sonraki sürümlerde desteklenmez. PostgreSQL sürüm notlarını ziyaret edin.
603405 Desteklenmeyen Uzantılar. Geçiş hizmeti, hedef sunucuda uzantıları olan {0} veritabanlarının geçişini desteklemez. N/A
603406 Desteklenmeyen Uzantılar. Hedef PostgreSQL {0} , kaynağın ile uyumsuz olan POSTGIS sürüm 3.2.3'i {1}destekler. Hedef sunucunun sürüm 11'e yükseltmesini önerin. PostGIS uyumluluğu bozan değişiklikler sayfasını ziyaret edin.
603407 Uzantı Şeması Hatası. {0} Kaynak sunucudaki sistem şemasında bulunan uzantılar hedef sunucuda desteklenmez. Uzantıları sistem dışı bir şemada bırakın ve yeniden oluşturun, ardından geçişi yeniden deneyin. PostgreSQL uzantılarını ziyaret edin.
603408 Desteklenmeyen Uzantılar. Hedef sunucu sürüm 16 uzantıları desteklemez {0} . 15 veya daha düşük bir sürüme geçin, ardından uzantılar desteklendiği zaman yükseltin. N/A
603409 Kullanıcı tanımlı atamalar mevcut. Kaynak veritabanı {0}, hedef sunucuya geçirilemeyen kullanıcı tanımlı tür dönüştürmeleri içeriyor. N/A
603410 Sistem tablosu izin hatası. Kullanıcıların, hedefe taşınamayan pg_authid ve pg_shadow gibi sistem tablolarına erişimi vardır. Bu izinleri iptal edin ve geçişi yeniden deneyin. Tablolara/görünümlere pg_catalog (ve gibi pg_authidpg_shadow) verilen varsayılan izinleri doğrulamak önemlidir. Ancak, bu izinler hedefe atanamaz. Özellikle, Kullanıcı {1}, {2} izinlerine sahipken, Kullanıcı {3} ise {4} izinlerine sahiptir. Geçici bir çözüm için Kullanıcı, Roller ve İzinler sayfasını ziyaret edin
603413 Desteklenmeyen diller. Taşıma hizmeti, hedef sunucuda {0} diline sahip veritabanlarının taşınmasını desteklemez. Dilleri ve uygulanan işlevlerini kaldırın. Hedef sunucu desteklenmeyen dilleri desteklemiyor. Hedef sunucuya geçmeden önce kaynak sunucuda ilgili dili devre dışı bırakmayı veya kaldırmayı deneyin.
603700 Hedef veritabanı temizleme başarısız oldu. Geçiş öncesi/geçiş sonrası aşaması sırasında hedef veritabanındaki etkin bağlantılar sonlandırılamıyor. N/A
603701 İç sunucu hatası. Hedef sunucuda rol oluşturulamadı. Daha fazla analiz için Microsoft desteğine başvurun.
603702 İç sunucu hatası. Kaynak sunucudan rollerin dökümü alınamadı. Daha fazla analiz için Microsoft desteğine başvurun.
603703 İç sunucu hatası. Genel rol döküm dosyası düzenlenemedi. Daha fazla analiz için Microsoft desteğine başvurun.
603704 İç sunucu hatası. Tüm kaynak roller hedef taşıma kullanıcısına üye olarak eklenemedi. Daha fazla analiz için Microsoft desteğine başvurun.
603705 İç sunucu hatası. Vermeler/iptaller geri yüklenemedi. Daha fazla analiz için Microsoft desteğine başvurun.
603706 İç sunucu hatası. Hedef sunucu geçiş kullanıcısı temizlenemedi. Hedef geçiş kullanıcınız birden çok rolün parçası olabilir. Hedef sunucu geçiş kullanıcısından tüm gereksiz rolleri kaldırın ve geçişi yeniden deneyin. Daha fazla analiz için Microsoft desteğine başvurun.
603707 İç sunucu hatası. Kaynak sunucu yöneticisi kullanıcısına azure_pg_admin veremedi. Daha fazla analiz için Microsoft desteğine başvurun.
603708 İç sunucu hatası. '{dbName}' veritabanında public şemasının sahibi azure_pg_admin olarak değiştirilemedi. Genel şemanın sahibini el ile azure_pg_admin olarak değiştirin ve geçişi yeniden deneyin. Daha fazla analiz için Microsoft desteğine başvurun.
603709 Geçiş kurulumu başarısız oldu. Daha fazla analiz için Microsoft desteğine başvurun.