ApsaraDB for OceanBase veri kaynağı, ApsaraDB for OceanBase'den veri okumanıza ve bu veritabanına veri yazmanıza olanak tanır. DataWorks içinde veri senkronizasyon görevlerini yapılandırmak için bu veri kaynağını kullanın. Bu konu, ApsaraDB for OceanBase ile veri senkronizasyonu yapmaya yönelik özellikleri açıklar.
Desteklenen sürümler
ApsaraDB for OceanBase Reader ve ApsaraDB for OceanBase Writer, toplu okuma ve yazma işlemleri için aşağıdaki OceanBase sürümlerini destekler:
OceanBase 2.x
OceanBase 3.x
OceanBase 4.x
Yukarıdaki sürümlerin tümü, Alibaba Cloud tarafından yönetilen bir hizmet olan ApsaraDB for OceanBase'i ifade eder. OceanBase Community Edition (CE) desteklenmez. Kendi kendine yönetilen bir OceanBase Community Edition örneğinden veri senkronize etmek için önce Data Transmission Service (DTS) kullanarak verileri ApsaraDB RDS for MySQL'e geçirin ve ardından verileri AnalyticDB for MySQL'e senkronize etmek için DataWorks'ü kullanın.
Sınırlamalar
Toplu okuma
ApsaraDB for OceanBase, Oracle ve MySQL kiracı modlarını destekler. Veri filtreleme için where yan tümcesini veya column parametresindeki işlev sütunlarını yapılandırırken, söz diziminin ilgili kiracı modunun SQL kısıtlamalarına uygun olduğundan emin olun. Aksi takdirde SQL ifadesi başarısız olabilir.
Bir görünümden (view) veri okuyabilirsiniz.
Toplu okuma sırasında, senkronize edilen verileri değiştirmeyin. Bu, veri çoğaltması veya kaybı gibi veri kalitesi sorunlarını önler.
Veri kaynağını Read by Partition olarak yapılandırırsanız, veri kaynağına erişmek için kullanılan hesabın system izinlerine sahip olması gerekir.
Toplu yazma
Senkronizasyon görevi en az insert into... izni gerektirir. preSql ve postSql parametrelerinde belirttiğiniz ifadelere bağlı olarak başka izinler de gerekebilir.
Veri yazmak için batch yöntemini kullanmanızı öneririz. Bu yöntem, biriken satır sayısı önceden tanımlanmış bir eşik değere ulaştığında yalnızca bir yazma isteği gönderir.
ApsaraDB for OceanBase, Oracle ve MySQL kiracı modlarını destekler. preSql ve postSql parametrelerini yapılandırırken, söz diziminin ilgili kiracı modunun SQL kısıtlamalarına uygun olduğundan emin olun. Aksi takdirde SQL ifadesi başarısız olabilir.
Gerçek zamanlı okuma
Bu özellik yalnızca OceanBase MySQL kiracı modunu destekler.
Gerçek zamanlı verileri senkronize etmek için binlog özelliğini etkinleştirmeniz gerekir. Daha fazla bilgi için bkz. Binlog ile ilgili işlemler (Alibaba Cloud örnekleri), Binlog ile ilgili işlemler (OB Cloud örnekleri).
Gerçek zamanlı tam veritabanı senkronizasyon görevleri, bağlantı dizesi modundaki veri kaynaklarını desteklemez.
Gerçek zamanlı tam veritabanı senkronizasyon görevleri için veritabanı sürümü V3.0 veya üzeri olmalıdır.
OceanBase, fiziksel olarak dağıtılmış birden çok veritabanından gelen verileri tek bir mantıksal veritabanında birleştirebilen dağıtık bir ilişkisel veritabanıdır. Ancak, OceanBase verilerinin AnalyticDB for MySQL ile gerçek zamanlı senkronizasyonu şu anda yalnızca tek bir fiziksel veritabanından gelen verileri destekler. Mantıksal bir veritabanından veri senkronizasyonu desteklenmez.
Veri senkronizasyonundan önceki hazırlıklar
DataWorks'te veri senkronize etmeden önce, bu konuda açıklandığı şekilde ApsaraDB for OceanBase ortamını hazırlayın. Bu hazırlık, ApsaraDB for OceanBase veri senkronizasyon görevlerinin DataWorks'te doğru şekilde yapılandırılmasını ve çalıştırılmasını sağlar. Aşağıdaki bölümlerde gerekli hazırlıklar açıklanmaktadır.
İzin listesini yapılandırma
Serverless kaynak grubunun veya Data Integration için özel kaynak grubunun VPC CIDR bloğunu OceanBase izin listesine ekleyin. Daha fazla bilgi için bkz. İzin listesi girişleri ekleme.
Hesap oluşturma ve izinleri yapılandırma
Sonraki işlemler için bir veritabanı hesabı oluşturmanız gerekir. Bu hesabın OceanBase üzerinde gerekli izinlere sahip olması gerekir. Daha fazla bilgi için bkz. Hesap oluşturma ve izinleri yapılandırma.
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 eklemelisiniz. Bir veri kaynağı eklerken parametrelerin anlamlarını anlamak için DataWorks konsolunda parametre açıklamalarını görüntüleyebilirsiniz.
Veri senkronizasyon görevlerini geliştirme
Bir 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 tablo toplu senkronizasyonu
Desteklenen kaynaklar: Data Integration modülü tarafından desteklenen tüm veri kaynağı türleri
Yapılandırma kılavuzu: Toplu senkronizasyon görevi yapılandırma
Tek tablo gerçek zamanlı senkronizasyonu
Desteklenen kaynaklar: Kafka
Yapılandırma kılavuzu: Gerçek zamanlı senkronizasyon görevi yapılandırma
Tam veritabanı gerçek zamanlı senkronizasyonu
Desteklenen kaynaklar: MySQL
Yapılandırma kılavuzu: Gerçek zamanlı senkronizasyon görevi yapılandırma
Ek: Komut dosyası örnekleri ve parametre açıklamaları
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.
Reader komut dosyası örneği
{ "type": "job", "steps": [ { "stepType": "apsaradb_for_OceanBase", // The plug-in name. "parameter": { "datasource": "", // The data source name. "where": "", "column": [ // The columns. "id", "name" ], "splitPk": "" }, "name": "Reader", "category": "reader" }, { "stepType": "stream", "parameter": { "print": false, "fieldDelimiter": "," }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "0" // The error count. }, "speed": { "throttle": true, // Specifies whether to enable throttling. A value of false 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. "mbps":"12" // The throttling rate. 1 mbps = 1 MB/s. } } }
Reader komut dosyası parametreleri
|
Parametre |
Açıklama |
Gerekli |
Varsayılan değer |
|
datasource |
Kullandığınız DataWorks sürümü ApsaraDB for OceanBase veri kaynakları eklemeyi destekliyorsa, eklenen bir ApsaraDB for OceanBase veri kaynağına adı ile başvurabilirsiniz. İki yapılandırma yöntemi mevcuttur: jdbcUrl ve username. |
Evet |
Yok |
|
jdbcUrl |
Hedef veritabanının JDBC bağlantı bilgileri. Açıklama için bir JSON dizisi kullanın. Tek bir veritabanı için birden çok bağlantı adresi belirtebilirsiniz. Birden çok adres yapılandırılırsa, ApsaraDB for OceanBase Reader her bir IP adresinin bağlantısını sırayla kontrol eder ve geçerli bir adres bulur. Tüm bağlantılar başarısız olursa, ApsaraDB for OceanBase Reader bir hata bildirir. Not
jdbcUrl, connection yapılandırma birimine dahil edilmelidir. Resmi ApsaraDB for OceanBase teknik özelliklerine göre, jdbcUrl ek bağlantı kontrol bilgilerini içerebilir. Örneğin, |
Hayır |
Yok |
|
username |
Veri kaynağının kullanıcı adı. |
Hayır |
Yok |
|
password |
Veri kaynağı için belirtilen kullanıcı adının parolası. |
Hayır |
Yok |
|
table |
Senkronize edilecek tablolar. Açıklama için bir JSON dizisi kullanın. Birden çok tablodan aynı anda veri okuyabilirsiniz. Birden çok tablo yapılandırıldığında, tüm tabloların aynı şemaya sahip olduğundan emin olun. ApsaraDB for OceanBase Reader, tablolar arasındaki şema tutarlılığını doğrulamaz. Not
table, connection yapılandırma birimine dahil edilmelidir. |
Evet |
Yok |
|
column |
Yapılandırılan tablolardan senkronize edilecek sütunlar. Sütun bilgilerini açıklamak için bir JSON dizisi kullanın. Varsayılan olarak tüm sütunlar kullanılır, örneğin [*].
|
Evet |
Yok |
|
splitPk |
ApsaraDB for OceanBase Reader verileri çıkarırken splitPk belirtirseniz, veriler splitPk tarafından belirtilen sütuna göre bölünür. Veri senkronizasyon sistemi daha sonra senkronizasyon verimliliğini artırmak için eşzamanlı görevler başlatır.
|
Hayır |
Boş |
|
where |
ApsaraDB for OceanBase Reader, belirtilen column, table ve where parametrelerine dayalı olarak bir SQL ifadesi oluşturur ve ardından oluşturulan SQL ifadesini kullanarak verileri çıkarır. Örneğin, test sırasında where koşulunu limit 10 olarak ayarlayabilirsiniz. Gerçek iş senaryolarında, where koşulunu
|
Hayır |
Yok |
|
querySql |
Bazı iş senaryolarında, where parametresi gerekli filtre koşullarını tanımlamak için yeterli olmayabilir. Özel bir filtre SQL ifadesi tanımlamak için bu parametreyi kullanabilirsiniz. Bu parametre yapılandırıldığında, veri senkronizasyon sistemi tables, columns ve splitPk parametrelerini yoksayar ve verileri filtrelemek için yapılandırılan SQL ifadesini kullanır. querySql yapılandırdığınızda, ApsaraDB for OceanBase Reader table, column, where ve splitPk parametrelerini yoksayar. |
Hayır |
Yok |
|
fetchSize |
Bu parametre, eklenti ile veritabanı sunucusu arasında her partide getirilen satır sayısını belirtir. Bu değer, veri senkronizasyon sistemi 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 senkronizasyon sürecinde bellek yetersizliği (OOM) hatasına neden olabilir. |
Hayır |
1.024 |
Writer komut dosyası örneği
{ "type":"job", "version":"2.0", // The version number. "steps":[ { "stepType":"stream", "parameter":{}, "name":"Reader", "category":"reader" }, { "stepType":"apsaradb_for_OceanBase", // The plug-in name. "parameter":{ "datasource": "Data source name", "column": [ // The columns. "id", "name" ], "table": "apsaradb_for_OceanBase_table", // The table name. "preSql": [ // The SQL statements to execute before the data synchronization task runs. "delete from @table where db_id = -1" ], "postSql": [ // The SQL statements to execute after the data synchronization task runs. "update @table set db_modify_time = now() where db_id = 1" ], "obWriteMode": "insert", }, "name":"Writer", "category":"writer" } ], "setting":{ "errorLimit":{ "record":"0" // The error count. }, "speed":{ "throttle":true, // Specifies whether to enable throttling. A value of false 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. "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 |
Kullandığınız DataWorks sürümü ApsaraDB for OceanBase veri kaynakları eklemeyi destekliyorsa, eklenen bir ApsaraDB for OceanBase veri kaynağına adı ile başvurabilirsiniz. İki yapılandırma yöntemi mevcuttur: jdbcUrl ve username. |
Hayır |
Yok |
|
jdbcUrl |
Hedef veritabanının JDBC bağlantı bilgileri. jdbcUrl, connection yapılandırma birimine dahildir.
|
Evet |
Yok |
|
username |
Veri kaynağının kullanıcı adı. |
Evet |
Yok |
|
password |
Veri kaynağı için belirtilen kullanıcı adının parolası. |
Evet |
Yok |
|
table |
Verilerin yazıldığı tablonun adı. Açıklama için bir JSON dizisi kullanın. Not
table, connection yapılandırma birimine dahil edilmelidir. |
Evet |
Yok |
|
column |
Verilerin yazıldığı hedef tablodaki sütunlar. Sütun adlarını virgülle (,) ayırın. Örneğin, Not
column parametresi belirtilmelidir ve boş bırakılamaz. |
Evet |
Yok |
|
obWriteMode |
Hedef tabloya veri yazmak için kullanılan mod. Bu parametre isteğe bağlıdır.
|
Hayır |
insert |
|
onClauseColumns |
Not
Oracle kiracı modunda kullanılır. Bu parametreyi birincil anahtar sütunlarına veya benzersiz kısıtlama sütunlarına ayarlayın. Birden çok sütunu virgülle (,) ayırın. Örneğin, |
Hayır |
Yok |
|
obUpdateColumns |
Not
Bu parametre, Yazma çakışması meydana geldiğinde güncellenecek sütunlar. Birden çok sütunu virgülle (,) ayırın. Örneğin, |
Hayır |
Tüm sütunlar |
|
preSql |
Veriler hedef tabloya yazılmadan önce yürütülecek standart SQL ifadeleri. SQL ifadelerinde tablo adına başvurmanız gerekirse, yer tutucu olarak |
Hayır |
Yok |
|
postSql |
Veriler hedef tabloya yazıldıktan sonra yürütülecek standart SQL ifadeleri. |
Hayır |
Yok |
|
batchSize |
Her partide gönderilecek kayıt sayısı. Bu değer, veri senkronizasyon sistemi ile sunucu arasındaki ağ etkileşimlerinin sayısını önemli ölçüde azaltabilir ve genel aktarım hızını artırabilir. Not
Çok büyük bir fetchSize değeri (>2048), veri senkronizasyon sürecinde bellek yetersizliği (OOM) hatasına neden olabilir. |
Hayır |
1.024 |