PostgreSQL Change Data Capture (CDC) bağlayıcısını kullanmadan önce, kaynak PostgreSQL depolama alanının yapılandırma gereksinimlerini karşıladığından emin olun. Bu konu, ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL ve kendi kendine yönetilen PostgreSQL veritabanları için yapılandırma gereksinimlerini ve ilgili işlemleri açıklar.
Arka plan
PostgreSQL CDC bağlayıcısını kullanmadan önce, kaynak PostgreSQL depolama alanının yapılandırma gereksinimlerini karşıladığından emin olmalısınız. Bu konuda ApsaraDB RDS for PostgreSQL, Amazon RDS for PostgreSQL ve kendi kendine yönetilen PostgreSQL veritabanlarının nasıl yapılandırılacağı anlatılmaktadır. PostgreSQL CDC bağlayıcısı, PostgreSQL'in mantıksal abonelik mekanizmasına dayanarak verileri senkronize eder. Daha fazla bilgi için bkz. Mantıksal Kod Çözme Kavramları ve Mantıksal Aboneliğin İlkeleri ve En İyi Uygulamaları.
ApsaraDB RDS for PostgreSQL veritabanı
-
ApsaraDB RDS for PostgreSQL ile Ververica Platform (VVP) arasındaki ağ bağlantısı
ApsaraDB RDS for PostgreSQL ve VVP aynı bölgedeki aynı sanal özel bulut (VPC) içinde bulunuyorsa, bu iki hizmet arasında bağlantı kurulmuş demektir.
ApsaraDB RDS for PostgreSQL ve VVP farklı ağlarda dağıtılmışsa, VPN Gateway gibi yöntemler kullanarak bu iki hizmet arasında bir ağ bağlantısı kurmanız gerekir. Daha fazla bilgi için bkz. Realtime Compute for Apache Flink internete nasıl erişir? ve Realtime Compute for Apache Flink VPC'ler arası bir hizmete nasıl erişir?
VVP'nin ApsaraDB RDS for PostgreSQL'e erişebilmesini sağlamak için ApsaraDB RDS for PostgreSQL üzerinde bir IP adresi izin listesi yapılandırın. Daha fazla bilgi için bkz. ApsaraDB RDS for PostgreSQL örneği için IP adresi izin listesini yapılandırma.
-
ApsaraDB RDS for PostgreSQL sunucu yapılandırmaları
-
Desteklenen sürümler
Yalnızca PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 ve PostgreSQL 16 verileri senkronize edilebilir. PostgreSQL sürümünü sorgulamak için
select version()komutunu çalıştırabilirsiniz. -
Mantıksal kod çözme
Mantıksal kod çözmeyi etkinleştirmek için wal_level = logical parametresini yapılandırın. Daha fazla bilgi için bkz. ApsaraDB RDS for PostgreSQL örneğinin parametrelerini değiştirme. Yapılandırma başarılı olursa, bu özelliği Mantıksal kod çözme bölümünde açıklanan örnek üzerinden test edip kullanabilirsiniz.
-
Verileri senkronize edilecek tablonun REPLICA IDENTITY ayarının FULL olduğundan emin olun.
REPLICA IDENTITY ayarını görüntülemek ve değiştirmek için aşağıdaki SQL deyimlerini yürütebilirsiniz.
-- View the setting of REPLICA IDENTITY. SELECT CASE relreplident WHEN'd'THEN'default' WHEN'n'THEN'nothing' WHEN'f'THEN'full' WHEN'i'THEN'index' ENDASreplica_identity FROMpg_class WHEREoid='mytablename'::regclass; -- Modify the setting of REPLICA IDENTITY. ALTERTABLEmytablenameREPLICAIDENTITYFULL;
-
Veri senkronizasyonu eklentileri
ApsaraDB RDS for PostgreSQL örneğinin ana motor sürümü PostgreSQL 11, PostgreSQL 12 veya PostgreSQL 13 olduğunda yalnızca wal2json mantıksal kod çözme eklentisi desteklenir. pgoutput eklentisi ise ana motor sürümü PostgreSQL 10 veya üstü olduğunda desteklenir. pgoutput ve decodebuf kullanılması önerilir. Daha fazla bilgi için PostgreSQL CDC konusundaki
decoding.plugin.nameseçeneğini arayın.NotVerileri senkronize etmek için pgoutput eklentisini kullanıyorsanız, kullandığınız hesabın yetkili bir hesap olduğundan emin olun. Daha fazla bilgi için bkz. Hesap oluşturma.
Amazon RDS for PostgreSQL
-
Amazon RDS for PostgreSQL ile VVP arasındaki ağ bağlantısı
Amazon RDS for PostgreSQL ile VVP arasında bir ağ bağlantısı kurmak için VVP'nin internet üzerinden Amazon RDS for PostgreSQL'e erişmesine izin vermeniz gerekir. Daha fazla bilgi için bkz. Realtime Compute for Apache Flink internete nasıl erişir? ve Güvenlik gruplarıyla erişimi kontrol etme.
-
Amazon RDS for PostgreSQL sunucu yapılandırmaları
-
Desteklenen sürümler
Yalnızca PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 ve PostgreSQL 16 verileri senkronize edilebilir. PostgreSQL sürümünü sorgulamak için
select version()komutunu çalıştırabilirsiniz. -
Mantıksal kod çözme
rds.logical_replication parametresini 1 olarak ayarlayın.
wal_level parametresinin değerinin logical olduğundan emin olun. Varsayılan olarak, rds.logical_replication parametresi 1 olarak ayarlandığında wal_level parametresi otomatik olarak logical değerine ayarlanır.
-
Verileri senkronize edilecek tablonun REPLICA IDENTITY ayarının FULL olduğundan emin olun.
REPLICA IDENTITY ayarını görüntülemek ve değiştirmek için aşağıdaki SQL deyimlerini yürütebilirsiniz.
-- View the setting of REPLICA IDENTITY. SELECTCASErelreplident WHEN'd'THEN'default' WHEN'n'THEN'nothing' WHEN'f'THEN'full' WHEN'i'THEN'index' ENDASreplica_identity FROMpg_class WHEREoid='mytablename'::regclass; -- Modify the setting of REPLICA IDENTITY. ALTERTABLEmytablenameREPLICAIDENTITYFULL; -
Hesap rolü gereksinimleri
Varsayılan olarak, Amazon Web Services (AWS) yönetim hesabına Amazon RDS for PostgreSQL üzerinde yalnızca rds_replication rolü atanır. Bu role sahip bir kullanıcı, mantıksal yuvaları yönetebilir ve mantıksal yuvaları kullanarak akış verilerini okuyabilir. Yönetim hesabı dışında bir hesap kullanarak mantıksal çoğaltmayı etkinleştirmek istiyorsanız, rds_replication rolünü ilgili hesaba atamanız gerekir. Örneğin, rds_replication rolünü <my_user> tarafından belirtilen kullanıcıya atayabilirsiniz. rds_replication rolünü yalnızca superuser izinlerine sahipseniz kullanıcılara atayabilirsiniz. Yönetim hesabı dışında bir hesap kullanarak ilk anlık görüntüyü oluşturmak istiyorsanız, yakalamak istediğiniz tablo üzerinde SELECT iznini hesaba vermeniz gerekir.
-
Veri senkronizasyonu eklentisi
Veri senkronizasyonu için pgoutput eklentisini kullanın.
-
Kendi kendine yönetilen PostgreSQL veritabanı
-
Kendi kendine yönetilen PostgreSQL veritabanınız ile VVP arasındaki ağ bağlantısı
Kendi kendine yönetilen PostgreSQL veritabanınız Alibaba Cloud üzerinde dağıtılmışsa ve VVP ile aynı VPC içinde bulunuyorsa, veritabanınız ile VVP arasında bir ağ bağlantısı kurulmuş demektir.
Kendi kendine yönetilen PostgreSQL veritabanınız Alibaba Cloud üzerinde dağıtılmamışsa, VVP'nin veritabanınızın genel IP adresine erişmesine izin vermeniz gerekir. Bu durumda, kendi kendine yönetilen PostgreSQL veritabanınız ile VVP arasında VPN Gateway kullanarak bir bağlantı kurmanız gerekir. Daha fazla bilgi için bkz. Realtime Compute for Apache Flink internete nasıl erişir? Ayrıca, VVP'nin kendi kendine yönetilen PostgreSQL veritabanınıza erişmesine izin vermek için pg_hba.conf dosyasını değiştirmeniz gerekir. Daha fazla bilgi için bkz. pg_hba.conf dosyasını güncelleme.
-
Kendi kendine yönetilen PostgreSQL sunucu yapılandırmaları
-
Desteklenen sürümler
Yalnızca PostgreSQL 9.6, PostgreSQL 10, PostgreSQL 11, PostgreSQL 12, PostgreSQL 13, PostgreSQL 14, PostgreSQL 15 ve PostgreSQL 16 verileri senkronize edilebilir. PostgreSQL sürümünü sorgulamak için
select version()komutunu çalıştırabilirsiniz. -
Mantıksal kod çözme
wal_level parametresinin değerinin logical olduğundan emin olun. postgresql.conf dosyasını değiştirin ve veritabanını yeniden başlatın.
-
Verileri senkronize edilecek tablonun REPLICA IDENTITY ayarının FULL olduğundan emin olun.
REPLICA IDENTITY ayarını görüntülemek ve değiştirmek için aşağıdaki SQL deyimlerini yürütebilirsiniz.
-- View the setting of REPLICA IDENTITY. SELECT CASE relreplident WHEN 'd' THEN 'default' WHEN 'n' THEN 'nothing' WHEN 'f' THEN 'full' WHEN 'i' THEN 'index' END AS replica_identity FROM pg_class WHERE oid = 'mytablename'::regclass; -- Modify the setting of REPLICA IDENTITY. ALTER TABLE mytablename REPLICA IDENTITY FULL; -
Bir hesap oluşturun ve hesaba veri senkronizasyonu için gerekli izinleri verin.
Veri senkronizasyonu hesabında REPLICATION ve LOGIN izinlerinin yanı sıra tablo verilerini senkronize etmek için SELECT izni bulunmalıdır.
CREATE ROLE <replication_user> REPLICATION LOGIN; GRANT SELECT ON <table_name> TO <name>;
-
Veri senkronizasyonu eklentisi
PostgreSQL 10 ve sonraki sürümlerde pgoutput eklentisi varsayılan olarak yüklüdür. Diğer PostgreSQL sürümlerini kullanıyorsanız veya veri senkronizasyonu için başka eklentiler yüklediyseniz, PostgreSQL için Mantıksal Kod Çözme Çıkışı Eklenti Kurulumu bölümündeki talimatları uygulayın.
Senkronizasyon aracı olarak pgoutput eklentisini kullanıyorsanız, veri senkronizasyonu hesabının verileri senkronize edilecek tablonun sahibi olduğundan emin olun. Veri senkronizasyonu hesabının verileri senkronize edilecek tablonun sahibi olmasını sağlamak için aşağıdaki adımları uygulayın:
-- 1. Create a synchronization group. CREATE ROLE <replication_group>; -- 2. Add the original owner of the table to the synchronization group. GRANT REPLICATION_GROUP TO <original_owner>; -- 3. Add the data synchronization account to the synchronization group. GRANT REPLICATION_GROUP TO <replication_user>; -- 4. Transfer the relevant permissions to the synchronization group. ALTER TABLE <table_name> OWNER TO REPLICATION_GROUP;NotBu durumda, veri senkronizasyonu hesabı yalnızca tek bir tablonun sahibidir. Bu nedenle, WITH yan tümcesindeki debezium.publication.autocreate.mode parametresini filtered olarak ayarlayın. Her tablo için ilgili izinleri yapılandırma işlemi karmaşıksa, veri senkronizasyonu hesabına doğrudan pg_monitor iznini verebilirsiniz.
GRANT pg_monitor TO <replication_user>;
-
-