Tüm Ürünler
Search
Belge Merkezi

Hologres:Hologres binlog verilerini Flink ile tüketin

Son Güncelleme:Oct 06, 2026

Bu konu, Realtime Compute for Apache Flink kullanarak Hologres binlog verilerinin gerçek zamanlı olarak nasıl tüketileceğini açıklar.

Kullanım notları

Hologres binlog verilerini tüketmeden önce aşağıdaki hususlara dikkat edin:

  • Binlog verilerini yalnızca Hologres V0.9 veya sonraki sürümlerinden tüketebilirsiniz. Motor izin listesini yalnızca Hologres V1.3.21 veya sonraki sürümleri için yapılandırabilirsiniz. Hologres V1.3.21'den önceki bir sürümü çalıştıran bir örnekte izin listesi etkinleştirirseniz binlog tüketimi başarısız olur. Örneğinizin sürümü gerekli olandan düşükse yardım almak için Hologres için çevrimiçi destek alın.

  • Hologres, satır yönelimli ve sütun yönelimli tablolar için tablo düzeyinde binlog özelliğini destekler. Hologres V1.1 sürümünden itibaren satır-sütun hibrit depolama tabloları da desteklenmektedir. Binlog özelliğini etkinleştirdikten sonra sütun yönelimli tabloların teorik olarak satır yönelimli tablolara göre daha yüksek ek yükü vardır. Bu nedenle sık veri güncellemelerinin olduğu senaryolar için binlog özelliğini satır yönelimli tablolarda etkinleştirmenizi öneririz.

  • Binlog desteği ve bu özelliğin nasıl etkinleştirilip yapılandırılacağı hakkında daha fazla bilgi için Hologres binloglarına abone olun konusuna bakın.

  • Hologres binlog verilerini tüketmeyi yalnızca Alibaba Cloud tarafından sağlanan Realtime Compute for Apache Flink destekler. HoloHub modunda Flink ile Hologres binlog verilerinin tüketilmesi yalnızca basit veri türlerini destekler. Flink VVR 6.0.3 sürümünden itibaren JDBC modunda Hologres binlog verilerini tüketebilirsiniz. JDBC modu HoloHub moduna kıyasla daha fazla veri türünü destekler. Daha fazla bilgi için Blink/Flink ve Hologres arasındaki veri türü eşlemeleri konusuna bakın. Bu mod ek izinler gerektirir. Ayrıntılar için İzinler bölümüne bakın.

  • Üst bölümlenmiş bir tablodan binlog verilerini tüketemezsiniz.

  • Hologres V2.0, HoloHub modunu sınırlı şekilde destekler. V2.1 sürümünden itibaren HoloHub modu kullanımdan kaldırılmış ve tamamen JDBC modu ile değiştirilmiştir. Hologres örneğinizi yükseltmeden önce mevcut HoloHub modunu kullanan Flink işlerinizi kontrol etmek, Flink VVR işlerinizi buna göre yükseltmek ve ardından Hologres örneğinizi yükseltmek için HoloHub modundan JDBC moduna geçiş yapın bölümüne bakın.

İzinler

  • HoloHub modunun aksine JDBC modu Realtime Compute for Apache Flink kullanarak Hologres binlog verilerini tüketirken özel Hologres hesaplarını destekler.

  • HoloHub modunda Hologres binlog verilerini tüketmek için Flink işinizin tabloda okuma ve yazma izinlerine sahip olması gerekir.

  • JDBC modunda Hologres binlog verilerini tüketmek için aşağıdaki ön koşullar geçerlidir. Daha fazla bilgi için JDBC kullanarak binlog verilerini tüketin konusuna bakın.

    1. hg_binlog uzantısı oluşturulmuştur. Bu uzantı Hologres V2.0 ve sonraki sürümlerde varsayılan olarak oluşturulur.

    2. Kullanıcı örneğin süper kullanıcısıdır veya hedef tabloda sahip izinlerine ve örnek için çoğaltma rolü izinlerine sahiptir.

Flink ile binlog verilerini tüketin

VVR 2.4 veya sonraki sürümlerini kullanan Realtime Compute for Apache Flink Hologres Connector kullanarak binlog verilerinin gerçek zamanlı tüketimini destekler. Aşağıdaki bölümlerde bu özelliğin nasıl kullanılacağı açıklanmaktadır.

CDC olmayan modda kaynak tablo DDL'si

Bu modda Kaynak tarafından tüketilen binlog verileri aşağı akış düğümlere normal Flink verisi olarak iletilir. Bu durum tüm verilerin Insert türünde veri olarak ele alındığı anlamına gelir ve iş gereksinimlerinize bağlı olarak belirli bir hg_binlog_event_type türündeki verileri nasıl işleyeceğinizi seçebilirsiniz. Bir Hologres tablosu için binlog etkinleştirildikten sonra Flink'te binlog'u gerçek zamanlı olarak tüketmek üzere aşağıdaki DDL'yi (CDC olmayan modda) bir kaynak tablo için kullanabilirsiniz.

create table test_message_src_binlog_table(
  hg_binlog_lsn BIGINT,
  hg_binlog_event_type BIGINT,
  hg_binlog_timestamp_us BIGINT,
  id INTEGER,
  title VARCHAR,
  body VARCHAR
) with (
  'connector'='hologres',
  'dbname'='<yourDbname>',
  'tablename'='<yourTablename>',
  'username'='<yourAccessID>',
  'password'='<yourAccessSecret>',
  'endpoint'='<yourEndpoint>',
  'binlog' = 'true',
  'binlogMaxRetryTimes' = '10',
  'binlogRetryIntervalMs' = '500',
  'binlogBatchReadSize' = '100'
);
  • Üç binlogxxx parametresi binlog sistem alanlarıdır. Adları ve türleri sabittir ve değiştirilemez.

  • Diğer alanlar kullanıcı tanımlı alanlarınıza karşılık gelir ve tamamı küçük harfle yazılmalıdır.

CDC modunda kaynak tablo DDL'si

Bu modda Kaynak binlog verilerini tüketir ve her satır için hg_binlog_event_type değerine göre doğru Flink RowKind türünü (INSERT, DELETE, UPDATE_BEFORE veya UPDATE_AFTER) otomatik olarak ayarlar. Bu sayede MySQL ve PostgreSQL'deki CDC özelliğine benzer şekilde tablo verilerinin yansıtmalı senkronizasyonu sağlanır.

Not

CDC modundaki Hologres binlog kaynak tabloları şu anda watermark tanımlamalarını desteklememektedir. Pencere toplama işlemi gerçekleştirmeniz gerekiyorsa pencere dışı bir yaklaşım kullanabilirsiniz. Daha fazla bilgi için CDC kaynak tabloları pencere işlevlerini desteklemediğinde dakika düzeyinde toplamayı nasıl uygulayabilirim? konusuna bakın.

Bir Hologres tablosu için binlog özelliğini etkinleştirdikten sonra CDC modunda binlog verilerini gerçek zamanlı olarak tüketmek üzere bir kaynak tablo oluşturmak için Flink'te aşağıdaki DDL'yi kullanabilirsiniz.

create table test_message_src_binlog_table(
  id INTEGER,
  title VARCHAR,
  body VARCHAR
) with (
  'connector'='hologres',
  'dbname'='<yourDbname>',
  'tablename'='<yourTablename>',
  'username'='<yourAccessID>',
  'password'='<yourAccessSecret>',
  'endpoint'='<yourEndpoint>',
  'binlog' = 'true',
  'cdcMode' = 'true',
  'binlogMaxRetryTimes' = '10',
  'binlogRetryIntervalMs' = '500',
  'binlogBatchReadSize' = '100'
);

Tam ve artımlı veriler için kaynak tablo

VVR engine 1.13-vvr-4.0.13 ve Hologres V0.10 sürümlerinden itibaren Hologres binlog CDC kaynak tablosu tam ve artımlı verilerin entegre tüketimini destekler. Bu yöntem önce veritabanından geçmiş tam verileri okur ve ardından binlog'dan artımlı verileri okumaya sorunsuz bir şekilde geçer. Daha fazla bilgi için Hologres gerçek zamanlı veri ambarı konusuna bakın.

JDBC modunda binlog kaynak tablosu

Flink VVR 6.0.3 sürümünden itibaren Hologres binlog verilerini JDBC modunda tüketebilirsiniz. JDBC modu HoloHub moduna kıyasla daha fazla veri türünü ve özel hesapları destekler. JDBC modunun nasıl kullanılacağı hakkında daha fazla bilgi için Hologres gerçek zamanlı veri ambarı konusuna bakın.

HoloHub modundan JDBC moduna geçiş yapın

Hologres V2.0 sürümünde HoloHub modunu aşamalı olarak kaldırmaya başlamıştır. Hologres örneğinizi yükseltmeniz gerekiyorsa işlerinizi aşağıda açıklandığı gibi HoloHub modundan JDBC moduna geçirmeniz gerekir.

V2.1'e yükseltin

Hologres örneğinizi V2.1 sürümüne yükseltmeden önce işlerin beklendiği gibi çalıştığından emin olmak için Flink işlerinizi ve Hologres örneğinizi kontrol etmek üzere aşağıdaki çözümlerden birini seçin.

  • (Çözüm 1) (Önerilir) Flink VVR sürümünüzü 8.0.7 veya sonraki bir sürüme yükseltin. Flink otomatik olarak HoloHub modundan JDBC moduna geçer.

  • (Çözüm 2) Flink VVR sürümünüzü 6.0.7 ile 8.0.5 arasında bir sürüme yükseltin. Kaynak tabloya 'sdkMode'='jdbc' parametresini ekleyin ve işi yeniden başlatın. Ayrıca kullanıcıya aşağıdaki izin kümelerinden birini vermeniz gerekir. İşin düzgün çalıştığını onayladıktan sonra Hologres örneğini yükseltebilirsiniz.

    • (Seçenek 1) Örnek üzerinde süper kullanıcı izinleri.

    • (Seçenek 2) Hedef tabloda sahip izinleri, CREATE DATABASE izni ve örnek için çoğaltma rolü izinleri.

  • (Çözüm 3) (Önerilmez) Flink VVR sürümünü 8.0.6 sürümüne yükseltin. Flink otomatik olarak HoloHub modundan JDBC moduna geçer. Ancak VVR 8.0.6'da boyut tablosunda çok fazla alan bulunması durumunda iş dağıtımının zaman aşımına uğramasına neden olabilecek bilinen bir hata vardır. Daha fazla bilgi için Hologres Connector Sürüm Notları konusuna bakın.

  • (İsteğe bağlı) Çok sayıda Flink VVR işiniz varsa hangi işlerin ve tabloların yükseltme gerektirdiğini belirlemek için aşağıdaki talimatları kullanın.

V2.0'a yükseltin

  • (Çözüm 1) (Önerilir) Flink VVR sürümünüzü 8.0.6 veya sonraki bir sürüme yükseltin. Flink otomatik olarak HoloHub modundan JDBC moduna geçer. Ancak VVR 8.0.6'da boyut tablosunda çok fazla alan bulunması durumunda iş dağıtımının zaman aşımına uğramasına neden olabilecek bilinen bir hata vardır. Daha fazla bilgi için Hologres Connector Sürüm Notları konusuna bakın. VVR 8.0.7 sürümüne yükseltmenizi öneririz.

  • (Çözüm 2) Flink VVR sürümünüzü 8.0.4 veya 8.0.5 sürümüne yükseltin ve Flink işini yeniden başlatın. Ayrıca kullanıcıya aşağıdaki izin kümelerinden birini vermeniz gerekir. İşin düzgün çalıştığını onayladıktan sonra Hologres örneğini yükseltebilirsiniz.

    • (Seçenek 1) Örnek üzerinde süper kullanıcı izinleri.

    • (Seçenek 2) Hedef tabloda sahip izinleri, CREATE DATABASE izni ve örnek için çoğaltma rolü izinleri.

  • (Çözüm 3) Flink VVR sürümünüzü 6.0.7 ile 8.0.3 arasında bir sürüme yükseltin. Flink binlog verilerini tüketmek için HoloHub modunu kullanmaya devam eder.

Hologres binlog verilerini tüketen çok sayıda Flink VVR işiniz varsa yükseltilmesi gereken işleri ve tabloları belirlemek için aşağıdaki yöntemi kullanabilirsiniz.

Not

Bu araç yalnızca aşağıdaki iş türleri için bilgi alabilir:

  • Tabloları tanımlamak için DDL kullanan SQL işleri.

  • Parametreleri belirtmek için ipuçlarını kullanan Katalog işleri.

Araç ipucu parametresi olmayan JAR işleri veya Katalog tabloları için bilgi almayı desteklemez.

  1. Açık kaynaklı aracı find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar konusuna bakın.

  2. Yerel komut satırında açık kaynaklı aracın dizinine gidin ve yükseltme gerektiren tüm işleri ve tabloları görüntülemek için aşağıdaki komutu çalıştırın.

    Not

    Aşağıdaki komutu çalıştırmak için JDK 8 veya sonraki bir sürüm yüklü Java ortamına sahip olmanız gerekir.

    java -cp find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar com.alibaba.hologres.FindIncompatibleFlinkJobs <region> <url> <AccessKeyID> <AccessKeySecret> <binlog/rpc>
    # Example
    java -cp find-incompatible-flink-jobs-1.0-SNAPSHOT-jar-with-dependencies.jar com.alibaba.hologres.FindIncompatibleFlinkJobs Beijing https://vvp.console.alibabacloud.com/web/xxxxxx/en/#/workspaces/xxxx/namespaces/xxxx/operations/stream/xxxx my-access-key-id my-access-key-secret binlog

    Aşağıdaki tabloda parametreler açıklanmaktadır.

    Parametre

    Açıklama

    region

    Realtime Compute for Apache Flink çalışma alanınızın bulunduğu bölge. Geçerli değerlerin listesi için Bölge değerleri tablosuna bakın.

    url

    Hedef Realtime Compute for Apache Flink çalışma alanındaki herhangi bir işin URL'si.

    AccessKey ID

    Realtime Compute for Apache Flink çalışma alanına erişim iznine sahip bir hesap için AccessKey ID.

    AccessKey secret

    Realtime Compute for Apache Flink çalışma alanına erişim iznine sahip bir hesap için AccessKey secret.

    binlog/rpc

    Kontrol edilecek iş içeriği türü. Geçerli değerler:

    • binlog: Çalışma alanındaki tüm işlerdeki tüm Hologres binlog kaynak tablolarını kontrol eder.

    • rpc: Çalışma alanındaki tüm işlerde rpc modunu kullanan tüm boyut tablolarını veya sonuç tablolarını kontrol eder.

    Bölge değerleri (genişletmek için tıklayın)


    Bölge


    Değer


    China (Beijing)


    Beijing


    China (Shanghai)


    Shanghai


    China (Hangzhou)


    Hangzhou


    China (Shenzhen)


    Shenzhen


    China (Zhangjiakou)


    Zhangjiakou


    China (Hong Kong)


    Hong Kong


    Singapore


    Singapore


    Germany (Frankfurt)


    Frankfurt


    Indonesia (Jakarta)


    Jakarta


    Malaysia (Kuala Lumpur)


    Kuala Lumpur


    US (Silicon Valley)


    us-west-1


    China East 2 Finance


    China East 2 Finance

  3. Aşağıdaki kod örnek bir sonucu göstermektedir.

    dwd_xxx nx not a running job, skip
    dwd_st xxx not a running job, skip
    dwd_xxx a not a running job, skip
    dia xxx not a hologres job, skip
    dwd_tr xxx ail not sql job, skip
    --- The following are Hologres binlog source tables that are on a version earlier than 8.0.5 and do not have sdkmode = jdbc set ---
    deploymentName                         version                              tableName
    ads_xxx                   xxx vvr-6.0.7-flink-1.15 adsdb.ads_xxx              xxx         xxx catalog
           xxx      vvr-8.0.1-flink-1.17 odsdb.ods_xxx      nts
    xxx           vvr-8.0.1-flink-1.17 dwsdb.dws_xxx             tag
    xxx       s vvr-8.0.1-flink-1.17 odsdb.ods_xxx        ers