PolarDB veri kaynağı, PolarDB'den veri okumanıza ve PolarDB'ye veri yazmanıza olanak tanır. Senkronizasyon görevini kod içermeyen arayüzü veya betik modunu kullanarak yapılandırabilirsiniz.
Sınırlamalar
Toplu okuma ve yazma
Verileri görünümlerden okuyabilirsiniz.
Gerçek zamanlı okuma
Kaynak olarak bir PolarDB for MySQL kümesi kullanıyorsanız ikili günlükleri (binary log) etkinleştirmeniz gerekir. PolarDB for MySQL, MySQL ile tam uyumlu cloud-native bir veritabanıdır. PolarDB for MySQL varsayılan olarak ikili günlük yerine üst düzey fiziksel günlükleri kullanır. MySQL ekosistemiyle daha iyi entegrasyon sağlamak için PolarDB ikili günlükleri etkinleştirmenize olanak tanır.
Desteklenen veri türleri
Toplu okuma
Aşağıdaki tabloda PolarDB Reader için veri türü eşlemeleri listelenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Tabloda listelenmeyen veri türleri desteklenmez.
PolarDB Reader eklentisi TINYINT(1) türünü tamsayı olarak işler.
Toplu yazma
PolarDB Writer, PolarDB Reader'a benzer şekilde PolarDB veri türlerinin çoğunu ancak tamamını değil destekler. Veri türlerinizin desteklendiğinden emin olun.
Aşağıdaki tabloda PolarDB Writer için veri türü eşlemeleri listelenmiştir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ön koşullar
IP adresi izin listesini yapılandırma
Serverless kaynak grubunuzu veya Data Integration için Özel Kaynak Grubunu içeren VPC'nin CIDR bloğunu PolarDB kümenizin IP adresi izin listesine ekleyin. Daha fazla bilgi için bkz. Küme izin listesini ayarlama.
Hesap oluşturma ve izin verme
Bir hesap oluşturun ve gerekli izinleri verin.
Veri senkronizasyonu için bir veritabanı hesabı oluşturun. Hesabın veritabanında SELECT, REPLICATION SLAVE, REPLICATION CLIENT izinlerine sahip olması gerekir.
-
Hesap oluşturun.
Daha fazla bilgi için bkz. Veritabanı hesabı oluşturma ve yönetme.
-
İzin verin.
Gerekli izinleri hesaba vermek için aşağıdaki komutu çalıştırın. Alternatif olarak
SUPERiznini verebilirsiniz.-- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'your_password'; GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%';
İkili günlüğü etkinleştirme
Daha fazla bilgi için bkz. İkili günlüğü etkinleştirme.
Veri kaynağı ekleme
DataWorks'te bir senkronizasyon görevi geliştirmeden önce, Veri kaynağı yapılandırması bölümündeki talimatları izleyerek gerekli veri kaynağını DataWorks'e eklemeniz gerekir. Veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolundaki parametre açıklamalarını görüntüleyebilirsiniz.
Senkronizasyon görevi yapılandırma
Senkronizasyon 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 tablalı toplu görev yapılandırma
Daha fazla bilgi için bkz. Kod içermeyen arayüzde görev yapılandırma ve Betik modunda görev yapılandırma.
Parametrelerin tam listesi ve bir betik demosu için bkz. Ek: Betik demosu ve parametreler.
Tablo veya veritabanı için gerçek zamanlı senkronizasyon yapılandırma
Daha fazla bilgi için bkz. Gerçek zamanlı senkronizasyon görevi yapılandırma (eski).
Tam veritabanı toplu okuma ve artımlı gerçek zamanlı senkronizasyon yapılandırma
Daha fazla bilgi için bkz. Gerçek zamanlı tam veritabanı senkronizasyon görevi yapılandırma.
SSS
Ek: Betik demosu ve parametreler
Kod düzenleyiciyi kullanarak toplu senkronizasyon görevi yapılandırma
Kod düzenleyiciyi kullanarak bir toplu senkronizasyon görevi yapılandırmak istiyorsanız, betikteki ilgili parametreleri birleşik betik biçimi gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için bkz. Betik modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyiciyi kullanarak bir toplu senkronizasyon görevi yapılandırdığınızda veri kaynakları için yapılandırmanız gereken parametreleri açıklar.
Reader betik demosu
Aşağıdaki kod, bir veritabanındaki tek bir tablodan veri okumaya yönelik bir betik örneği sağlar. Parametreler hakkında daha fazla bilgi için parametre açıklaması bölümüne bakın.
{
"type": "job",
"steps": [
{
"parameter": {
"datasource": "test_005", // The name of the data source.
"column": [ // The source column names.
"id",
"name",
"age",
"sex",
"salary",
"interest"
],
"where": "id=1001", // The filter condition.
"splitPk": "id", // The sharding key.
"table": "PolarDB_person", // The source table name.
"useReadonly": "false" // Specifies whether to read data from a secondary database.
},
"name": "Reader",
"category": "reader"
},
{
"parameter": {}
],
"version": "2.0", // The version number.
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": { // The error tolerance.
"record": ""
},
"speed": {
"concurrent": 6, // The concurrency level.
"throttle": true, // If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
"mbps":"12" // The throttling rate, in MB/s.
}
}
}
Reader betik parametreleri
|
Parametre |
Açıklama |
Gerekli |
Varsayılan |
|
datasource |
Veri kaynağının adı. Betik modunda bu parametrenin değeri, eklenen veri kaynağının adıyla aynı olmalıdır. |
Evet |
Yok |
|
table |
Veri senkronize etmek istediğiniz kaynak tablonun adı. |
Evet |
Yok |
|
useReadonly |
Verilerin ikincil bir veritabanından okunup okunmayacağını belirtir. Bu parametreyi |
Hayır |
false |
|
column |
Senkronize etmek istediğiniz kaynak tablodaki sütunlar. Değer bir JSON dizisi olmalıdır. Bu parametre zorunludur ve boş bırakılamaz. Örnek:
|
Evet |
Yok |
|
splitPk |
Parçalama anahtarı. Verileri parçalamak ve eşzamanlı işlemeyi etkinleştirerek veri senkronizasyonu verimliliğini artırmak için splitPk parametresi için bir sütun belirtebilirsiniz.
|
Hayır |
Yok |
|
splitFactor |
Parçalama faktörü. Bu parametre parça sayısını belirtir. Bir eşzamanlılık düzeyi yapılandırırsanız veriler concurrency × splitFactor parçaya bölünür. Örneğin, eşzamanlılık 5 ve Not
Bu parametreyi 1 ile 100 arasında bir değere ayarlamanızı öneririz. Aşırı büyük bir değer bellek yetersizliği (OOM) hatasına neden olabilir. |
Hayır |
5 |
|
where |
Filtreleme koşulu. Örneğin, yalnızca geçerli günün verilerini senkronize etmek için
|
Hayır |
Yok |
|
querySql (Gelişmiş mod, kod içermeyen arayüzde kullanılamaz) |
Bazı senaryolarda where parametresi filtreleme koşullarını tanımlamak için yetersiz kalabilir. Bu parametreyi özel bir SQL sorgusu tanımlamak için kullanabilirsiniz. Bu parametre yapılandırıldığında veri senkronizasyon sistemi column, table ve where parametrelerini yok sayar ve verileri filtrelemek için doğrudan bu parametrenin içeriğini kullanır. Örneğin, çoklu tablo birleştirmesinden sonra veri senkronize etmek için |
Hayır |
Yok |
Writer betik demosu
Aşağıdaki kod örnek bir betik yapılandırması sağlar. Parametreler hakkında daha fazla bilgi için parametre açıklaması bölümüne bakın.
{
"type": "job",
"steps": [
{
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"parameter": {
"postSql": [], // The SQL statement to be executed after the synchronization task is complete.
"datasource": "test_005", // The name of the data source.
"column": [ // The destination column names.
"id",
"name",
"age",
"sex",
"salary",
"interest"
],
"writeMode": "insert", // The write mode.
"batchSize": 256, // The number of records to submit in each batch.
"table": "PolarDB_person_copy", // The destination table name.
"preSql": [] // The SQL statement to be executed before the synchronization task starts.
},
"name": "Writer",
"category": "writer"
}
],
"version": "2.0", // The version number.
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
},
"setting": {
"errorLimit": { // The error tolerance.
"record": ""
},
"speed": {
"throttle":true, // If throttle is set to false, the mbps parameter does not take effect and throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":6, // The concurrency level.
"mbps":"12" // The throttling rate, in MB/s.
}
}
}
Writer betik parametreleri
-
Tüm parametreler
Parametre
Açıklama
Gerekli
Varsayılan
datasource
Veri kaynağının adı. Betik modunda bu parametrenin değeri, eklenen veri kaynağının adıyla aynı olmalıdır.
Evet
Yok
table
Veri senkronize etmek istediğiniz hedef tablonun adı.
Evet
Yok
writeMode
Yazma modu. Geçerli değerler:
-
insert: kod içermeyen arayüzdekiINSERT INTOifadesine karşılık gelir. -
update: kod içermeyen arayüzdekiON DUPLICATE KEY UPDATEifadesine karşılık gelir. -
replace: kod içermeyen arayüzdekiREPLACE INTOifadesine karşılık gelir.
Modlar ve örnekler hakkında daha fazla bilgi için aşağıdaki writeMode parametresinin ayrıntıları bölümüne bakın.
NotPolarDB for PostgreSQL için yalnızca
insertmodu desteklenir. Verileri güncellemek ve birincil anahtar çakışmalarını önlemek için toplu senkronizasyon görevini çalıştırmadan önce yinelenen verileri silin. Aşağıdaki yöntemler önerilir:-
Yöntem 1: preSql parametresinde (kod içermeyen arayüzdeki Pre-Import Statement öğesine karşılık gelir) hedef tabloyu temizlemek için bir
TRUNCATEifadesi yapılandırın. -
Yöntem 2: Veri senkronizasyonu sırasında birincil anahtar çakışmalarını önlemek için hedef tabloyu bir yukarı akış düğümünde işleyin.
Hayır
insert
column
Veri yazmak istediğiniz hedef sütunlar. Sütunları virgülle (,) ayırın. Örnek:
"column": ["id", "name", "age"]. Tüm sütunlara sırayla veri yazmak için yıldız işareti () kullanın. Örnek:"column": [""].Evet
Yok
preSql
Görev başlamadan önce yürütülecek bir veya daha fazla SQL ifadesi belirtir. Kod içermeyen arayüz tek bir ifadeyi desteklerken betik modu mevcut verileri temizlemek gibi birden çok ifadeyi destekler.
Hayır
Yok
postSql
Görev tamamlandıktan sonra yürütülecek bir veya daha fazla SQL ifadesi belirtir. Kod içermeyen arayüz tek bir ifadeyi desteklerken betik modu zaman damgası eklemek gibi birden çok ifadeyi destekler.
Hayır
Yok
batchSize
Her toplu işte gönderilecek kayıt sayısı. Daha büyük değerler PolarDB ile ağ etkileşimlerini azaltarak aktarım hızını artırabilir ancak aşırı büyük bir değer bellek yetersizliği (OOM) hatasına neden olabilir.
Hayır
1024
updateColumn
Birincil anahtar veya benzersiz dizin çakışması olduğunda güncellenecek sütunlar. Bu parametre yalnızca
writeModedeğeriupdateolarak ayarlandığında geçerlidir. Virgülle ayrılmış birden çok sütun belirtebilirsiniz. Örnek:"updateColumn": ["name", "age"].NotBu parametre yalnızca PolarDB for MySQL için desteklenir.
Hayır
Yok
-
-
writeMode parametresinin ayrıntıları
Karşılaştırma
insert(kod içermeyen arayüzdekiINSERT INTOifadesine karşılık gelir)update(kod içermeyen arayüzdekiON DUPLICATE KEY UPDATEifadesine karşılık gelir)replace(kod içermeyen arayüzdekiREPLACE INTOifadesine karşılık gelir)Çakışma işleme stratejisi
Birincil anahtar veya benzersiz dizin çakışması oluşursa çakışan satır hedef tabloya yazılmaz ve kirli veri olarak işlenir.
Birincil anahtar veya benzersiz dizin çakışması oluşmazsa bu mod INSERT INTO moduyla aynı şekilde çalışır. Çakışma oluşursa yeni satır yalnızca mevcut satırın belirtilen alanlarını günceller.
Birincil anahtar veya benzersiz dizin çakışması oluşmazsa bu mod INSERT INTO moduyla aynı şekilde çalışır. Çakışma oluşursa mevcut satır silinir ve yeni satır eklenir; bu da tüm alanlarının etkili bir şekilde değiştirilmesi anlamına gelir.
Veri örneği
-
Kaynak tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Orijinal hedef tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | | +----+---------+-----+ -
Görev çalıştırıldıktan sonra hedef tabloya bir satır yazılır ve bir satır kirli veri olarak kaydedilir.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | wangwu | | +----+---------+-----+
-
Senaryo 1: Görev yalnızca bazı sütunları senkronize edecek şekilde yapılandırılmıştır:
"column": ["id","name"]-
Kaynak tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Orijinal hedef tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | 3 | +----+---------+-----+ -
Görev çalıştırıldıktan sonra hedef tabloya iki satır yazılır ve kirli veri kaydedilmez.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | 3 | +----+---------+-----+
-
-
Senaryo 2: Görev tüm sütunları senkronize edecek şekilde yapılandırılmıştır:
"column": ["id","name","age"]-
Kaynak tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Orijinal hedef tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | 3 | +----+---------+-----+ -
Görev çalıştırıldıktan sonra hedef tabloya iki satır yazılır ve kirli veri kaydedilmez.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+
-
-
Kaynak tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+ -
Orijinal hedef tablo
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 2 | wangwu | 3 | +----+---------+-----+ -
Görev çalıştırıldıktan sonra hedef tabloya iki satır yazılır ve kirli veri kaydedilmez.
+----+---------+-----+ | id | name | age | +----+---------+-----+ | 1 | zhangsan| 1 | | 2 | lisi | | +----+---------+-----+
-