Tüm Ürünler
Search
Belge Merkezi

DataWorks:MySQL veri kaynağı

Son Güncelleme:Oct 05, 2026

MySQL veri kaynağı, Veri Entegrasyonu aracılığıyla MySQL veritabanlarıyla veri senkronize etmek için çift yönlü okuma ve yazma kanalları sağlar.

Desteklenen MySQL sürümleri

  • Çevrimdışı okuma ve yazma:

    MySQL 5.5.x, 5.6.x, 5.7.x ve 8.0.x sürümlerini destekler. Amazon RDS for MySQL, Azure Database for MySQL ve Amazon Aurora MySQL ile uyumludur.

    Çevrimdışı senkronizasyon görünümlerden (views) veri okuyabilir.

  • Gerçek zamanlı okuma:

    Veri Entegrasyonu, MySQL'den veri okumak için gerçek zamanlı abonelik kullanır. MySQL 5.5.x, 5.6.x, 5.7.x ve 8.0.x sürümlerinin gerçek zamanlı senkronizasyonunu destekler ancak işlevsel dizin gibi yeni MySQL 8.0 özelliklerini desteklemez. Bu özellik ayrıca Amazon RDS for MySQL, Azure Database for MySQL ve Amazon Aurora MySQL ile de uyumludur.

    Önemli

    DRDS'den veri senkronize etmeniz gerekiyorsa, bunu MySQL veri kaynağı olarak yapılandırmayın. Bunun yerine doğrudan DRDS veri kaynağı olarak yapılandırın. Talimatlar için bkz. DRDS veri kaynağı yapılandırma.

Sınırlamalar

Gerçek zamanlı senkronizasyon

  • Sürümü 5.6.x'ten eski olan MySQL salt okunur örneklerinden veri senkronize edemezsiniz.

  • İşlevsel dizinler içeren tabloların senkronizasyonu desteklenmez.

  • XA ROLLBACK işlemi desteklenmez.

    XA PREPARE durumunda olan işlemler için gerçek zamanlı senkronizasyon verileri hedefe yazar. Bir XA ROLLBACK komutu verilirse, gerçek zamanlı senkronizasyon hazırlanan verileri geri almaz. Bu senaryoyu yönetmek için tabloyu gerçek zamanlı senkronizasyon görevinden manuel olarak kaldırıp yeniden ekleyerek senkronizasyonu tekrar başlatmanız gerekir.

  • MySQL sunucusunun ikili günlük (binary log) biçimi ROW olarak ayarlanmalıdır.

  • Gerçek zamanlı senkronizasyon, ilişkili tablolardaki basamaklı silme (cascading delete) işlemlerini senkronize etmez.

  • Amazon Aurora MySQL veritabanları için birincil/yazar örneğinize bağlanmanız gerekir. Aurora MySQL salt okunur çoğaltmalarında Binlog özelliğini etkinleştiremezsiniz ve gerçek zamanlı senkronizasyon görevleri artımlı güncellemeler için Binlog gerektirir.

  • MySQL tablolarındaki çevrimiçi DDL değişiklikleri için gerçek zamanlı senkronizasyon, yalnızca Veri Yönetim Hizmeti (DMS) aracılığıyla sütun ekleme (Add Column) işlemini destekler.

  • MySQL'den saklı yordamların (stored procedures) okunması desteklenmez.

Çevrimdışı senkronizasyon

  • Parçalanmış bir veritabanından birden çok tabloyu senkronize etmek için MySQL Reader eklentisini kullandığınızda, tablo bölünmesini etkinleştirmek amacıyla eşzamanlılığı tablo sayısından büyük bir değere ayarlamanız gerekir. Aksi takdirde sistem her tablo için ayrı bir görev oluşturur.

  • MySQL'den saklı yordamların (stored procedures) okunması desteklenmez.

Desteklenen veri türleri

Her sürümdeki MySQL veri türlerinin tam listesi için resmi MySQL belgelerine bakın. Aşağıdaki tabloda, MySQL 8.0.x örnek alınarak ana veri türlerinin destek durumu listelenmiştir.


Tür


Çevrimdışı okuma (MySQL Reader)


Çevrimdışı yazma (MySQL Writer)


Gerçek zamanlı okuma


Gerçek zamanlı yazma


TINYINT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


SMALLINT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


INTEGER


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


BIGINT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


FLOAT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


DOUBLE


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


DECIMAL/NUMERIC


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


REAL


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


VARCHAR


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


JSON


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


TEXT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


MEDIUMTEXT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


LONGTEXT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


VARBINARY


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


BINARY


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


TINYBLOB


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


MEDIUMBLOB


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


LONGBLOB


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


ENUM


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


SET


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


BOOLEAN


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


BIT


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


DATE


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


DATETIME


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


TIMESTAMP


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


TIME


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


YEAR


Destekleniyor


Destekleniyor


Destekleniyor


Destekleniyor


LINESTRING


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


POLYGON


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


MULTIPOINT


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


MULTILINESTRING


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


MULTIPOLYGON


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


GEOMETRYCOLLECTION


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor


Desteklenmiyor

Not

Veriler bir MySQL DATE sütununda depolandığında, MySQL tarih değerini otomatik olarak yyyy-aa-gg biçimine normalize eder. Örneğin, yyyyaagg biçimindeki 20260423 kaynak tarih değeri 2026-04-23'e dönüştürülür. Bu, yerleşik bir MySQL mekanizmasıdır ve DataWorks senkronizasyon görevi yapılandırmalarına bağlı değildir. Orijinal biçimi korumanız gerekiyorsa, hedef tablodaki alan türünü VARCHAR olarak değiştirin.

Önkoşullar

Veri senkronizasyon görevlerinin doğru çalışmasını sağlamak için MySQL'i DataWorks'te veri kaynağı olarak eklemeden önce MySQL ortamınızı hazırlayın.

Aşağıdaki önkoşulları tamamlayın.

MySQL sürümünü doğrulayın

Veri Entegrasyonu yalnızca belirli MySQL sürümlerini destekler. Daha fazla bilgi için bkz. Desteklenen MySQL sürümleri bölümü. MySQL sürümünüzü aşağıdaki komutu çalıştırarak kontrol edin:

SELECT version();

Hesap izinlerini yapılandırın

DataWorks veri kaynağı erişimi için ayrı bir MySQL hesabı oluşturmanızı öneririz.

  1. İsteğe bağlı: Bir hesap oluşturun.

    Ayrıntılı talimatlar için bkz. MySQL hesabı oluşturma.

  2. İzinleri verin.

    • Toplu iş

      Toplu senkronizasyon senaryolarında:

      • MySQL'den veri okumak için hesabın, senkronize etmek istediğiniz tablolar üzerinde okuma (SELECT) iznine sahip olması gerekir.

      • MySQL'e veri yazmak için hesabın, senkronize etmek istediğiniz tablolar üzerinde yazma (INSERT, DELETE ve UPDATE) izinlerine sahip olması gerekir.

      Not

      Senkronizasyon için MySQL'den yalnızca veri okumanız ve veriyi geri yazmanız gerekmiyorsa hesaba yalnızca SELECT izni vermeniz yeterlidir. Salt okunur senkronizasyon için INSERT, DELETE ve UPDATE izinleri gerekli değildir.

    • Gerçek zamanlı

      Gerçek zamanlı senkronizasyon senaryolarında hesabın veritabanı üzerinde SELECT, REPLICATION SLAVE ve REPLICATION CLIENT izinlerine sahip olması gerekir.

    Gerekli izinleri vermek için aşağıdaki komutları çalıştırabilirsiniz. Alternatif olarak hesaba SUPER izni verebilirsiniz. Aşağıdaki komutta 'sync_account' ifadesini oluşturduğunuz hesabın adıyla değiştirin.

    -- Optional: Create a synchronization account that can connect from any host ('%').
    -- CREATE USER 'sync_account'@'%' IDENTIFIED BY 'your_password'; 
    -- Grant the required permissions to the synchronization account.
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'sync_account'@'%';

    *.* sözdizimi, tüm veritabanlarındaki tüm tablolar üzerindeki izinleri verir. Belirli bir veritabanındaki belirli bir tablo üzerindeki izinleri de verebilirsiniz. Örneğin, test veritabanındaki user tablosu üzerindeki izinleri vermek için aşağıdaki komutu çalıştırın: GRANT SELECT, REPLICATION CLIENT ON test.user TO 'sync_account'@'%';.

    Not

    REPLICATION SLAVE izni genel bir izindir ve belirli bir veritabanı veya tablo için verilemez.

MySQL binlog'u etkinleştirin (yalnızca gerçek zamanlı senkronizasyon için)

Data Integration, MySQL binlog'larına abone olarak gerçek zamanlı artımlı veri senkronizasyonu gerçekleştirir. DataWorks'te bir senkronizasyon görevini yapılandırmadan önce MySQL binlog'unu etkinleştirmeniz gerekir.

Önemli
  • Bir binlog kullanılıyorken veritabanı bunu silemez. Gerçek zamanlı bir senkronizasyon görevindeki yüksek gecikme süresi, binlog silmeyi geciktirebilir ve bu durum disk alanının tükenmesine neden olabilir. Göreviniz için gecikme süresi uyarıları yapılandırmanızı ve veritabanı disk alanını izlemenizi öneririz.

  • Binlog'ları en az 72 saat boyunca saklayın. Bir görev başarısız olursa ve binlog'lar artık kullanılabilir değilse, denetim noktasını arızadan önceki bir konuma sıfırlayamazsınız; bu durum veri kaybına neden olabilir. Bu durumda verileri doldurmak için toplu iş senkronizasyonunu kullanmanız gerekir.

  1. Binlog'un etkin olup olmadığını kontrol edin.

    • Binlog'un etkin olup olmadığını kontrol etmek için aşağıdaki ifadeyi çalıştırın.

      SHOW variables LIKE "log_bin";

      Dönen değer ON ise binlog etkindir.

    • Çoğaltma veritabanındaki binlog durumunu kontrol etmek için aşağıdaki ifadeyi çalıştırın.

      SHOW variables LIKE "log_slave_updates";

      Dönen değer ON ise çoğaltma veritabanında binlog etkindir.

    Dönen değer beklendiği gibi değilse:

  2. Binlog biçimini kontrol edin.

    Binlog biçimini kontrol etmek için aşağıdaki ifadeyi çalıştırın.

    SHOW variables LIKE "binlog_format";

    Olası dönen değerler:

    • ROW dönüş değeri, etkin binlog biçiminin ROW olduğunu gösterir.

    • STATEMENT: Binlog biçimi STATEMENT şeklindedir.

    • MIXED: Binlog biçimi MIXED şeklindedir.

    Önemli

    DataWorks gerçek zamanlı senkronizasyonu yalnızca ROW biçimini destekler. Dönen değer ROW değilse binlog_format ayarını değiştirmeniz gerekir.

  3. Tam satır görüntülerinin günlüğe kaydedilip kaydedilmediğini kontrol edin.

    Satır görüntüsü ayarını kontrol etmek için aşağıdaki ifadeyi çalıştırın.

    SHOW variables LIKE "binlog_row_image";

    Olası dönen değerler:

    • FULL: Tam satır görüntüleri günlüğe kaydedilir.

    • MINIMAL: Tam satır görüntüleri yerine minimal satır görüntüleri günlüğe kaydedilir.

    Önemli

    DataWorks gerçek zamanlı senkronizasyonu, binlog için tam satır görüntüleri etkinleştirilmiş MySQL sunucularını yalnızca destekler. Dönen değer FULL değilse binlog_row_image ayarını değiştirmeniz gerekir.

OSS binlog okuma izinlerini yapılandırın

Bir MySQL veri kaynağı eklerken Configuration Mode seçeneğini ApsaraDB for RDS olarak ayarlarsanız ve RDS for MySQL örneğiniz DataWorks çalışma alanınızla aynı bölgede bulunuyorsa Read binlogs from OSS seçeneğini etkinleştirebilirsiniz. Bu durumda DataWorks, RDS for MySQL binlog'larına doğrudan erişim başarısız olduğunda binlog'ları OSS'den alır ve gerçek zamanlı senkronizasyon görevlerinin kesintiye uğramasını önler.

OSS binlog access identity için bir Alibaba Cloud RAM User veya bir Alibaba Cloud RAM Role kullanıyorsanız gerekli izinleri de vermeniz gerekir.

  • RAM kullanıcısı

    1. Resource Access Management (RAM) konsolunda oturum açın, Users sayfasına gidin ve hedef RAM kullanıcısını bulun.

    2. Operations sütununda Attach Policy seçeneğine tıklayın.

    3. Aşağıdaki parametreleri yapılandırın ve OK seçeneğine tıklayın.

      • Scope: Alibaba Cloud account

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

  • RAM rolü

    1. Resource Access Management (RAM) konsolunda oturum açın ve bir RAM rolü oluşturun. Daha fazla bilgi için bkz. Güvenilen bir Alibaba Cloud hesabı için RAM rolü oluşturma.

      Anahtar parametreler:

      • Select trusted entity: Alibaba Cloud account

      • Select account: Other Alibaba Cloud account. DataWorks çalışma alanına sahip olan Alibaba Cloud hesabının ID'sini girin.

      • Role name: Özel bir ad girin.

    2. RAM rolüne izinler verin. Daha fazla bilgi için bkz. RAM rolüne izin verme.

      Anahtar parametreler:

      • Permission Policy: system policy

      • Policy Name: AliyunDataWorksAccessingRdsOSSBinlogPolicy

    3. RAM rolünün güven ilkesini değiştirin. Daha fazla bilgi için bkz. RAM rolünün güven ilkesini düzenleme.

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "di.dataworks.aliyuncs.com",
                          "dataworks.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }

Veri kaynağı ekleme

Alibaba Cloud örnek modu

MySQL veritabanınız bir Alibaba Cloud RDS örneğinde çalışıyorsa, veri kaynağını Alibaba Cloud örnek modunda oluşturmanızı öneririz. Parametreleri aşağıdaki gibi yapılandırın:

Parametre

Açıklama

Data Source Name

Veri kaynağı adı, çalışma alanı içinde benzersiz olmalıdır. İş ve ortamı net bir şekilde tanımlayan bir ad kullanmanızı öneririz; örneğin, rds_mysql_order_dev.

Connection Mode

Alibaba Cloud örnek modunu seçin. Bağlantı modları hakkında daha fazla bilgi için bkz. Senaryo 1: Örnek Modu (Geçerli Cloud Hesabı) ve Senaryo 2: Örnek Modu (Diğer Cloud Hesabı).

Alibaba Cloud Account

Örneğin ait olduğu cloud hesabını seçin. Another Alibaba Cloud Account seçeneğini belirlerseniz, hesaplar arası izinleri yapılandırmanız gerekir. Daha fazla bilgi için bkz. Hesaplar Arası Yetkilendirme (RDS, Hive veya Kafka).

Farklı bir cloud hesabı seçerseniz aşağıdaki bilgileri sağlamanız gerekir:

  • Ana hesap kimliği: Örneğe sahip olan ana hesabın ID'si.

  • RAM rolü adı: Diğer cloud hesabı tarafından sağlanan RAM rolü. Bu rolün, hedef örneğe erişmek için gerekli izinlere sahip olması gerekir.

Region

Örneğin bulunduğu bölge.

Instance

Bağlanılacak örneğin adını seçin.

Standby library settings

RDS örneğinizde bir salt okunur örnek (bekleme örneği) varsa, görevleri bu örnekten veri okuyacak şekilde yapılandırabilirsiniz. Bu sayede okuma işlemleri birincil örneğin performansını etkilemez.

Instance Address

Doğru örneği seçtikten sonra, genel/özel adres, VPC ve vSwitch gibi bilgileri görüntülemek için Get Latest Address düğmesini tıklayın.

Database

Veri kaynağının bağlandığı veritabanının adı. Belirtilen kullanıcının bu veritabanına erişmek için gerekli izinlere sahip olduğundan emin olun.

Corresponding access identity

DataWorks'ün MySQL'e erişmek için kullandığı kimlik bilgisi kaynağını seçin. Aşağıdaki seçenekler desteklenir:

  • Kullanıcı adı ve parola: MySQL veritabanı için kullanıcı adı ve parola girin. DataWorks bunları simetrik şifreleme ile saklar. Bir RDS örneği kullanıyorsanız, bunları örneğin account management bölümünde oluşturup yönetebilirsiniz.

  • Key Management Service: Alibaba Cloud Key Management Service (KMS) üzerinde barındırılan bir genel gizli diziyi kullanın. Önce KMS'de bir genel gizli dizi oluşturmanız gerekir. Daha fazla bilgi için bkz. Genel gizli dizileri yönetme ve kullanma. Ardından, veri kaynağında KMS genel gizli dizisinin bulunduğu Kms Region değerini seçin ve hedef genel gizli diziyi KMS List listesinden belirleyin. Bir KMS genel gizli dizisinin içeriği aşağıdaki iki JSON biçimini destekler:

    { "username": "biz_rw", "password": "S3cr3t!" }
    { "AccessKeyId": "LTAI...", "AccessKeySecret": "..." }
    Not

    Bir KMS genel gizli dizisinin içeriği değiştirildikten sonra, DataWorks gizli diziyi en fazla 5 dakika önbelleğe alır. Yeni gizli dizi en geç 5 dakika içinde etkin hale gelir.

OSS binlog okumayı destekle

Etkinleştirildiğinde, DataWorks RDS binlog'larına erişilemediğinde OSS'den binlog almaya çalışır. Bu durum, gerçek zamanlı senkronizasyon görevlerinin kesintiye uğramasını önler. Daha fazla bilgi için bkz. OSS binlog okuma için yetkilendirmeyi yapılandırma. Yetkilendirme yapılandırmanıza göre OSS binlog access identity değerini ayarlayın.

Authentication Method

Kimlik doğrulama yok veya SSL kimlik doğrulaması seçeneklerinden birini seçin. SSL kimlik doğrulamasını seçerseniz, bunun örnekte de etkinleştirildiğinden emin olun. Sertifika dosyasını hazırlayın ve Authentication File Management bölümüne yükleyin.

Version

MySQL sunucusunda oturum açın ve sürüm numarasını kontrol etmek için SELECT VERSION() sorgusunu çalıştırın.

Bağlantı dizesi modu

Daha fazla esneklik sağlamak amacıyla bağlantı dizesi modunu kullanarak da bir veri kaynağı oluşturabilirsiniz. Parametreleri aşağıdaki gibi yapılandırın:

Parametre

Açıklama

Data Source Name

Veri kaynağı adı, çalışma alanı içinde benzersiz olmalıdır. İş ve ortamı net bir şekilde tanımlayan bir ad kullanmanızı öneririz; örneğin, rds_mysql_order_dev.

Connection Mode

User-created Data Store with Public IP Addresses seçeneğini belirleyin. Bu modda, veritabanına bağlanmak için bir JDBC URL'si kullanılır.

Bağlantı dizesi ön izlemesi

Bağlantı adresini ve veritabanı adını girdikten sonra, DataWorks otomatik olarak bir JDBC URL ön izlemesi oluşturur.

Connection Address

Ana bilgisayar adresi: Veritabanı sunucusunun gerçek erişim adresini girin. Adresin, DataWorks kaynak grubundan ağ üzerinden erişilebilir olduğundan emin olun. Yaygın senaryolar şunlardır:

  • Aynı VPC içinde erişim: Dahili (özel) IP adresini girin.

  • İnternet üzerinden veya NAT ağ geçidi aracılığıyla erişim: Genel IP adresini veya NAT IP adreslerini girin.

Veritabanı bir Alibaba Cloud RDS örneği ise, adresi örnek ayrıntılarındaki Database Connection sayfasında bulabilirsiniz.

Bağlantı noktası numarası: Veritabanı bağlantı noktası. Varsayılan değer 3306'dır.

Database Name

Veri kaynağının bağlandığı veritabanının adı. Belirtilen kullanıcının bu veritabanına erişmek için gerekli izinlere sahip olduğundan emin olun.

Corresponding access identity

DataWorks'ün MySQL'e erişmek için kullandığı kimlik bilgisi kaynağını seçin. Aşağıdaki seçenekler desteklenir:

  • Kullanıcı adı ve parola: MySQL veritabanı için kullanıcı adı ve parola girin. DataWorks bunları simetrik şifreleme ile saklar. Bir RDS örneği kullanıyorsanız, bunları örneğin account management bölümünde oluşturup yönetebilirsiniz.

  • Key Management Service: Alibaba Cloud Key Management Service (KMS) üzerinde barındırılan bir genel gizli diziyi kullanın. Önce KMS'de bir genel gizli dizi oluşturmanız gerekir. Daha fazla bilgi için bkz. Genel gizli dizileri yönetme ve kullanma. Ardından, veri kaynağında KMS genel gizli dizisinin bulunduğu Kms Region değerini seçin ve hedef genel gizli diziyi KMS List listesinden belirleyin. Bir KMS genel gizli dizisinin içeriği aşağıdaki iki JSON biçimini destekler:

    { "username": "biz_rw", "password": "S3cr3t!" }
    { "AccessKeyId": "LTAI...", "AccessKeySecret": "..." }
    Not

    Bir KMS genel gizli dizisinin içeriği değiştirildikten sonra, DataWorks gizli diziyi en fazla 5 dakika önbelleğe alır. Yeni gizli dizi en geç 5 dakika içinde etkin hale gelir.

Version

MySQL sunucusunda oturum açın ve sürüm numarasını kontrol etmek için SELECT VERSION() sorgusunu çalıştırın.

Authentication Method

Kimlik doğrulama yok veya SSL kimlik doğrulaması seçeneklerinden birini seçin. SSL kimlik doğrulamasını seçerseniz, bunun örnekte de etkinleştirildiğinden emin olun. Sertifika dosyasını hazırlayın ve Authentication File Management bölümüne yükleyin.

Advanced Parameters

Parametre: Açılır listeden desteklenen bir parametre seçin; örneğin, connectTimeout.

Değer: Seçilen parametre için uygun bir değer girin; örneğin, 3000.

Bunun üzerine JDBC URL'si otomatik olarak şu şekilde güncellenir: jdbc:mysql://192.168.90.28:3306/test?connectTimeout=3000.

Örneğin, saat dilimiyle ilgili hatalarla karşılaşırsanız veya bir saat dilimi belirtmeniz gerekirse Add Property düğmesini tıklayın, parametre olarak serverTimezone değerini seçin ve Asia/Shanghai gibi hedef saat dilimini girin. Veri kaynağı yapılandırmasını kaydedin ve görevi yeniden çalıştırın.

Önemli

DataWorks kaynak grubunun veritabanına bağlanabildiğinden emin olun. Aksi takdirde, sonraki görevler başarısız olur. Ağ yapılandırması, veritabanı ortamına ve veri kaynağı bağlantı moduna bağlıdır. Daha fazla bilgi için bkz. Bağlantıyı test etme.

MySQL senkronizasyon iş akışı

Bir senkronizasyon görevini yapılandırmak için giriş noktası ve yordam hakkında bilgi edinmek üzere aşağıdaki yapılandırma kılavuzlarına bakın.

Tek tablo çevrimdışı senkronizasyonu yapılandırma

Tek tablo gerçek zamanlı senkronizasyonu yapılandırma

Yordam için Gerçek zamanlı senkronizasyon görevi yapılandırması (Eski) konusuna bakın.

Tam veritabanı senkronizasyonu yapılandırma

Yordam için Tam veritabanı gerçek zamanlı senkronizasyon görevi yapılandırması konusuna bakın.

SSS

Diğer yaygın Data Integration sorunları için bkz. Data Integration SSS.

Ek: MySQL komut dosyası örnekleri 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, komut dosyasındaki ilgili parametreleri birleşik komut dosyası biçimi 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üzenleyiciyi kullanarak bir toplu senkronizasyon görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklar.

Okuyucu komut dosyası örnekleri

Aşağıdaki örnekler, tek bir veritabanındaki tek bir tablo ve parçalı tablolar için yapılandırmaları gösterir.

Not

Aşağıdaki JSON örneklerindeki yorumlar yalnızca gösterim amaçlıdır. Komut dosyasını çalıştırmadan önce yorumları kaldırın.

  • Tek bir veritabanındaki tek tablo

    {
      "type": "job",
      "version": "2.0",// The version number.
      "steps": [
        {
          "stepType": "mysql",// The connector name.
          "parameter": {
            "column": [// The columns to read.
              "id"
            ],
            "connection": [
              {
                "querySql": [
                  "select a,b from join1 c join join2 d on c.id = d.id;"
                ],
                "datasource": ""// The data source name.
              }
            ],
            "where": "",// The filter condition.
            "splitPk": "",// The shard key.
            "encoding": "UTF-8"// The encoding format.
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "stream",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        }
      ],
      "setting": {
        "errorLimit": {
          "record": "0"// The maximum number of allowed dirty data records.
        },
        "speed": {
          "throttle": true,// Set to true to enable rate limiting. If false, rate limiting is disabled and the 'mbps' parameter is ignored.
          "concurrent": 1,// The number of concurrent threads.
          "mbps": "12"// The rate limit. 1 mbps = 1 MB/s.
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • Parçalı tablolar

    Not

    MySQL Reader, şeması aynı olan birden çok MySQL tablosundan veri okuyabilir. Bu bağlamda "parçalı tablolar", birden çok kaynak tablosundaki verilerin tek bir hedef tabloya yazıldığı bir senaryoyu ifade eder. Veritabanı düzeyinde parçalı tabloları senkronize etmek için Data Integration'da bir görev oluşturun ve tam veritabanı parçalama özelliğini seçin.

    {
      "type": "job",
      "version": "2.0",
      "steps": [
        {
          "stepType": "mysql",
          "parameter": {
            "indexes": [
              {
                "type": "unique",
                "column": [
                  "id"
                ]
              }
            ],
            "envType": 0,
            "useSpecialSecret": false,
            "column": [
              "id",
              "buyer_name",
              "seller_name",
              "item_id",
              "city",
              "zone"
            ],
            "tableComment": "Test order table",
            "connection": [
              {
                "datasource": "rds_dataservice",
                "table": [
                  "rds_table"
                ]
              },
              {
                "datasource": "rds_workshop_log",
                "table": [
                  "rds_table"
                ]
              }
            ],
            "where": "",
            "splitPk": "id",
            "encoding": "UTF-8"
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "odps",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        },
        {
          "name": "Processor",
          "stepType": null,
          "category": "processor",
          "copies": 1,
          "parameter": {
            "nodes": [],
            "edges": [],
            "groups": [],
            "version": "2.0"
          }
        }
      ],
      "setting": {
        "executeMode": null,
        "errorLimit": {
          "record": ""
        },
        "speed": {
          "concurrent": 2,
          "throttle": false
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }

Okuyucu parametreleri

Parameter

Description

Required

Default

datasource

Okunacak veri kaynağının adıdır. Bu ad, kod düzenleyicide yapılandırılmış bir veri kaynağıyla eşleşmelidir.

Evet

Yok

table

Senkronize edilecek kaynak tablonun adıdır. Bir Data Integration görevi yalnızca bir mantıksal tablodan veri okuyabilir.

Aşağıdaki örnekler, table parametresi için gelişmiş desenlerin nasıl kullanılacağını göstermektedir:

  • Bir aralık belirterek parçalanmış (sharded) tablolardan okuma yapabilirsiniz. Örneğin, 'table_[0-99]' ifadesi 'table_0', 'table_1', 'table_2' ve devamında 'table_99' tablolarından okur.

  • Tablo adlarınızdaki sayısal son ekler tutarlı bir uzunluğa sahipse (örneğin, 'table_000', 'table_001' ve 'table_002' ile 'table_999' arasında), bunu '"table":["table_00[0-9]","table_0[10-99]","table_[100-999]"]' şeklinde yapılandırabilirsiniz.

Not

Görev, desene uyan tüm tablolardan column parametresinde belirtilen sütunları okur. Eşleşen bir tablo veya belirtilen bir sütun mevcut değilse görev başarısız olur.

Evet

Yok

column

Kaynak tablodan okunacak sütunları belirten bir JSON dizisidir. Tüm sütunları seçmek için ["*"] kullanın.

  • Sütun budama: Sütunların bir alt kümesini dışa aktarabilirsiniz.

  • Sütun yeniden sıralama: Sütunları tablo şemasından farklı bir sırada dışa aktarabilirsiniz.

  • Sabit değerler: Sabit değerler yapılandırabilirsiniz. Değerler MySQL SQL sözdizimini takip etmelidir. Örnek: ["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3",true].

    • id normal bir sütun adıdır.

    • table ayrılmış anahtar kelime olan bir sütun adıdır.

    • 1 bir tamsayı sabitidir.

    • 'mingya.wmy' bir dize sabitidir. Tek tırnak içine alınmalıdır.

    • null değerlerinin işlenmesi:

      • " " tek bir boşluk içeren bir dizeyi temsil eder.

      • null bir NULL değerini temsil eder.

      • 'null' "null" değişmez dizesini temsil eder.

    • to_char(a+1) bir dize dönüştürme işlevidir.

    • 2.3 bir kayan noktalı sayıdır.

    • true bir boolean değeridir.

  • column parametresindeki sütunları açıkça belirtmeniz gerekir. Boş bırakılamaz.

Evet

Yok

splitPk

MySQL Reader veri çıkardığında, splitPk parametresinin belirtilmesi belirtilen alanda veri parçalama (sharding) özelliğini etkinleştirir. Data Integration ardından senkronizasyon verimliliğini artırmak için eşzamanlı görevler başlatır.

  • En iyi performans için tablonun birincil anahtarını splitPk olarak kullanın.

  • Şu anda splitPk yalnızca tamsayı türleri için veri bölümlemeyi destekler. Dize, kayan nokta veya tarih gibi diğer türleri desteklemez. Desteklenmeyen bir veri türü belirtirseniz splitPk özelliği yok sayılır ve senkronizasyon için tek bir kanal kullanılır.

  • splitPk belirtilmezse veya değeri boşsa tablo tek bir kanal üzerinden senkronize edilir.

Hayır

Yok

splitFactor

Parçalama faktörüdür. Bu parametre kaç parça oluşturulacağını kontrol eder. Eşzamanlılık etkinleştirilirse veriler concurrency × splitFactor sayıda parçaya bölünür. Örneğin, eşzamanlılık 5 ve splitFactor 5 ise veriler 5 eşzamanlı iş parçacığı tarafından işlenen 25 parçaya bölünür.

Not

Önerilen aralık: 1 ila 100. Çok büyük bir değer bellek yetersizliği (OOM) hatasına neden olabilir.

Hayır

5

where

Bir filtre koşuludur. Tipik bir senaryoda, yalnızca günün verilerini senkronize etmek için where koşulunu gmt_create > $bizdate olarak ayarlayabilirsiniz.

  • where yan tümcesi, artımlı senkronizasyonu etkili bir şekilde gerçekleştirmenize olanak tanır. where deyimi belirtilmezse (where için anahtar veya değer sağlanmaması dahil) veri senkronizasyonu tam veri senkronizasyonu olarak değerlendirilir.

  • LIMIT 10 gibi yan tümceler MySQL WHERE yan tümcesinde geçerli olmadığından bunları kullanmayın.

Hayır

Yok

querySql (Yalnızca kod düzenleyicide kullanılabilir; kodsuz UI'da desteklenmez.)

Bazı kullanım durumlarında where parametresi gerekli filtreleme için yetersiz kalır. Özel bir SQL sorgusu tanımlamak için bu parametreyi kullanın. Yapılandırıldığında sistem tables, columns ve splitPk parametrelerini yok sayar ve doğrudan bu sorguyu kullanır. Örneğin, çoklu tablo birleştirmesinden (join) veri senkronize etmek için select a,b from table_a join table_b on table_a.id = table_b.id kullanın. querySql parametresi table, column, where ve splitPk parametrelerine göre önceliklidir. datasource kullanıcı adı ve şifre gibi bilgileri ayrıştırmak için kullanılır.

Not

querySql parametresi büyük/küçük harfe duyarlıdır. Örneğin, querysql (küçük harfli) etkisini göstermez.

Hayır

Yok

useSpecialSecret

Birden fazla kaynak veri kaynağı yapılandırıldığında her bir veri kaynağının şifresinin kullanılıp kullanılmayacağını belirtir. Geçerli değerler:

  • true

  • false

Birden fazla kaynak veri kaynağının farklı kullanıcı adları ve şifreleri varsa, her bir veri kaynağının kimlik bilgilerini kullanmak için bu parametreyi true olarak ayarlayın.

Hayır

false

Writer betiği örneği

{
  "type": "job",
  "version": "2.0",// The version number.
  "steps": [
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "mysql",// The connector name.
      "parameter": {
        "postSql": [],// The SQL statements to run after the task.
        "datasource": "",// The data source name.
        "column": [// The columns to write to.
          "id",
          "value"
        ],
        "writeMode": "insert",// The write mode. Valid values: insert, replace, and update.
        "batchSize": 1024,// The number of records per batch.
        "table": "",// The destination table name.
        "nullMode": "skipNull",// The policy for handling NULL values.
        "skipNullColumn": [// The columns for which to skip NULL values.
          "id",
          "value"
        ],
        "preSql": [
          "delete from XXX;"// The SQL statements to run before the task.
        ]
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {// The maximum number of allowed dirty data records.
      "record": "0"
    },
    "speed": {
      "throttle": true,// Set to true to enable rate limiting. If false, rate limiting is disabled and the 'mbps' parameter is ignored.
      "concurrent": 1,// The number of concurrent threads.
      "mbps": "12"// The rate limit in MB/s to prevent excessive I/O pressure on the databases. 1 mbps = 1 MB/s.
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Writer parametreleri

Parameter

Description

Required

Default

datasource

Hedef veri kaynağının adıdır. Bu ad, kod düzenleyicide yapılandırılmış bir veri kaynağıyla eşleşmelidir.

Evet

Yok

table

Hedef tablonun adıdır.

Evet

Yok

writeMode

Yazma modudur. Desteklenen seçenekler MySQL INSERT INTO, ON DUPLICATE KEY UPDATE ve REPLACE INTO deyimlerine karşılık gelir:

  • insert: Birincil anahtar veya benzersiz dizin çakışması oluşursa görev çakışan satırları yazmaz ve bunları kirli veri olarak kaydeder.

    Görevi betik modunda yapılandırıyorsanız writeMode değerini insert olarak ayarlayın.

  • on duplicate key update: Birincil anahtar veya benzersiz dizinle çakışma olmazsa deyim insert into ile aynı şekilde davranır. Çakışma oluşursa deyim belirtilen alanların değerlerini yeni satırdaki değerlerle günceller ve veriyi MySQL'e yazar.

    Görevi betik modunda yapılandırıyorsanız writeMode değerini update olarak ayarlayın.

  • replace into: Birincil anahtar veya benzersiz dizinle çakışma olmazsa insert into ile aynı şekilde davranır. Çakışma oluşursa önce orijinal satırı siler ardından yeni satırı ekler. Bu, yeni satırın orijinal satırın tüm alanlarını değiştirdiği anlamına gelir.

    Görevi betik modunda yapılandırıyorsanız writeMode değerini replace olarak ayarlayın.

Hayır

insert

nullMode

Kaynaktan gelen NULL değerlerin işlenme ilkesini belirtir. Geçerli değerler:

  • writeNull: Kaynak alanı NULL ise hedef alana NULL değeri yazılır.

  • skipNull: Kaynak alanı NULL ise hedef alan yazma işleminden atlanır ve veritabanının varsayılan değeri uygulanmasına izin verilir. Varsayılan bir değer tanımlanmamışsa sonuç genellikle NULL olur. Uygulanabilir sütunları skipNullColumn parametresinde belirtmeniz gerekir.

Önemli

skipNull olarak yapılandırıldığında görev, hedefteki varsayılan değerleri desteklemek için veri yazmaya yönelik SQL deyimlerini dinamik olarak oluşturur. Bu durum FLUSH işlemi sayısını artırır ve senkronizasyon hızını düşürür. En kötü durumda görev her veri kaydı için bir kez FLUSH işlemi gerçekleştirir.

Hayır

writeNull

skipNullColumn

nullMode değeri skipNull olarak ayarlandığında bu parametreyle belirtilen sütunlar zorla NULL yapılmaz. Bunun yerine varsa ilgili varsayılan değerler kullanılır.

Biçim: ["c1","c2",...]. c1 ve c2 gibi belirtilen sütunlar column parametresinde tanımlanan sütunların bir alt kümesi olmalıdır.

Hayır

Görev için yapılandırılan tüm sütunlar.

column

Yazılacak hedef sütunlardır; dize içeren bir JSON dizisi olarak belirtilir. Örnek: "column":["id","name","age"]. Tüm sütunlara şema sırasına göre yazmak için yıldız işareti () kullanın. Örnek: "column":[""].

Evet

Yok

preSql

Senkronizasyon görevi başlamadan önce yürütülecek bir veya daha fazla SQL deyimidir. Kodsuz UI yalnızca bir deyimi desteklerken kod düzenleyici birden çok deyimi destekler. Örneğin, bir tablodaki mevcut verileri temizleyebilirsiniz: TRUNCATE TABLE tablename.

Not

Birden fazla SQL deyimi için işlem (transaction) desteği yoktur.

Hayır

Yok

postSql

Senkronizasyon görevi tamamlandıktan sonra yürütülecek bir veya daha fazla SQL deyimidir. Kodsuz UI yalnızca bir deyimi desteklerken kod düzenleyici birden çok deyimi destekler. Örneğin, aşağıdaki deyimi kullanarak bir zaman damgası sütunu ekleyebilirsiniz: ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

Not

Birden fazla SQL deyimi için işlem (transaction) desteği yoktur.

Hayır

Yok

batchSize

Yazma başına düşen kayıt sayısıdır. Daha büyük değerler ağ gidiş-dönüşlerini azaltır ve aktarım hızını artırabilir ancak değerin çok yüksek ayarlanması bellek yetersizliği (OOM) hatasına neden olabilir.

Hayır

256

updateColumn

writeMode değeri update olarak ayarlandığında bu parametre birincil anahtar veya benzersiz dizin çakışması oluştuğunda hangi sütunların güncelleneceğini belirtir. Sütunları bir JSON dizisinde belirtin. Örnek: "updateColumn":["name","age"].

Hayır

Yok