Veri Aktarım Hizmeti (DTS) kullanarak, şirket içinde, Elastic Compute Service (ECS) örneğinde veya başka bir cloud ortamında barındırdığınız kendi yönettiğiniz MySQL veritabanınızı minimum veya sıfır kesinti süresiyle ApsaraDB RDS for MySQL'e geçirin.
Bu konu şunları kapsar:
Geçiş çözümünün seçilmesi
Kaynak veritabanının ve hedef RDS örneğinin hazırlanması
Geçiş görevinin yapılandırılması ve çalıştırılması
Verilerin doğrulanması ve uygulamanızın devralma işlemi
Bir geçiş çözümü seçin
DTS, bir çözüm oluşturmak için birleştirebileceğiniz üç geçiş türünü destekler:
| Geçiş türü | İşlevi |
|---|---|
| Schema migration | Veritabanlarının, tabloların, görünümlerin, tetikleyicilerin, saklı yordamların ve fonksiyonların yapısını kopyalar. DTS, görünümlerde ve saklı yordamlarda DEFINER ifadesini INVOKER olarak dönüştürür. |
| Full data migration | Mevcut tüm verileri kaynak veritabanından hedef RDS örneğine kopyalar. |
| Incremental data migration | Tam veri geçişi başladıktan sonra, kaynak veritabanındaki yeni değişiklikleri sürekli olarak kopyalar; bu sayede neredeyse sıfır kesinti süresiyle geçiş yapılmasını sağlar. |
Kesinti süresine olan toleransınıza göre bu türleri birleştirin:
| Çözüm | Kesinti Süresi | Veri Tutarlılığı | Sınırlamalar | Maliyet | En Uygun Olduğu Durum |
|---|---|---|---|---|---|
| Şema + tam + artımlı (önerilen) | Sıfır | Geçiş tamamlandıktan sonra tutarlıdır, geçiş sırasında yazma işlemleri devam etse bile | Artımlı geçiş, manuel olarak durdurana kadar çalışır | Ücretli (artımlı) | Üretim ortamları, sıfır kesinti gereksinimi |
| Şema + tam | Tam geçiş süresi kadar | Yalnızca geçiş sırasında kaynak salt okunur ise tutarlıdır; yazma işlemi olursa tutarsızlık oluşur | Tutarlı veri için kaynak duraklatılmalıdır | Ücretsiz | Test ortamları, kabul edilebilir kesinti süresi |
Faturalama
Şema geçişi, tam veri geçişi ve genel ağ trafiği ücretsizdir. Aşağıdaki öğeler ücretlendirilir:
Incremental data migration: Çalışırken ücretlendirilir. Duraklatıldığında veya başarısız olduğunda ücretlendirilmez.
Data verification: Doğrulanan veri miktarına göre ücretlendirilir. Bkz. veri doğrulama ücretleri.
Önkoşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
5,1, 5,5, 5,6, 5,7 veya 8,0 sürümünde çalışan bir kaynak MySQL veritabanı
Kaynak veritabanından daha fazla kullanılabilir depolama alanına sahip bir hedef RDS for MySQL örneği
Aşama 1: Geçişe hazırlanın
Adım 1: DTS'nin cloud kaynaklarına erişimini yetkilendirin
Alibaba Cloud hesabınızla hızlı yetkilendirme sayfasını açın ve Authorize düğmesine tıklayın.
EntityAlreadyExists.RoleveEntityAlreadyExists.Role.Policymesajlarını görürseniz, yetkilendirme zaten tamamlanmıştır.

Adım 2: Veritabanı hesapları oluşturun
Kaynak veritabanı hesabı
Kaynak veritabanında aşağıdaki ifadeleri çalıştırın:
-- Replace dts_user and Your_Password123 with actual values.
CREATE USER 'dts_user'@'%' IDENTIFIED BY 'Your_Password123';
-- Required for schema migration and full data migration.
GRANT SELECT ON *.* TO 'dts_user'@'%';
-- Required for incremental data migration.
GRANT REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW ON *.* TO 'dts_user'@'%';
-- Required for DTS to create a heartbeat table to advance the binary log position.
GRANT CREATE ON *.* TO 'dts_user'@'%';
FLUSH PRIVILEGES;
Aşağıdaki tabloda her geçiş türü için gereken minimum izinler özetlenmiştir:
| Geçiş türü | Gerekli izinler |
|---|---|
| Şema geçişi | SELECT |
| Tam veri geçişi | SELECT |
| Artımlı veri geçişi | SELECT; REPLICATION CLIENT, REPLICATION SLAVE, SHOW VIEW; CREATE (heartbeat tablosu için) |
Hedef RDS örneği hesabı
RDS konsolunda, bölgeyi seçin ve hedef RDS örneğinin kimliğine tıklayın.
Sol gezinme bölmesinde Accounts seçeneğine tıklayın, ardından Create Account düğmesine tıklayın.
Account Type parametresini Privileged Account olarak ayarlayın ve kalan parametreleri doldurun.
Hedef hesabın, hedef RDS örneğinde okuma ve yazma izinlerine sahip olması gerekir.
Adım 3: Kaynak veritabanına erişimi yapılandırın
Kaynak veritabanı dağıtımınıza uygun erişim yöntemini seçin:
| Kaynak veritabanı | Erişim yöntemi | Yapılandırma |
|---|---|---|
| Genel IP adresi bulunan şirket içi | Public IP | DTS sunucu CIDR bloklarını kaynak veritabanı IP izin listesine ekleyin |
| Genel IP adresi bulunmayan şirket içi | Cloud Enterprise Network (CEN), Database Gateway veya VPN Gateway/Express Connect/Smart Access Gateway (SAG) | CIDR bloklarını IP izin listesine ekleyin ve seçtiğiniz yöntem için ağ erişimi yapılandırmasını tamamlayın |
| ECS örneğindeki veritabanı | ECS instance | Yapılandırma gerekmez |
Artımlı veri geçişi için ikili günlük kaydını yapılandırın
Artımlı veri geçişi yapmıyorsanız bu adımı atlayın.
Artımlı veri geçişi için kaynak veritabanında ikili günlük kaydı etkinleştirilmelidir. Aşağıdaki parametreleri yapılandırın, ardından değişikliklerin etkili olması için MySQL'i yeniden başlatın.
İkili günlük kaydı parametreleri
| Parametre | Gerekli değer | Notlar |
|---|---|---|
log_bin |
mysql_bin (veya herhangi bir yol) |
İkili günlük kaydını etkinleştirir |
binlog_format |
row |
DTS'nin satır düzeyindeki değişiklikleri yakalaması için gereklidir |
binlog_row_image |
full |
MySQL 5.6 ve sonraki sürümler için gereklidir |
server_id |
1'den büyük herhangi bir tamsayı | Çoğaltma topolojisinde benzersiz olmalıdır |
expire_logs_days |
7 veya daha fazla | 8.0 öncesi MySQL sürümleri. Varsayılan: 0 (asla sona ermez) |
binlog_expire_logs_seconds |
604800 veya daha fazla (7 gün) | MySQL 8.0 ve sonraki sürümler. Varsayılan: 2592000 (30 gün) |
log_slave_updates |
ON |
Yalnızca çift birincil kümeler için |
İkili günlükleri en az 7 gün boyunca saklayın. Saklama süresi çok kısa olursa, DTS gerekli ikili günlükleri alamayabilir ve veri tutarsızlığı veya kaybı oluşabilir.
Linux'ta yapılandırma
-
/etc/my.cnfdosyasını düzenleyin:log_bin=mysql_bin binlog_format=row # MySQL earlier than 8.0: # expire_logs_days=7 # MySQL 8.0 and later: # binlog_expire_logs_seconds=604800 server_id=2 binlog_row_image=full # Dual-primary clusters only: # log_slave_updates=ON -
MySQL'i yeniden başlatın:
/etc/init.d/mysqld restart
Windows'ta yapılandırma
-
my.inidosyasını düzenleyin:log_bin=mysql_bin binlog_format=row # MySQL earlier than 8.0: # expire_logs_days=7 # MySQL 8.0 and later: # binlog_expire_logs_seconds=604800 server_id=2 binlog_row_image=full # Dual-primary clusters only: # log_slave_updates=ON -
MySQL'i yeniden başlatın:
net stop mysql net start mysql
Aşama 2: Geçiş görevini yapılandırın
DTS konsoluna giriş yapın, sol gezinme bölmesinde Data Migration seçeneğine tıklayın, ardından Create Task düğmesine tıklayın.
-
Kaynak veritabanını ve hedef RDS örneğini yapılandırın.
Kaynak veritabanı
Parametre Değer Database Type MySQL Access Method Adım 3 bölümünde yapılandırdığınız yöntemi seçin (örneğin, Public IP) Instance Region Kaynak veritabanının bulunduğu bölge Domain Name or IP Kaynak veritabanının genel uç noktası veya IP adresi Port Kaynak veritabanının hizmet bağlantı noktası. Varsayılan: 3306 Database Account Adım 2 bölümünde oluşturulan hesap Database Password Hesabın parolası Encryption Non-encrypted SSL etkin değilse; SSL-encrypted SSL etkinse (bir CA Sertifikası yükleyin ve CA Key parametresini ayarlayın) Hedef RDS örneği
Parametre Değer Database Type MySQL Access Method Alibaba Cloud Örneği Instance Region Hedef RDS örneğinin bölgesi Replicate Data Across Alibaba Cloud Accounts Hayır RDS Instance ID Hedef RDS örneğinin kimliği Database Account Adım 2 bölümünde oluşturulan ayrıcalıklı hesap Database Password Hesabın parolası Encryption Non-encrypted veya SSL-encrypted. SSL ile şifrelenmiş seçeneğini belirlerseniz, önce hedef RDS örneğinde SSL şifrelemesini etkinleştirin Test Connectivity and Proceed düğmesine tıklayın. İletişim kutusunda Test Connectivity düğmesine tıklayın. Test başarısız olursa, devam etmeden önce hata mesajına dayanarak sorunu giderin.
-
Geçişi yapılacak nesneleri yapılandırın.
Nesneleri Yapılandır
Configure Objects sekmesinde geçiş türlerini ayarlayın ve geçişi yapılacak nesneleri seçin: Next: Advanced Settings düğmesine tıklayın.
Parametre Açıklama Migration Types Schema Migration ve Full Data Migration seçeneklerini belirleyin. Kesinti süresini en aza indirmek için Incremental Data Migration seçeneğini ekleyin. Source Objects Geçişi yapılacak veritabanlarını, tabloları veya sütunları seçin ve
simgesine tıklayarak bunları Selected Objects listesine ekleyin.Selected Objects Bir nesneyi yeniden adlandırmak veya WHERE filtresi yapılandırmak için sağ tıklayın. Birden çok nesneyi aynı anda yeniden adlandırmak için Batch Edit düğmesine tıklayın. Processing Mode of Conflicting Tables Precheck and Report Errors (varsayılan): Hedefte aynı ada sahip tablolar zaten varsa ön kontrolü başarısız kılar. Ignore Errors and Proceed: Bu kontrolü atlar; tam geçiş sırasında mevcut kayıtlar korunur, artımlı geçiş sırasında mevcut kayıtların üzerine yazılır. Method to Migrate Triggers in Source Database Hem Schema Migration hem de Incremental Data Migration seçildiğinde kullanılabilir. Bkz. Tetikleyicileri senkronize etme veya geçirme. Whether to migrate Event Kaynak veritabanından olayların geçirilip geçirilmeyeceğini belirtir. Yes seçeneğini belirlerseniz, sonraki işlemleri tamamlamanız gerekir. Daha fazla bilgi için bkz. Olayları senkronize etme veya geçirme. Enable Migration Assessment Schema Migration seçildiğinde kullanılabilir. Kaynak ve hedef şemaların (dizin uzunlukları, saklı yordamlar, bağımlı tablolar) uyumlu olup olmadığını kontrol eder. Sonuçlar ön kontrol sırasında gösterilir ancak ön kontrol sonucunu etkilemez. Capitalization of Object Names in Destination Instance Hedefteki veritabanı, tablo ve sütun adlarının büyük/küçük harf kullanımını kontrol eder. Varsayılan olarak DTS default policy seçeneği belirlenir. Bkz. Nesne adlarının büyük/küçük harf kullanımını belirtme. (İsteğe bağlı) Gelişmiş Yapılandırmalar
(İsteğe bağlı) Advanced Configurations sekmesinde ayarları ihtiyaca göre ayarlayın: Next: Data verification düğmesine tıklayın.
Parametre Açıklama Dedicated Cluster for Task Scheduling Görevler varsayılan olarak paylaşılan kümede çalışır. Geliştirilmiş kararlılık için özel küme satın alın. Copy the temporary table of the Online DDL tool Kaynakta çevrimiçi DDL için DMS veya gh-ost kullanılıyorsa: Yes geçici tablo verilerini geçirir (gecikmeyi artırabilir); No, Adapt to DMS Online DDL yalnızca orijinal DDL işlemlerini geçirir; No, Adapt to gh-ost yalnızca gh-ost'tan gelen orijinal DDL'yi geçirir. Whether to Migrate Accounts Hesap bilgilerini kaynaktan geçirir. Etkinleştirilirse, geçirilecek hesapları seçin ve hesap izinlerini doğrulayın. Retry Time for Failed Connections DTS'nin bağlantı hatasından sonra ne kadar süreyle yeniden deneyeceğini belirtir. Aralık: 10–1.440 dakika. Varsayılan: 720 dakika. En az 30 dakika olarak ayarlayın. Retry Time for Other Issues DTS'nin DDL veya DML hatalarından sonra ne kadar süreyle yeniden deneyeceğini belirtir. Aralık: 1–1.440 dakika. Varsayılan: 10 dakika. Retry Time for Failed Connections parametresinden düşük olmalıdır. Enable Throttling for Full Data Migration Kaynak veritabanına yönelik QPS'yi, tam geçiş için RPS'yi ve geçiş hızını (MB/sn) sınırlar. Veritabanı sunucularındaki yükü azaltmak için kullanın. Enable Throttling for Incremental Data Migration Artımlı geçiş için RPS'yi ve geçiş hızını (MB/sn) sınırlar. Configure ETL Çıkarma, dönüştürme ve yükleme (ETL) işlemini etkinleştirir. Bkz. ETL Yapılandırma. Monitoring and Alerting Görev başarısız olduğunda veya gecikme süresi bir eşiği aştığında uyarı gönderir. Bkz. İzleme ve uyarı yapılandırma. Whether to delete SQL operations on heartbeat tables Yes: Kaynağa heartbeat SQL yazmaz (geçiş gecikmesi görüntülenebilir). No: Kaynağa heartbeat SQL yazar (fiziksel yedekleme ve klonlamayı etkileyebilir).
Aşama 3: Ön kontrolü çalıştırın ve geçişi başlatın
Next: Save Task Settings and Precheck düğmesine tıklayın. DTS, yapılandırmanızı ve ortamınızı doğrular.
-
Ön kontrolün tamamlanmasını bekleyin:
Başarı Oranı 100% değerine ulaşırsa, ortam hazırdır. Herhangi bir uyarıyı inceleyerek risk oluşturmadığından emin olun, ardından bunları yoksayın ve devam edin.
Ön kontrol başarısız olursa, View Details düğmesine tıklayın, sorunu giderin ve ön kontrolü tekrar çalıştırın.
Next: Purchase Instance düğmesine tıklayın.
Bir Resource Group (varsayılan: default resource group) ve uygun DTS örnek teknik özelliklerini seçin.
Data Transmission Service (Pay-As-You-Go) Terms of Service'nı kabul edin, Purchase and Start düğmesine tıklayın, ardından Confirm düğmesine tıklayın. Geçiş görevi otomatik olarak başlar.
Aşama 4: Verileri doğrulayın ve devralma işlemi yapın
-
Geçiş görevinin durumunu izleyin:
Artımlı veri geçişi içermeyen görevler tamamlandığında Durum: Tamamlandı gösterir.
Artımlı veri geçişi içeren görevler Durum: Çalışıyor gösterir ve otomatik olarak sonlanmaz.
-
Tam geçiş tamamlandıktan ve artımlı geçiş gecikmesi neredeyse sıfıra ulaştıktan sonra veri tutarlılığını doğrulayın: Seçenek 1 — Otomatik doğrulama: DTS'de bir veri doğrulama görevi yapılandırın. Seçenek 2 — Manuel doğrulama: Hem kaynak veritabanında hem de hedef RDS örneğinde aşağıdaki sorguları çalıştırın ve sonuçları karşılaştırın:
-- Compare row counts SELECT COUNT(*) FROM <your_table>; -- Compare key business metrics SELECT SUM(amount) FROM orders WHERE create_time >= '2024-01-01'; -
Uygulamanızı yoğun olmayan saatlerde devralın:
Uygulamanızı durdurun.
Artımlı geçiş gecikmesinin sıfıra ulaştığını onaylayın.
Uygulamanızın veritabanı bağlantı dizelerini hedef RDS örneğinin uç noktası olarak güncelleyin.
Devralma işlemi tamamlandıktan sonra geçiş görevini serbest bırakın.
Artımlı veri geçişi için desteklenen SQL işlemleri
| İşlem türü | SQL ifadeleri |
|---|---|
| DML | INSERT, UPDATE, DELETE |
| DDL | ALTER TABLE, ALTER VIEW, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, CREATE VIEW, DROP INDEX, DROP TABLE, RENAME TABLE, TRUNCATE TABLE |
RENAME TABLE işlemleri veri tutarsızlığına neden olabilir. Geçiş sırasında bir tabloyu yeniden adlandırırsanız ve geçiş nesnesi olarak tablonun kendisini (üst veritabanını değil) seçerseniz, yeniden adlandırılan tablonun verileri geçirilmez. Bunu önlemek için veritabanını geçiş nesnesi olarak seçin ve hem yeniden adlandırmadan önceki hem de sonraki veritabanı adlarının geçiş kapsamına dahil edildiğinden emin olun.
SSS
S: DTS neden "Host 'XXX' is not allowed to connect to this MySQL server" hatasıyla bağlanamıyor?
Bu bir Java Database Connectivity (JDBC) bağlantı hatasıdır. Hesap kimlik bilgilerinin doğru olduğundan ve hesabın gerekli izinlere sahip olduğundan emin olun. Sorunu izole etmek için bağlantıyı test etmek üzere ayrıcalıklı bir hesap kullanabilirsiniz.
S: Geçiş görevi oluştururken neden Çin (Fuzhou) bölgesindeki bir RDS örneğini seçemiyorum?
DTS, Çin (Fuzhou) bölgesindeki örnekleri desteklemez. Alternatif olarak, kendi yönettiğiniz MySQL 5.7 veya 8.0 veritabanını cloud'a yedekleyebilirsiniz.