PostgreSQL veri kaynağı, PostgreSQL'den veri okumak ve PostgreSQL'e veri yazmak için çift yönlü bir kanal sağlar. Veri eşitleme görevlerini sihirbaz modunda veya komut dosyası modunda yapılandırabilirsiniz. Bu konuda, DataWorks'ün PostgreSQL için veri eşitlemeyi nasıl desteklediği açıklanmaktadır.
Desteklenen sürümler
PostgreSQL sürümleri 10, 11, 12, 13, 14, 15 ve 16.4 için veri kaynakları yapılandırabilirsiniz. PostgreSQL veritabanınızın sürümünü kontrol etmek için aşağıdaki ifadeyi çalıştırın.
SHOW SERVER_VERSION;
Sınırlamalar
Çevrimdışı okuma ve yazma
Görüntülerden veri okuyabilirsiniz.
PostgreSQL veri kaynağı, SCRAM-SHA-256 yöntemi dahil olmak üzere parola tabanlı kimlik doğrulamayı destekler. PostgreSQL veritabanında parolayı veya kimlik doğrulama yöntemini değiştirirseniz, veri kaynağı yapılandırmasını güncellemeniz, bağlantıyı yeniden test etmeniz ve değişiklikleri doğrulamak için ilgili görevleri manuel olarak çalıştırmanız gerekir.
PostgreSQL
-
PostgreSQL'de bir tablo veya sütun adı rakamla başlıyorsa, büyük/küçük harfe duyarlıysa veya tire (-) içeriyorsa, adı çift tırnak içine ("") almanız gerekir. Aksi takdirde, PostgreSQL eklentisi veri okuyamaz veya yazamaz. PostgreSQL Reader ve Writer eklentilerinde çift tırnak ("") bir JSON anahtar sözcüğüdür. Bu nedenle, çift tırnakları ters eğik çizgi (\) ile kaçış karakteriyle belirtmeniz gerekir. Örneğin, bir tablonun adı
123Testise, kaçış karakteri eklenmiş ad\"123Test\"şeklindedir.NotHem açılış hem de kapanış çift tırnakları ters eğik çizgi (\) ile kaçış karakteriyle belirtilmelidir.
Sihirbaz modu kaçış karakteri eklemeyi desteklemez. Karakterlere kaçış karakteri eklemek için komut dosyası moduna geçmeniz gerekir.
Aşağıdaki kod, komut dosyası modunda kaçış karakterlerinin nasıl ekleneceğine ilişkin bir örneği göstermektedir.
"parameter": { "datasource": "abc", "column": [ "id", "\"123Test\"", //Add escape characters ], "where": "", "splitPk": "id", "table": "public.wpw_test" }, Benzersiz bir dizine dayalı olarak PostgreSQL veri kaynağındaki verilerin güncellenmesi desteklenmez. Verileri güncellemek için önce verileri geçici bir tabloya yazmalı ve ardından
RENAMEişlemini kullanmalısınız.
Gerçek zamanlı okuma
Veri Entegrasyonundaki gerçek zamanlı eşitleme görevleri için aşağıdaki sınırlamalar geçerlidir:
-
Veri Entegrasyonu,
ADD COLUMNişlemi için özel destek sağlar:-
Kısıtlama: Bir
ADD COLUMNişlemini, tek bir işlemde diğerADD COLUMN,DROP COLUMNveya diğer DDL ifadeleriyle birleştiremezsiniz.ÖnemliADD COLUMNişleminiDROP COLUMN、RENAME COLUMNveya diğerALTER COLUMNişlemleri gibi diğer işlemlerle birlikte kullanırsanız, veri eşitleme görevi düzgün çalışmayabilir. Sınırlama:
ADD COLUMNdışındaki DDL işlemleri tanınamaz.
-
ALTER TABLE/CREATE TABLEdesteklenmez.TEMPORARY tabloların, UNLOGGED tabloların ve Hyper tabloların çoğaltılması desteklenmez. PostgreSQL, bu tür tablolar için WAL günlük ayrıştırmasına abone olma mekanizması sağlamaz.
Sequences (
serial/bigserial/identity) çoğaltması desteklenmez.TRUNCATE işlemi desteklenmez.
Büyük nesne çoğaltma (Bytea) desteklenmez.
Görüntülerin, materialized view'ların ve foreign table'ların çoğaltılması desteklenmez.
PostgreSQL, tek tablo gerçek zamanlı veya tüm veritabanı gerçek zamanlı eşitleme için kaynak olarak kullanıldığında, yalnızca hesabın owner izinlerine sahip olduğu tablolar eşitlenebilir.
Desteklenen sütun türleri
Çoğu PostgreSQL veri türü desteklenir. Ancak, bazı türler toplu eşitleme okuma ve yazma işlemleri için desteklenmez. Devam etmeden önce veri türlerinizi kontrol edin.
Aşağıdaki tabloda PostgreSQL için tür dönüştürme eşlemeleri listelenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yukarıda listelenenler dışındaki sütun türleri desteklenmez.
PostgreSQL Reader'da MONEY, INET ve BIT türleri,
a_inet::varcharbenzeri bir söz dizimi kullanılarak dönüştürülmelidir.
Veri eşitlemeden önceki hazırlıklar
DataWorks'te veri eşitlemeden önce, PostgreSQL veri eşitleme görevlerinin DataWorks'te düzgün şekilde yapılandırılabilmesini ve çalıştırılabilmesini sağlamak için bu bölümde açıklandığı gibi PostgreSQL ortamını hazırlamanız gerekir. Aşağıdaki bölümlerde PostgreSQL eşitlemesi için hazırlık adımları açıklanmaktadır.
Hazırlık 1: Hesap oluşturma ve izinleri yapılandırma
Sonraki işlemler için bir veritabanı giriş hesabı planlamanız gerekir. Bu hesabın veritabanında REPLICATION、 LOGIN izinlerine sahip olması gerekir.
Gerçek zamanlı eşitleme yalnızca mantıksal çoğaltma mekanizmasını destekler. Mantıksal çoğaltma, bir veya daha fazla abonenin yayıncı düğümündeki bir veya daha fazla yayına abone olduğu bir yayınlama ve abonelik modeli kullanır. Aboneler, abone oldukları yayınlardan veri çeker.
Bir tablonun mantıksal çoğaltması genellikle yayıncı veritabanındaki verilerin anlık görüntüsünü alarak ve bunu aboneye kopyalayarak başlar. Anlık görüntü tamamlandıktan sonra, yayıncıdaki değişiklikler aboneye gerçek zamanlı olarak gönderilir.
-
Bir hesap oluşturun.
Daha fazla bilgi için bkz. Hesap oluşturma.
-
İzinleri yapılandırın.
Hesabın
replicationiznine sahip olup olmadığını kontrol edin.select userepl from pg_user where usename='xxx'Beklenen sonuç True değeridir. Sonuç False ise, hesabın izni yoktur. İzni vermek için aşağıdaki ifadeyi çalıştırabilirsiniz.
ALTER USER <user> REPLICATION;
Hazırlık 2: Bekleme veritabanının desteklenip desteklenmediğini kontrol etme
SELECT pg_is_in_recovery()
Yalnızca birincil veritabanı desteklenir. Beklenen sonuç False değeridir. Sonuç True ise, veritabanı bir bekleme veritabanıdır. Gerçek zamanlı eşitleme bekleme veritabanlarını desteklemez. Veri kaynağı yapılandırmasını birincil veritabanını işaret edecek şekilde değiştirmeniz gerekir. Daha fazla bilgi için bkz. Veri kaynağını yapılandırma.
Hazırlık 3: wal_level ayarının logical olup olmadığını kontrol etme
show wal_level
wal_level, wal_log düzeyini belirtir. Beklenen sonuç logical değeridir. Aksi takdirde, mantıksal çoğaltma mekanizması desteklenmez.
Hazırlık 4: Bir wal_sender işleminin başlatılıp başlatılamayacağını kontrol etme
-- Query max_wal_senders show max_wal_senders; -- Query the number of pg_stat_replication entries select count(*) from pg_stat_replication
Eğer max_wal_senders boş değilse ve değeri pg_stat_replication içindeki max_wal_senders girdi sayısından büyükse, boşta olan wal_sender işlemleri mevcuttur. PostgreSQL veritabanı, günlükleri abonelere göndermek için veri eşitleme programı adına wal_sender işlemlerini başlatır.
Eşitlenmesi gereken her tablo için gerekli izinleri vermek amacıyla ALTER TABLE [tableName] REPLICA IDENTITY FULL ifadesini manuel olarak çalıştırmanız gerekir. Aksi takdirde, gerçek zamanlı eşitleme görevi başarısız olur.
Bir PostgreSQL gerçek zamanlı eşitleme görevi başlatıldıktan sonra, veritabanında yuvalar (slots) ve yayınlar (publications) otomatik olarak oluşturulur. Yuva adı biçimi di_slot_ + eşitleme görevi kimliği, yayın adı biçimi ise di_pub_ + Çözüm Kimliği şeklindedir. Gerçek zamanlı eşitleme görevi durdurulduktan veya dağıtımı kaldırıldıktan sonra, yuvaları ve yayınları manuel olarak silmeniz gerekir. Aksi takdirde, PostgreSQL WAL dosyaları sürekli olarak büyüyebilir. DataWorks Veri Entegrasyonu görev listesinde eşitleme görevi kimliğini arayarak ilgili görevi bulabilir ve görevin durumunu ve zamanlama yapılandırmalarını kontrol ederek görevin durdurulup durdurulmadığını veya dağıtımının kaldırılıp kaldırılmadığını doğrulayabilirsiniz.
Veri kaynağı ekleme
DataWorks'te bir eşitleme görevi geliştirmeden önce, Veri kaynağı yapılandırması bölümündeki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolundaki parametre açıklamalarını görüntüleyebilirsiniz.
PostgreSQL veritabanınızda SSL kimlik doğrulaması etkinleştirildiyse, DataWorks'te bir PostgreSQL veri kaynağı eklerken SSL kimlik doğrulamasını da etkinleştirmeniz gerekir. Daha fazla bilgi için bkz. PostgreSQL veri kaynağı için SSL kimlik doğrulaması ekleme.
Veri eşitleme görevi geliştirme: PostgreSQL eşitleme işlemi kılavuzu
Bir eşitleme görevini yapılandırmaya yönelik giriş noktası ve yordam hakkında bilgi için aşağıdaki yapılandırma kılavuzlarına bakın.
Tek tablo toplu eşitleme görevi yapılandırma kılavuzu
Yordam hakkında daha fazla bilgi için bkz. Sihirbaz modunda toplu eşitleme görevi yapılandırma ve Komut dosyası modunda toplu eşitleme görevi yapılandırma.
Komut dosyası modu yapılandırması için tüm parametreler ve komut dosyası demosu için aşağıdaki Ek 1: Komut dosyası demosu ve parametre açıklaması bölümüne bakın.
Tüm veritabanı toplu okuma ve tüm veritabanı gerçek zamanlı okuma eşitleme görevi yapılandırma kılavuzu
Yordam hakkında daha fazla bilgi için bkz. Tüm veritabanı toplu eşitleme görevi yapılandırma ve Tüm veritabanı gerçek zamanlı eşitleme görevi yapılandırma.
SSS
-
Birincil-bekleme eşitleme veri kurtarma sorunu
Birincil-bekleme eşitleme sorunu, PostgreSQL'in birincil-bekleme olağanüstü durum kurtarma kullandığı ve bekleme veritabanının verileri birincil veritabanından sürekli olarak kurtardığı bir senaryoyu ifade eder. Birincil ve bekleme veri eşitlemesi arasında bir zaman farkı olduğundan, özellikle ağ gecikmesi gibi belirli durumlarda, bekleme veritabanında kurtarılan veriler birincil veritabanından önemli ölçüde farklı olabilir. Bekleme veritabanından eşitlenen veriler, mevcut zamanın tam bir anlık görüntüsü değildir.
-
Tutarlılık kısıtlaması
PostgreSQL, güçlü tutarlılığa sahip bir veri sorgulama arabirimi sağlayan bir RDBMS sistemidir. Örneğin, bir eşitleme görevi çalışırken ve diğer yazarlar veritabanına veri yazarken, PostgreSQL Reader veritabanının anlık görüntü özelliği nedeniyle yeni yazılan verileri almaz.
Yukarıdakiler, PostgreSQL Reader'ın tek iş parçacıklı moddaki veri eşitleme tutarlılığı özelliklerini açıklamaktadır. PostgreSQL Reader, yapılandırmanıza göre eşzamanlı veri çıkarma işlemleri gerçekleştirebilir, bu nedenle kesin veri tutarlılığı garanti edilemez.
PostgreSQL Reader, splitPk'ye göre verileri böldükten sonra, veri eşitlemeyi tamamlamak için birden çok eşzamanlı görev sırayla başlatılır. Bu eşzamanlı görevler aynı okuma işlemine ait değildir ve aralarında zaman aralıkları bulunur. Bu nedenle, veriler eksiksiz ve tutarlı bir veri anlık görüntüsü değildir.
Çok iş parçacıklı işlemler için tutarlı anlık görüntüler teknik olarak mümkün değildir. Bu durum yalnızca mühendislik açısından ele alınabilir. Aşağıdaki çözümler ödünleşimler içerir. Durumunuza göre seçim yapabilirsiniz.
Veri parçalama olmayan tek iş parçacıklı eşitleme kullanın. Dezavantajı daha yavaş hızdır, ancak tutarlılığı sağlar.
Mevcut verilerin statik olduğundan emin olmak için diğer veri yazarlarını durdurun; örneğin, tabloları kilitleyerek veya bekleme veritabanı eşitlemesini durdurarak. Dezavantajı, çevrimiçi iş üzerinde potansiyel etki yaratmasıdır.
-
Veritabanı kodlama sorunu
PostgreSQL, sunucu tarafında yalnızca EUC_CN ve UTF-8 basitleştirilmiş Çin kodlamalarını destekler. PostgreSQL Reader, alt düzeyde veri çıkarma için JDBC kullanır. JDBC, çeşitli kodlamaları yerel olarak destekler ve alt düzeyde kodlama dönüştürme işlemleri gerçekleştirir. Bu nedenle, PostgreSQL Reader'ın bir kodlama belirtmesine gerek yoktur ve kodlamaları otomatik olarak algılayıp dönüştürebilir.
PostgreSQL'in alt düzey yazma kodlaması yapılandırılmış kodlamasıyla tutarsızsa, PostgreSQL Reader bu sorunu algılayamaz ve bir çözüm sunamaz. Dışa aktarılan veriler bozuk karakterler içerebilir.
-
Artımlı veri eşitleme yöntemleri
PostgreSQL Reader, veri çıkarma için JDBC SELECT ifadelerini kullanır. Bu nedenle, artımlı verileri çıkarmak için
SELECT…WHERE…kullanabilirsiniz. Yöntemler şunlardır:Çevrimiçi bir uygulama veritabanına veri yazarken, eklemeler, güncellemeler ve silmeler (mantıksal silmeler) dahil olmak üzere modify alanını değiştirme zaman damgasıyla doldurur. Bu tür uygulamalar için PostgreSQL Reader'ın where koşuluna önceki eşitleme aşamasından zaman damgasını eklemesi yeterlidir.
Yeni eklenen sıralı veriler için PostgreSQL Reader'ın where koşuluna önceki aşamadaki maksimum otomatik artan kimliği eklemesi yeterlidir.
İş seviyesinde yeni ve değiştirilen verileri ayırt edecek bir sütun yoksa, PostgreSQL Reader artımlı veri eşitleme gerçekleştiremez ve yalnızca tam verileri eşitleyebilir.
-
SQL güvenliği
PostgreSQL Reader, özel SELECT çıkarma ifadelerini uygulamanız için size querySql ifadesini sağlar. PostgreSQL Reader, querySql ifadesi üzerinde herhangi bir güvenlik doğrulaması gerçekleştirmez.
-
Bir eşitleme görevi yapılandırırken istediğiniz tablo adını seçemiyorsanız, sorunu şu şekilde giderin:
Veri kaynağının bağlı olup olmadığını kontrol edin.
Veri kaynağı için kullanılan PostgreSQL hesabının gerekli tablo izinlerine sahip olup olmadığını kontrol edin.
Veritabanında çok sayıda tablo varsa, tablo adını doğrudan yazarak arama yapmanızı öneririz.
PostgreSQL, parçalı tablo eşitlemeyi desteklemez. Eşitlemeniz gereken çok sayıda PostgreSQL tablonuz varsa, tüm veritabanı eşitleme görevi kullanmanızı öneririz. Daha fazla bilgi için bkz. Tüm veritabanı eşitleme görevi yapılandırma kılavuzu.
Ek 1: Komut dosyası demosu ve parametre açıklaması
Kod düzenleyicisini kullanarak toplu eşitleme görevi yapılandırma
Toplu eşitleme görevini kod düzenleyicisini kullanarak yapılandırmak istiyorsanız, komut dosyasındaki ilgili parametreleri birleşik komut dosyası format gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için bkz. Komut dosyası modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyicisini kullanarak toplu eşitleme görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklamaktadır.
Reader komut dosyası demosu
Bir PostgreSQL veritabanından veri çıkaran bir işi yapılandırmak için komut dosyası modunu kullanın. Daha fazla bilgi için bkz. Komut dosyası modunda toplu eşitleme görevi yapılandırma.
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"postgresql",// The plugin name. "parameter":{ "datasource":"",// The data source. "column":[// The columns. "col1", "col2" ], "where":"",// The filter condition. "splitPk":"",// The column used as the split key for data sharding. Data synchronization starts concurrent tasks for data synchronization. "table":""// The table name. }, "name":"Reader", "category":"reader" }, { "stepType":"stream", "parameter":{}, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true, // A value of false for throttle indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency of the job. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Reader komut dosyası parametreleri
Parametre | Açıklama | Gerekli | Varsayılan değer |
datasource | Veri kaynağı adı. Komut dosyası modu, veri kaynakları eklemenize olanak tanır. Bu parametrenin değeri, eklediğiniz veri kaynağının adıyla aynı olmalıdır. | Evet | Yok |
table | Veri eşitlemek istediğiniz tablonun adı. | Evet | Yok |
column | Yapılandırılan tabloda eşitlenecek sütun adları kümesi, bir JSON dizisi olarak açıklanır. Varsayılan olarak, [*] gibi tüm sütunlar kullanılır.
| Evet | Yok |
splitFactor | Bölme faktörü. Veri bölme sayısını yapılandırabilirsiniz. Birden çok eşzamanlı iş parçacığı yapılandırılırsa, veriler eşzamanlılık × splitFactor parçaya bölünür. Örneğin, eşzamanlılık 5 ve splitFactor 5 ise, veriler 5 × 5 = 25 parçaya bölünür ve 5 eşzamanlı iş parçacığı üzerinden yürütülür. Not Önerilen değer aralığı: 1 ila 100. Aşırı büyük değerler bellek yetersizliği (OOM) hatalarına neden olabilir. | Hayır | 5 |
splitPk | PostgreSQL Reader veri çıkarırken, splitPk belirtirseniz, splitPk tarafından temsil edilen sütun veri parçalama için kullanılır. Veri eşitleme, eşitleme performansını artırmak için eşzamanlı görevler başlatır:
| Hayır | Yok |
where | Filtre koşulu. PostgreSQL Reader, belirtilen column, table ve where koşullarına göre SQL'i birleştirir ve SQL'e dayanarak veri çıkarır. Örneğin, test sırasında where koşulunu bir iş senaryosunu belirtmek için kullanabilirsiniz. Tipik olarak, mevcut günün verileri eşitlenir. Where koşulunu
| Hayır | Yok |
querySql (gelişmiş mod, sihirbaz modunda kullanılamaz) | Bazı iş senaryolarında, where yapılandırması filtre koşullarını tanımlamak için yetersiz kalabilir. Özel filtre SQL'sini tanımlamak için bu parametreyi kullanabilirsiniz. Bu parametre yapılandırıldığında, veri eşitleme sistemi tabloları, sütunları ve splitPk yapılandırmalarını yok sayar ve verileri filtrelemek için doğrudan bu parametrenin içeriğini kullanır. Örneğin, çoklu tablo JOIN işleminden sonra veri eşitlemek için | Hayır | Yok |
fetchSize | Bu parametre, eklenti ile veritabanı sunucusu arasında her partide alınan kayıt sayısını belirtir. Bu değer, Veri Entegrasyonu ile sunucu arasındaki ağ etkileşimlerinin sayısını belirler ve veri çıkarma performansını önemli ölçüde artırabilir. Not Çok büyük bir fetchSize değeri (>2048), veri eşitleme işleminin bellek yetersizliği (OOM) hatası vermesine neden olabilir. | Hayır | 512 |
Writer komut dosyası demosu
Aşağıda bir komut dosyası yapılandırma örneği verilmiştir. Daha fazla bilgi için yukarıdaki parametre açıklamalarına bakın.
{ "type":"job", "version":"2.0",// The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"postgresql",// The plugin name. "parameter":{ "datasource":"",// The data source. "column":[// The columns. "col1", "col2" ], "table":"",// The table name. "preSql":[],// The SQL statements executed before the data synchronization task. "postSql":[],// The SQL statements executed after the data synchronization task. }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0"// The error count. }, "speed":{ "throttle":true,// A value of false for throttle indicates that throttling is disabled and the mbps parameter does not take effect. A value of true indicates that throttling is enabled. "concurrent":1, // The concurrency of the job. "mbps":"12"// The throttling rate. 1 mbps = 1 MB/s. } }, "order":{ "hops":[ { "from":"Reader", "to":"Writer" } ] } }
Writer komut dosyası parametreleri
Parametre | Açıklama | Gerekli | Varsayılan değer |
datasource | Veri kaynağı adı. Komut dosyası modu, veri kaynakları eklemenize olanak tanır. Bu parametrenin değeri, eklediğiniz veri kaynağının adıyla aynı olmalıdır. | Evet | Yok |
table | Veri eşitlemek istediğiniz tablonun adı. | Evet | Yok |
writeMode | Yazma modu. Şu anda insert ve copy modları desteklenmektedir:
| Hayır | insert |
column | Hedef tabloya veri yazılacak sütunlar, virgülle ayrılmış olarak belirtilir. Örneğin, | Evet | Yok |
preSql | Veri eşitleme görevi çalışmadan önce yürütülecek SQL ifadeleri. Şu anda sihirbaz modu yalnızca bir SQL ifadesine izin verirken, komut dosyası modu eski verileri temizlemek gibi amaçlarla birden çok SQL ifadesini destekler. | Hayır | Yok |
postSql | Veri eşitleme görevi çalıştıktan sonra yürütülecek SQL ifadeleri. Şu anda sihirbaz modu yalnızca bir SQL ifadesine izin verirken, komut dosyası modu zaman damgası eklemek gibi amaçlarla birden çok SQL ifadesini destekler. | Hayır | Yok |
batchSize | Her partide gönderilen kayıt sayısı. Bu değer, Veri Entegrasyonu ile PostgreSQL arasındaki ağ etkileşimlerinin sayısını önemli ölçüde azaltabilir ve genel aktarım hızını artırabilir. Ancak, bu değeri çok büyük ayarlamak Veri Entegrasyonu işleminin bellek yetersizliği (OOM) hatası vermesine neden olabilir. | Hayır | 1.024 |
pgType | PostgreSQL'e özel türler için dönüştürme yapılandırması. Desteklenen türler arasında bigint[], double[], text[], Jsonb ve JSON bulunur. Aşağıda bir yapılandırma örneği verilmiştir. | Hayır | Yok |
Ek 2: PostgreSQL veri kaynağı için SSL kimlik doğrulaması ekleme
PostgreSQL SSL kimlik doğrulama dosyası açıklaması
DataWorks'te bir PostgreSQL veri kaynağı bağlantısı oluştururken veya değiştirirken SSL kimlik doğrulamasını yapılandırabilirsiniz. SSL kimlik doğrulama yapılandırma parametreleri aşağıda açıklanmıştır.
PostgreSQL veritabanı | DataWorks PostgreSQL veri kaynağı yapılandırması | |||
SSL bağlantı şifrelemesi | İstemci şifrelemesi | ACL yapılandırması | Yapılandırma öğesi | Açıklama |
Etkin | Devre dışı | Yok | Truststore sertifika dosyası | İsteğe bağlı. İstemci, sunucuyu kimlik doğrulamak için bu sertifikayı kullanır.
|
Etkin | ACL yapılandırması prefer olarak ayarlandı |
| Hem Keystore sertifika dosyası hem de Özel anahtar dosyası isteğe bağlıdır. ACL yapılandırması prefer olarak ayarlandığında, sunucu istemci sertifikası doğrulamasını zorunlu kılmaz.
| |
ACL yapılandırması verify-ca olarak ayarlandı |
| |||
-
ACL yapılandırması prefer olarak ayarlandığında, istemci içeriği doğrulama için zorunlu kılınmaz.
SSL kimlik doğrulaması için hiçbir dosya yapılandırılmazsa, normal bir bağlantı kullanılır.
SSL kimlik doğrulaması için kimlik doğrulama dosyaları eklenirse, yukarıdaki tabloda ilgili açıklamalara bakın.
ACL yapılandırması verify-ca olarak ayarlandığında, veri kaynağını oluşturmak için Keystore sertifika dosyası, Özel anahtar dosyası ve Özel anahtar parolasını yapılandırın.
PostgreSQL SSL kimlik doğrulama dosyalarını elde etme
Bu bölümde, SSL kimlik doğrulama sertifikalarını oluşturmak için örnek olarak bir ApsaraDB RDS for PostgreSQL örneği kullanılmaktadır.
-
Truststore sertifika dosyasını edinin.
Truststore sertifika dosyasını elde etme hakkında daha fazla bilgi için bkz. SSL şifreli bağlantı yapılandırma.
RDS örnek listesine gidin, ilgili bölgedeki RDS örneğine tıklayın ve ardından örnek ayrıntıları sayfasına gitmek için hedef örnek kimliğine tıklayın.
-
Korumak istediğiniz bağlantı dizesini seçin.
SSL sekmesine tıklayın.
Use Cloud Certificate seçeneğine tıklayın.
Configure Database Certificate (Prevent Database Spoofing) satırında, Modify seçeneğine tıklayın.
Select Connection String to Protect iletişim kutusunda, hedef bağlantı dizesini (örneğin, iç ağ adresi) seçin.
OK seçeneğine tıklayın.
NotGenel uç nokta etkinleştirilirse, hem iç hem de genel uç noktalar görüntülenir. Bulut sertifikası yalnızca bir uç noktayı koruyabilir. İç uç nokta nispeten daha güvenli olduğundan, genel uç noktayı korumanızı öneririz. İç ve genel uç noktaları görüntüleme hakkında daha fazla bilgi için bkz. İç ve genel uç noktaları görüntüleme.
Hem iç hem de genel uç noktaları korumanız gerekiyorsa, bkz. Özel sertifika yapılandırma.
Bulut sertifikasını yapılandırdıktan sonra, örneğin Running Status durumu Modifying SSL olarak değişir. Bu durum yaklaşık üç dakika sürer. Çalışma durumu Running olarak değişene kadar bekleyin ve ardından devam edin.
c. Truststore sertifikası dosyasını elde etmek için Download CA Certificate seçeneğine tıklayın.
İndirilen CA sertifikası paketi üç dosya içerir. DataWorks'te PostgreSQL veri kaynağını yapılandırırken,
.pemuzantılı dosyayı veya.p7buzantılı dosyayı Truststore sertifika dosyası yapılandırma öğesine yükleyin. -
Keystore sertifika dosyası, Özel anahtar dosyası ve Özel anahtar parolasını edinin ve yapılandırın.
Önkoşullar: SSL şifreli bağlantı yapılandırma veya özel sertifika yapılandırma işlemlerini tamamladınız ve OpenSSL aracına sahipsiniz.
NotLinux sistemi kullanıyorsanız, OpenSSL önceden yüklenmiştir. Windows sistemi kullanıyorsanız, OpenSSL yazılım paketini indirin ve yükleyin.
Keystore sertifika dosyası, Özel anahtar dosyası ve Özel anahtar parolasını elde etme ve yapılandırma hakkında daha fazla bilgi için bkz. İstemci sertifikası yapılandırma.
-
Linux sisteminde OpenSSL aracını kullanın veya Windows sisteminde OpenSSL yazılımını yükleyerek kendinden imzalı bir sertifika (ca1.crt) ve bunun özel anahtarını (ca1.key) oluşturun.
openssl req -new -x509 -days 3650 -nodes -out ca1.crt -keyout ca1.key -subj "/CN=root-ca1" -
Bir istemci sertifikası imzalama isteği dosyası (client.csr) ve bir istemci sertifikası özel anahtarı (client.key) oluşturun.
openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=<client_username>"Bu komutta,
-subjparametresinden sonraki CN değeri, istemcinin veritabanına erişmek için kullandığı kullanıcı adı olarak ayarlanmalıdır. -
İstemci sertifikasını (client.crt) oluşturun.
openssl x509 -req -in client.csr -text -days 365 -CA ca1.crt -CAkey ca1.key -CAcreateserial -out client.crt -
RDS PostgreSQL sunucunuz istemci CA sertifikası doğrulaması gerektiriyorsa, oluşturulan istemci kendinden imzalı sertifika ca1.crt dosyasını açın, sertifika içeriğini kopyalayın ve istemci CA sertifikası olarak Client CA Certificate Public Key Content iletişim kutusuna yapıştırın.
Configure Client CA Certificate panelinde, Enable Client CA Certificate seçeneğine tıklayın. Görüntülenen iletişim kutusunda, oluşturulan CA sertifikasının (ca1.crt) genel anahtar içeriğini Public Key metin kutusuna yapıştırın ve ardından OK seçeneğine tıklayın. İstemci CA sertifikası değiştirildikten sonra, örnek otomatik olarak yeniden başlatılır.
-
RDS tarafında istemci CA sertifikasını yapılandırdıktan sonra, DataWorks'te PostgreSQL veri kaynağını yapılandırırken istemci sertifikası özel anahtarı client.key dosyasını client.pk8 dosyasına dönüştürün ve client.pk8 dosyasını DataWorks PostgreSQL veri kaynağı yapılandırmasındaki Özel anahtar dosyası yapılandırma öğesine yükleyin.
cp client.key client.pk8 -
Özel anahtar parolasını yapılandırın.
openssl pkcs8 -topk8 -inform PEM -in client.key -outform der -out client.pk8 -v1 PBE-MD5-DESNotÖzel anahtar parolasını yapılandırmak için komutu çalıştırırken bir parola girmeniz gerekir. Bir parola belirlerseniz, DataWorks PostgreSQL veri kaynağı yapılandırmasındaki özel anahtar parolası için aynı parolayı kullanın.
-
PostgreSQL SSL kimlik doğrulama dosyalarını yapılandırma
Elde edilen sertifika dosyalarını DataWorks PostgreSQL yapılandırma öğelerine yüklerken aşağıdaki işlemleri gerçekleştirin:
Truststore sertifika dosyası: Truststore sertifika dosyasını elde etme adımında elde edilen
.pemuzantılı dosyayı veya.p7buzantılı dosyayı yükleyin.Keystore sertifika dosyası: İstemci sertifikası oluşturma adımında elde edilen istemci sertifikası dosyası client.crt dosyasını yükleyin.
Özel anahtar dosyası: Özel anahtar dosyasını dönüştürme adımında istemci sertifikası özel anahtarı client.key dosyasından dönüştürülen client.pk8 dosyasını yükleyin.
Özel anahtar parolası: Özel anahtar parolasını yapılandırma adımında yapılandırılan parolayı girin.
ACL yapılandırması: RDS örnek listesine gidin, ilgili bölgedeki RDS örneğine tıklayın, örnek ayrıntıları sayfasına gitmek için hedef örnek kimliğine tıklayın ve ardından ayarı değiştirmek için Data Security > ACL Configuration seçeneğine tıklayın. Farklı SSL kimlik doğrulama yöntemlerini seçebilirsiniz. Daha fazla bilgi için bkz. ACL yapılandırma.
Kullanılabilir SSL kimlik doğrulama yöntemleri şunlardır:
prefer: Veri bağlantısını şifreler.
verify-ca: Veri bağlantısını şifreler ve istemci sertifikası özgünlüğünü doğrular.
verify-full: Veri bağlantısını şifreler, istemci sertifikası özgünlüğünü doğrular ve sertifika CN değerinin veritabanı kullanıcı adıyla eşleştiğini kontrol eder.
cert: Parola yerine sertifika kullanarak oturum açar, veri bağlantısını şifreler, istemci sertifikası özgünlüğünü doğrular ve sertifika CN değerinin veritabanı kullanıcı adıyla eşleştiğini kontrol eder.
ACL kimlik doğrulama yöntemi prefer olarak ayarlanırsa, PostgreSQL sunucusu istemci sertifikası doğrulamasını zorunlu kılmaz.
ACL kimlik doğrulama yöntemi RDS PostgreSQL'de verify-ca olarak ayarlanırsa, sunucunun istemci kimlik doğrulamasını doğrulayabilmesi için DataWorks'te PostgreSQL veri kaynağını yapılandırırken doğru istemci sertifikasını yüklemeniz gerekir.