Tüm Ürünler
Search
Belge Merkezi

DataWorks:PolarDB veri kaynağı

Son Güncelleme:Oct 05, 2026

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.


Kategori


PolarDB veri türü


Tamsayı


INT, TINYINT, SMALLINT, MEDIUMINT ve BIGINT


Kayan nokta


FLOAT, DOUBLE ve DECIMAL


Dize


VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT ve LONGTEXT


Tarih ve saat


DATE, DATETIME, TIMESTAMP, TIME ve YEAR


Boole


BIT ve BOOL


İkili


TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB ve VARBINARY

Not
  • 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.


Kategori


PolarDB veri türü


Tamsayı


INT, TINYINT, SMALLINT, MEDIUMINT, BIGINT ve YEAR


Kayan nokta


FLOAT, DOUBLE ve DECIMAL


Dize


VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT ve LONGTEXT


Tarih ve saat


DATE, DATETIME, TIMESTAMP ve TIME


Boole


BOOL


İkili


TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB ve VARBINARY

Ö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.

  1. Hesap oluşturun.

    Daha fazla bilgi için bkz. Veritabanı hesabı oluşturma ve yönetme.

  2. İzin verin.

    Gerekli izinleri hesaba vermek için aşağıdaki komutu çalıştırın. Alternatif olarak SUPER iznini 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

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

Oracle, PolarDB veya MySQL'den veri senkronize etmek için çalışan gerçek zamanlı bir senkronizasyon görevinde neden tekrar tekrar hatalar raporlanır?

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 true olarak ayarlarsanız veriler ikincil veritabanından okunur. Bu parametreyi atlarsanız varsayılan değer false kullanılır ve veriler birincil veritabanından okunur.

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: ["*"].

  • Dışa aktarmak için bir sütun alt kümesi seçebilirsiniz.

  • Tablo şemasından bağımsız olarak dışa aktarılacak sütunların sırasını değiştirebilirsiniz.

  • Sabitler kullanabilirsiniz. SQL sözdizimini takip etmeniz gerekir. Örnek: ["id", "table","1","'mingya.wmy'","'null'", "to_char(a+1)","2,3","true"].

    • id: normal bir sütun adı.

    • table: aynı zamanda ayrılmış bir anahtar kelime olan bir sütun adı.

    • 1: bir tamsayı sabiti.

    • 'mingya.wmy': bir dize sabiti. Dize sabitinin tek tırnak içine alınması gerektiğini unutmayın.

    • 'null': bir dize sabiti.

    • to_char(a+1): bir dizenin uzunluğunu hesaplayan bir işlev.

    • 2,3: bir kayan noktalı sayı.

    • true: bir Boole değeri.

  • column parametresi zorunludur ve boş bırakılamaz. Senkronize etmek istediğiniz sütunları belirtmelisiniz.

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.

  • splitPk parametresinin değeri olarak tablonun birincil anahtarını kullanmanızı öneririz. Birincil anahtar genellikle eşit dağıtılır; bu da oluşturulan parçalarda veri sıcak noktalarını önler.

  • splitPk parametresi yalnızca tamsayı tabanlı veri parçalamayı destekler. Dize, kayan nokta, tarih ve diğer veri türleri desteklenmez. Desteklenmeyen bir veri türüne sahip bir sütun belirtirseniz veri parçalama devre dışı bırakılır ve veriler tek bir iş parçacığı kullanılarak senkronize edilir.

  • splitPk parametresini belirtmezseniz veya parametreyi null olarak ayarlarsanız veri senkronizasyonu için tek bir iş parçacığı kullanılır.

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 splitFactor 5 ise veriler 25 parçaya bölünür ve 5 eşzamanlı iş parçacığı tarafından işlenir.

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 where parametresini gmt_create>$bizdate olarak ayarlayın.

  • where koşulu, artımlı senkronizasyonu verimli bir şekilde gerçekleştirmenize olanak tanır. Bir where yan tümcesi belirtmezseniz tüm veriler senkronize edilir.

  • WHERE yan tümcesinin kısıtlamalarına uymadığından LIMIT 10 ifadesini where koşulu olarak belirtmemenizi öneririz.

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 select a,b from table_a join table_b on table_a.id = table_b.id ifadesini kullanın. querySql yapılandırdığınızda PolarDB Reader column, table ve where parametrelerini doğrudan yok sayar. querySql parametresi table, column, where ve splitPk parametrelerinden daha yüksek önceliğe sahiptir. datasource, kullanıcı adı ve parola gibi bilgileri ayrıştırmak için kullanılır.

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üzdeki INSERT INTO ifadesine karşılık gelir.

    • update: kod içermeyen arayüzdeki ON DUPLICATE KEY UPDATE ifadesine karşılık gelir.

    • replace: kod içermeyen arayüzdeki REPLACE INTO ifadesine 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.

    Not

    PolarDB for PostgreSQL için yalnızca insert modu 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 TRUNCATE ifadesi 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 writeMode değeri update olarak ayarlandığında geçerlidir. Virgülle ayrılmış birden çok sütun belirtebilirsiniz. Örnek: "updateColumn": ["name", "age"].

    Not

    Bu 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üzdeki INSERT INTO ifadesine karşılık gelir)

    update (kod içermeyen arayüzdeki ON DUPLICATE KEY UPDATE ifadesine karşılık gelir)

    replace (kod içermeyen arayüzdeki REPLACE INTO ifadesine 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    |     |
      +----+---------+-----+