DTS, Flink CDC, katalog veya DataWorks kullanarak MySQL kaynaklarından (kendi yönetiminizdeki MySQL, ApsaraDB RDS for MySQL ve PolarDB for MySQL gibi) ApsaraDB for SelectDB hizmetine veri geçişi yapabilirsiniz. Veri hacmine ve kullanım senaryonuz bağlı olarak bir yöntem seçin.
Geçiş yöntemlerinin karşılaştırılması
DTS, DataWorks, Flink CDC ve katalog seçeneklerinin tümü MySQL verilerini ApsaraDB for SelectDB hizmetine aktarabilir; ancak yetenekleri farklılık gösterir. Senaryonuz için en uygun yöntemi seçin.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aşağıdaki bölümlerde her bir yönteme ait temel adımlar özetlenmiştir. Ayrıntılar için ilgili yöntemin belgelerine bakın.
Ön koşullar
-
MySQL örneği ile SelectDB örneğinin ağ üzerinden iletişim kurabildiğinden emin olun.
MySQL örneği ile SelectDB örneği aynı VPC içinde bulunmalıdır. Aksi takdirde öncelikle ağ bağlantısı sorununu çözün. Talimatlar için bkz. ApsaraDB for SelectDB örneği ile bir veri kaynağı arasındaki ağ bağlantısı sorunlarını nasıl çözebilirim?
MySQL örneğinin IP adresini SelectDB IP adresi izin listesine ekleyin. Daha fazla bilgi için bkz. IP adresi izin listesi yapılandırma.
-
MySQL örneğinizde bir IP adresi izin listesi varsa, SelectDB örneğinin VPC'sine ait IP CIDR bloğunu MySQL IP adresi izin listesine ekleyin.
SelectDB örneğinizin bulunduğu VPC'nin IP aralığını öğrenmek için bkz. ApsaraDB for SelectDB örneğimin bulunduğu VPC'nin IP CIDR bloğunu nasıl bulabilirim?
SelectDB örneğinizin genel IP adresini almak için bu örneğin genel uç noktasında
pingkomutunu kullanın SelectDB.
DTS ile veri geçişi yapma
DTS, MySQL'den ApsaraDB for SelectDB hizmetine tarihsel veri geçişi ve artımlı veri senkronizasyonunu destekler; veritabanı ve tablo geçişi, DDL senkronizasyonu ve veri doğrulama gibi özellikler sunar. Aşağıdaki örnek bir ApsaraDB RDS for MySQL örneğini kullanır. Daha fazla bilgi için bkz. DTS kullanarak veri içe aktarma.
Yordam
ApsaraDB for SelectDB konsolu üzerinde oturum açın.
Sol üst köşede örneğinizin bulunduğu bölgeyi seçin.
Instances sayfasında hedef Instance ID değerini tıklayarak Instance Details sayfasına gidin.
-
Sol gezinme bölmesinde Data Pipeline seçeneğini tıklayın ve ardından Data Synchronization sekmesini seçin.
NotDTS veri senkronizasyonu, tek seferlik aktarımlar için tarihsel veri geçişini gerçek zamanlı güncellemeler için artımlı veri senkronizasyonu ile birleştirir.
Create Synchronization Task seçeneğini tıklayın ve kaynak ile hedef veritabanlarını yapılandırın.
Yapılandırmayı tamamladıktan sonra sayfanın alt kısmında Test Connection and Proceed seçeneğini tıklayın.
Görev nesnelerini ve gelişmiş ayarları yapılandırın.
Nesneleri veritabanı düzeyinde seçerseniz DTS görev başladıktan sonra oluşturulan tabloların verilerini senkronize etmez. Senkronizasyon sırasında tablo eklemeyi planlıyorsanız nesneleri tablo düzeyinde seçin. Seçimi daha sonra Modify Synchronized Objects özelliğini kullanarak değiştirebilirsiniz.
Nesneleri tablo düzeyinde seçer ve tablo ya da sütun adlarını eşleme gibi düzenlemeler yapmanız gerekirse tek bir senkronizasyon görevi en fazla 1.000 tabloyu destekler. Bu sınır aşılırsa görevi gönderdiğinizde hata bildirilir. Bu durumda senkronize edilecek tabloları gruplara ayırıp birden çok görev yapılandırın veya veritabanı düzeyinde bir senkronizasyon görevi yapılandırın.
-
Hedef örnekte tek bir senkronizasyon nesnesinin adını yeniden adlandırmak için Selected Objects kutusunda ilgili nesneye sağ tıklayın. Nesneleri yeniden adlandırma hakkında daha fazla bilgi için bkz. Tek bir veritabanı, tablo veya sütun eşleme.
-
Hedef örnekte birden çok senkronizasyon nesnesinin adını toplu olarak değiştirmek için Selected Objects kutusunun sağ üst köşesindeki Batch Edit seçeneğini tıklayın. Daha fazla bilgi için bkz. Veritabanlarını, tabloları ve sütunları toplu olarak eşleme.
Veritabanı veya tablo düzeyinde senkronize edilecek SQL işlemlerini seçmek için Selected Objects kutusunda senkronize edilecek nesneye sağ tıklayın ve ardından açılan iletişim kutusunda istediğiniz SQL işlemlerini seçin. Desteklenen işlemlerin listesi için bkz. Artımlı senkronizasyonu destekleyen SQL işlemleri.
WHERE yan tümcesini kullanarak verileri filtrelemek için Selected Objects kutusunda senkronize edilecek tabloya sağ tıklayın ve ardından açılan iletişim kutusunda filtre koşulunu ayarlayın. Daha fazla bilgi için bkz. Filtre koşulları ayarlama.
Nesne adı eşleme özelliğini kullanırsanız yeniden eşlenen nesneye bağımlı diğer nesneler senkronize edilemeyebilir.
İsteğe bağlı: Önceki yapılandırmaları tamamladıktan sonra hedef tablolar için Primary Key Column, Distribution Key ve Engine değerlerini ayarlamak üzere Next: Configure Database and Table Fields seçeneğini tıklayın.
Bu adım yalnızca görev nesnelerini yapılandırırken Synchronization Types altında Schema Synchronization seçeneğini belirlediğinizde kullanılabilir. Definition Status değerini All olarak ayarlayıp ardından ayarları değiştirebilirsiniz.
Bileşik bir Primary Key Column oluşturmak için birden çok sütun seçebilir ve Primary Key Column içinden bir veya daha fazla sütunu Distribution Key olarak seçmeniz gerekir. Engine için yalnızca Unique desteklenir.
Görevi kaydedin ve ön kontrolü çalıştırın. Precheck Success Rate değeri %100 olduğunda Next: Purchase seçeneğini tıklayın.
Purchase sayfasında veri senkronizasyonu örneği için faturalama yöntemini ve bağlantı teknik özelliklerini seçin. Data Transmission Service (Pay-As-You-Go) Service Terms metnini okuyup kabul edin. Senkronizasyon görevini başlatmak için Purchase and Start seçeneğini tıklayın. Görev ilerlemesini veri senkronizasyonu sayfasında görüntüleyebilirsiniz.
Kategori | Yapılandırma | Açıklama |
Görev Bilgileri | Task Name | DTS otomatik olarak bir görev adı oluşturur. Kolay tanımlama için açıklayıcı bir ad belirtmenizi öneririz. Adın benzersiz olması gerekmez. |
Kaynak Veritabanı | Database Type | MySQL seçin. |
Access Method | Alibaba Cloud Instance seçin. | |
Instance Region | Kaynak ApsaraDB RDS for MySQL örneğinin bulunduğu bölgeyi seçin. | |
RDS Instance ID | Kaynak ApsaraDB RDS for MySQL örneğinin kimliğini seçin. Örnek: rm-2z3m****. | |
Database Account | Kaynak ApsaraDB RDS for MySQL örneğinin veritabanı hesabını girin. Gerekli izinler için bkz. Veritabanı hesapları için gerekli izinler. | |
Database Password | Veritabanı hesabına karşılık gelen parolayı girin. | |
Encryption | İhtiyaca göre Non-encrypted veya SSL-encrypted seçeneğini belirleyin. SSL-encrypted seçeneğini belirlerseniz RDS for MySQL örneğinde SSL şifrelemeyi önceden etkinleştirmeniz gerekir. Daha fazla bilgi için bkz. SSL şifrelemeyi hızlıca etkinleştirmek için cloud sertifikası kullanma. | |
Hedef Veritabanı | Database Type | SelectDB seçin. |
Access Method | Alibaba Cloud Instance seçin. | |
Instance Region | Hedef SelectDB örneğinin bulunduğu bölgeyi seçin. | |
Instance ID | Hedef SelectDB örneğinin kimliğini seçin. | |
Database Account | Hedef SelectDB örneğinin veritabanı hesabını girin. Gerekli izinler için bkz. Veritabanı hesapları için gerekli izinler. | |
Database Password | Veritabanı hesabına karşılık gelen parolayı girin. |
Yapılandırma | Açıklama |
Synchronization Types | Incremental Data Synchronization seçilidir. Varsayılan olarak ayrıca Schema Synchronization ve Full Data Synchronization seçeneklerini de belirlemeniz gerekir. Ön kontrol tamamlandıktan sonra DTS, seçilen nesnelerin tam veri senkronizasyonunu kaynak örneğinden hedef kümeye gerçekleştirir. Bu işlem, sonraki artımlı veri senkronizasyonu için temel veriler olarak işlev görür. Önemli Veriler MySQL'den SelectDB'ye senkronize edilirken veri türleri dönüştürülür. Schema Synchronization seçeneğini belirlemezseniz öncelikle hedef SelectDB örneğinde Unique Key modelini kullanan ve buna karşılık gelen şemaya sahip bir tablo oluşturmanız gerekir. Daha fazla bilgi için bkz. Veri türü eşlemeleri ve Veri modeli. |
Source Objects | Source Objects kutusunda senkronize etmek istediğiniz nesneleri tıklayın ve ardından nesneleri Selected Objects kutusuna taşımak için Önemli |
Selected Objects | Not |
DataWorks ile veri geçişi yapma
DataWorks Data Integration, verileri MySQL'den ApsaraDB for SelectDB hizmetine senkronize edebilir. Daha fazla bilgi için bkz. DataWorks kullanarak veri içe aktarma.
BITMAP, HLL (HyperLogLog) veya QUANTILE_STATE veri türündeki alanlara yazma işlemi desteklenmez.
Veri kaynakları ekleme
Bir veri senkronizasyonu görevi geliştirirken DataWorks'te bir MySQL veri kaynağı ve bir SelectDB veri kaynağı oluşturun.
MySQL veri kaynağı oluşturun. Daha fazla bilgi için bkz. MySQL veri kaynağı.
-
SelectDB veri kaynağı oluşturun. Daha fazla bilgi için bkz. Veri kaynağı yönetimi. Aşağıdaki tabloda SelectDB veri kaynağı için bazı yapılandırma parametreleri açıklanmıştır.
Parametre
Açıklama
Data Source Name
Veri kaynağının adı.
MySQL Connection URL
jdbc:mysql://<ip>:<port>/<dbname>JDBC bağlantı dizesini girin.VPC Endpoint (veya Public Endpoint) ile MySQL Port değerlerini ApsaraDB for SelectDB konsolundaki Instance Details > Network Information sayfasından alabilirsiniz.
Örnek:
jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_dbHTTP Connection URL
<ip>:<port>biçiminde HTTP protokolü uç noktasını girin.VPC Endpoint (veya Public Endpoint) ile HTTP Port değerlerini ApsaraDB for SelectDB konsolundaki Instance Details > Network Information sayfasından alabilirsiniz.
Örnek:
selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080Username
ApsaraDB for SelectDB örneği için kullanıcı adını girin.
Password
ApsaraDB for SelectDB örneğinde belirtilen kullanıcı için parolayı girin.
Veri senkronizasyonunu yapılandırma
Bir veri geçişi görevini yapılandırmak için aşağıdaki belgelere bakın:
Flink CDC ile veri geçişi yapma
Flink, verileri MySQL'den SelectDB'ye geçirmek için Flink SQL, Flink CDC ve DataStream olmak üzere üç yöntem sunar. Flink CDC tarihsel veri geçişi, artımlı veri senkronizasyonu, veritabanı ve tablo geçişi ile DDL senkronizasyonunu destekler. Aşağıdaki örnek Flink CDC kullanarak verileri MySQL'den ApsaraDB for SelectDB hizmetine senkronize etmeyi gösterir. Daha fazla bilgi için bkz. Flink kullanarak veri içe aktarma.
Yordam
Ortamı hazırlama
Bir Flink ortamı kurun. Bu örnekte Flink 1.16 bağımsız ortamı kullanılmaktadır.
-
flink-1.16.3-bin-scala_2.12.tgz dosyasını indirip sıkıştırmasını açın. Bu sürüm mevcut değilse başka bir sürüm indirin. Diğer sürümler için bkz. Apache Flink.
wget https://archive.apache.org/dist/flink/flink-1.16.3/flink-1.16.3-bin-scala_2.12.tgz tar -zxvf flink-1.16.3-bin-scala_2.12.tgz -
FLINK_HOME/lib dizinine gidin ve flink-sql-connector-mysql-cdc-2.4.2 ile flink-doris-connector-1.16-1.5.2 dosyalarını indirin.
cd flink-1.16.3 cd lib/ wget https://repo1.maven.org/maven2/com/ververica/flink-sql-connector-mysql-cdc/2.4.2/flink-sql-connector-mysql-cdc-2.4.2.jar wget https://repo.maven.apache.org/maven2/org/apache/doris/flink-doris-connector-1.16/1.5.2/flink-doris-connector-1.16-1.5.2.jar -
Flink Bağımsız kümesini başlatın.
bin/start-cluster.sh Bir ApsaraDB for SelectDB örneği oluşturun. Daha fazla bilgi için bkz. Örnek oluşturma.
ApsaraDB for SelectDB örneğine MySQL protokolü üzerinden bağlanın. Daha fazla bilgi için bkz. Örneğe bağlanma.
-
Test veritabanı ve test tablosu oluşturun.
-
Test veritabanı oluşturun.
CREATE DATABASE test_db; -
Test tablosu oluşturun.
USE test_db; CREATE TABLE employees ( emp_no int NOT NULL, birth_date date, first_name varchar(20), last_name varchar(20), gender char(2), hire_date date ) UNIQUE KEY(`emp_no`) DISTRIBUTED BY HASH(`emp_no`) BUCKETS 1;
-
Flink CDC görevi gönderme
Flink CDC görevini göndermek için aşağıdaki sözdizimini kullanın:
<FLINK_HOME>/bin/flink run \
-Dexecution.checkpointing.interval=10s \
-Dparallelism.default=1 \
-c org.apache.doris.flink.tools.cdc.CdcTools \
lib/flink-doris-connector-1.16-1.5.2.jar \
mysql-sync-database \
--database test_db \
--including-tables "tbl1|test.*" \
--mysql-conf hostname=127.0.0.1 \
--mysql-conf username=root \
--mysql-conf password=123456 \
--mysql-conf database-name=mysql_db \
--sink-conf fenodes=selectdb-cn-****.selectdbfe.rds.aliyuncs.com:8080 \
--sink-conf username=admin \
--sink-conf password=****
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Verileri senkronize etmek için flink-sql-connector-mysql-cdc-${version}.jar ve flink-sql-connector-oracle-cdc-${version}.jar gibi gerekli Flink CDC bağımlılıklarını $FLINK_HOME/lib dizinine ekleyin.
Veritabanı düzeyinde senkronizasyon için Flink 1.15 veya sonraki bir sürüm gerekir. Flink Doris Connector indirmeleri için bkz. Flink Doris Connector.
Katalog kullanarak veri geçişi yapma
SelectDB'deki katalog özelliği, MySQL'e erişmek için birleşik sorgular kullanır ve böylece tarihsel veri geçişini basitleştirir. Aşağıdaki örnek bir MySQL veritabanından ApsaraDB for SelectDB hizmetine veri senkronize etmeyi gösterir. Daha fazla bilgi için bkz. JDBC veri kaynağı.
Yordam
-
SelectDB örneğine bağlanın. Daha fazla bilgi için bkz. Örneğe bağlanma.
NotDMS kullanarak bağlandığınızda
SWITCHdeyimi çalışmaz. MySQL istemcisi ile bağlanmanızı öneririz. -
MySQL JDBC kataloğu oluşturun.
CREATE CATALOG jdbc_mysql PROPERTIES ( "type"="jdbc", "user"="root", "password"="123456", "jdbc_url" = "jdbc:mysql://127.0.0.1:3306/demo", "driver_url" = "mysql-connector-java-8.0.25.jar", "driver_class" = "com.mysql.cj.jdbc.Driver", "checksum" = "fdf55dcef04b09f2eaf42b75e61ccc9a" )Parametre açıklaması
Parametre
Gerekli
Varsayılan
Açıklama
user
Evet
Yok
Veritabanı hesabı.
password
Evet
Yok
Veritabanı hesabının parolası.
jdbc_url
Evet
Yok
JDBC bağlantı dizesi.
driver_url
Evet
Yok
JDBC sürücü JAR paketinin dosya adı.
driver_class
Evet
Yok
JDBC sürücüsünün sınıf adı.
lower_case_table_names
Hayır
"false"
Dış JDBC veri kaynağından veritabanı ve tablo adlarının küçük harfle senkronize edilip edilmeyeceğini belirtir.
only_specified_database
Hayır
"false"
Yalnızca belirtilen veritabanlarının senkronize edilip edilmeyeceğini belirtir.
include_database_list
Hayır
""only_specified_database=trueolduğunda virgülle ayrılmış senkronize edilecek veritabanı listesini belirtir. Veritabanı adları büyük/küçük harfe duyarlıdır.
exclude_database_list
Hayır
""only_specified_database=trueolduğunda senkronizasyondan hariç tutulacak virgülle ayrılmış veritabanı listesini belirtir. Veritabanı adları büyük/küçük harfe duyarlıdır.SelectDB'de hedef tabloyu oluşturun ve ardından verileri senkronize etmek için
INSERT INTO ... SELECTdeyimini kullanın.INSERT INTOhakkında daha fazla bilgi için bkz. INSERT INTO.
# Create the destination table. CREATE TABLE selectdb_table ... # Migrate data. INSERT INTO selectdb_table SELECT * FROM mysql_catalog.mysql_database.mysql_table;
simgesini tıklayın. Nesneleri veritabanı, tablo veya sütun düzeyinde seçebilirsiniz.