Gelen Verileri Çoğaltma kullanarak MySQL için Amazon RDS for MySQL için Azure veritabanı 'na geçirme

AŞAĞıDAKILER IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu MySQL için Azure Veritabanı - Esnek Sunucu

Not

Bu makale, Microsoft 'un artık kullandığı bir terim olan bağımlı dönem başvuruları içerir. Terim yazılımlardan kaldırıldığında, bu makaleden kaldıracağız.

MySQL veritabanlarınızı MySQL için Azure veritabanı 'na geçirmek için MySQL dump ve restore, MySQL bir dışarı aktarma ve Içeri aktarma veya Azure veritabanı geçiş hizmeti gibi yöntemleri kullanabilirsiniz. Mysqldump veya mydumper gibi açık kaynaklı araçların bir birleşimini veya Gelen Verileri Çoğaltma ile myloader kullanarak iş yüklerinizi en düşük kapalı kalma süresiyle geçirebilirsiniz.

Gelen Verileri Çoğaltma, ikili günlük dosyası konumu metoduna göre kaynak sunucudan hedef sunucuya veri değişikliklerini çoğaltan bir tekniktir. Bu senaryoda, kaynak olarak çalışan MySQL örneği (veritabanı değişikliklerinin kaynağı), güncelleştirmeleri ve değişiklikleri ikili günlüğe olay olarak yazar. İkili günlükteki bilgiler, kaydedilen veritabanı değişikliklerine göre farklı günlük biçimlerinde depolanır. Çoğaltmalar, kaynaktan ikili günlüğü okumak ve çoğaltmanın yerel veritabanındaki ikili günlükteki olayları yürütmek üzere yapılandırılır.

Bir kaynak MySQL sunucusundan hedef MySQL sunucusuna veri eşitlemesi için gelen verileri çoğaltma ayarlarsanız, uygulamalarınızın birincil (veya kaynak veritabanı), çoğaltmaya (veya hedef veritabanına) seçmeli bir tam geçişi yapabilirsiniz.

Bu öğreticide, MySQL için Amazon Ilişkisel veritabanı hizmeti (RDS) çalıştıran bir kaynak sunucu ve MySQL için Azure veritabanı 'nı çalıştıran bir hedef sunucu arasında Gelen Verileri Çoğaltma ayarlamayı öğreneceksiniz.

Performansla ilgili önemli noktalar

Bu öğreticiye başlamadan önce, işlemi gerçekleştirmek için kullanacağınız istemci bilgisayarın konumunun ve kapasitesinin performans etkilerini göz önünde bulundurun.

İstemci konumu

Veritabanı sunucusuyla aynı konumda başlatılan bir istemci bilgisayarından döküm veya geri yükleme işlemleri gerçekleştirin:

  • MySQL sunucuları için Azure veritabanı için, istemci makinenin hedef veritabanı sunucusuyla aynı sanal ağda ve aynı Kullanılabilirlik bölgesinde olması gerekir.
  • Kaynak Amazon RDS veritabanı örnekleri için istemci örneğinin, kaynak veritabanı sunucusuyla aynı Amazon sanal özel bulutu ve kullanılabilirlik bölgesinde bulunması gerekir. önceki durumda, FTP veya sftp gibi dosya aktarım protokollerini kullanarak ve bu dosyaları Azure Blob Depolama yükleyebilirsiniz. Toplam geçiş süresini azaltmak için, dosyaları aktarmadan önce sıkıştırın.

İstemci kapasitesi

İstemci bilgisayarın nerede bulunduğuna bakılmaksızın, istenen işlemleri gerçekleştirmek için yeterli işlem, g/ç ve ağ kapasitesi gerektirir. Genel öneriler şunlardır:

  • Döküm veya geri yükleme, verilerin gerçek zamanlı işlenmesini (örneğin, sıkıştırma veya açma) içeriyorsa, döküm veya geri yükleme iş parçacığı başına en az bir CPU çekirdeği olan bir örnek sınıfı seçin.
  • İstemci örneği için kullanılabilir ağ bant genişliğinin yeterli olduğundan emin olun. Hızlandırılmış ağ özelliğini destekleyen örnek türlerini kullanın. Daha fazla bilgi için Azure sanal makine ağ Kılavuzu'Ndaki "hızlandırılmış ağ oluşturma" bölümüne bakın.
  • İstemci makinesinin depolama katmanının beklenen okuma/yazma kapasitesini sağladığından emin olun. Premium SSD depolama ile bir Azure sanal makinesi kullanmanızı öneririz.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakileri yapmanız gerekir:

  • Döküm oluşturmak için istemci bilgisayarınıza mysqlclient yükleyin ve hedef Azure veritabanı Için Azure veritabanı sunucusunda bir geri yükleme işlemi gerçekleştirin.

  • Daha büyük veritabanları için, veritabanlarını paralel olarak dökme ve geri yükleme için mydumper ve myloader yükleyin.

    Not

    Mydumper yalnızca Linux dağıtımları üzerinde çalışabilir. Daha fazla bilgi için bkz. mydumper nasıl yüklenir.

  • MySQL için Azure veritabanı sunucusu 'nun 5,7 veya 8,0 sürümünü çalıştıran bir örneğini oluşturun.

    Önemli

    Hedefiniz, bölge yedekli yüksek kullanılabilirliğe sahip (HA) MySQL için Azure veritabanı ise, bu yapılandırma için Gelen Verileri Çoğaltma desteklenmediğini unutmayın. Geçici bir çözüm olarak, sunucu oluşturma sırasında bölge yedekli HA ayarlama:

    1. Bölgesel olarak yedekli HA etkin sunucu oluşturun.
    2. HA 'yi devre dışı bırakın.
    3. Gelen Verileri Çoğaltma ayarlamak için makaleyi izleyin.
    4. Cutover sonrası Gelen Verileri Çoğaltma yapılandırmayı kaldırın.
    5. HA 'yi etkinleştirin.

Birçok parametre ve özelliğin yapılandırıldığından ve doğru şekilde kurulduğundan emin olun; örneğin:

  • Uyumluluk nedenleriyle, kaynak ve hedef veritabanı sunucularının aynı MySQL sürümüne sahip olmasını sağlayabilirsiniz.
  • Her tabloda bir birincil anahtar olmalıdır. Tablolarda birincil anahtarların bulunmaması çoğaltma işlemini yavaşlatabilir.
  • Kaynak ve hedef veritabanının karakter kümesinin aynı olduğundan emin olun.
  • wait_timeoutParametreyi makul bir zamana ayarlayın. Bu süre, içeri veya geçiş yapmak istediğiniz veri miktarına veya iş yüküne bağlıdır.
  • Tüm tablolarınızın InnoDB kullanbildiğini doğrulayın. MySQL için Azure veritabanı sunucusu yalnızca InnoDB depolama altyapısını destekler.
  • Çok sayıda ikincil dizin veya büyük olan tablolar için, performans yükünün etkileri geri yükleme sırasında görülebilir. Döküm dosyalarını, CREATE TABLE deyimlerin ikincil anahtar tanımlarını içermediği şekilde değiştirin. Verileri içeri aktardıktan sonra, geri yükleme işlemi sırasında performans cezasından kaçınmak için ikincil dizinleri yeniden oluşturun.

Son olarak, Gelen Verileri Çoğaltma hazırlanmak için:

  • MySQL sunucusunun hedef Azure veritabanı 'nın 3306 numaralı bağlantı noktası üzerinden MySQL için kaynak Amazon RDS sunucusuna bağlanabildiğini doğrulayın.
  • MySQL sunucusunun kaynak Amazon RDS, bağlantı noktası 3306 ' de gelen ve giden trafiğe izin verdiğinden emin olun.
  • Azure ExpressRoute veya Azure VPN Gatewaykullanarak kaynak sunucunuza siteden siteye bağlantı sağladığınızdan emin olun. Sanal ağ oluşturma hakkında daha fazla bilgi için bkz. Azure sanal ağ belgeleri. Ayrıca adım adım ayrıntılar ile hızlı başlangıç makalelerine bakın.
  • Kaynak veritabanı sunucunuzun ağ güvenlik gruplarını, MySQL 'in sunucu IP adresi için hedef Azure veritabanı 'na izin verecek şekilde yapılandırın.

Önemli

MySQL için kaynak Amazon RDS örneği açık GTID_mode ayarlandıysa, MySQL için Azure veritabanı esnek sunucusu 'nun hedef örneğinde de GTID_mode açık olarak ayarlanmış olması gerekir.

MySQL için Azure veritabanı 'nın hedef örneğini yapılandırma

Gelen Verileri Çoğaltma hedefi olan MySQL için Azure veritabanı 'nın hedef örneğini yapılandırmak için:

  1. max_allowed_packetParametre değerini, 1 GB olan 1073741824 üst sınırına ayarlayın. Bu değer, uzun satırlarla ilgili tüm taşma sorunlarını önler.

  2. slow_query_log general_log audit_log_enabled query_store_capture_mode Sorgu günlüğü ile ilgili ek yükü ortadan kaldırmaya yardımcı olmak için, geçiş sırasında,, ve parametrelerini kapalı olarak ayarlayın.

  3. MySQL için hedef Azure veritabanı sunucusunun işlem boyutunu en fazla 64 sanal çekirdek olarak ölçeklendirin. Bu boyut, veritabanı dökümünü kaynak sunucudan geri yüklerken daha fazla işlem kaynağı sağlar.

    Geçiş tamamlandıktan sonra, uygulama taleplerinizi karşılamak için her zaman işlem ölçeğini ölçeklendirebilirsiniz.

  4. Geçiş sırasında daha fazla ıOPS almak için depolama boyutunu ölçeklendirin veya geçiş için maksimum ıOPS 'yi artırın.

    Not

    Kullanılabilir maksimum ıOPS, işlem boyutuna göre belirlenir. Daha fazla bilgi için, MySQL Için Azure veritabanı-esnek sunucu 'Da işlem ve depolama SEÇENEKLERINDEIOPS bölümüne bakın.

MySQL Server için kaynak Amazon RDS 'yi yapılandırma

Gelen Verileri Çoğaltma kaynağı olan Amazon RDS Içinde barındırılan MySQL sunucusunu hazırlamak ve yapılandırmak için:

  1. Kaynak Amazon for MySQL Server 'da ikili günlüğün etkin olduğunu doğrulayın. Otomatik yedeklemelerin etkin olduğundan emin olun veya MySQL Server için kaynak Amazon RDS için bir okuma çoğaltmasının mevcut olduğundan emin olun.

  2. Kaynak sunucudaki ikili günlük dosyalarının, MySQL için Azure veritabanı hedef örneğine değişiklikler uygulanana kadar korunmayacağından emin olun.

    Gelen Verileri Çoğaltma, MySQL için Azure veritabanı çoğaltma işlemini yönetmez.

  3. Kaynak Amazon RDS sunucusunda ikili günlük tutma işlemini denetlemek için, ikili günlüklerin tutulduğu saat sayısını tespit etmek üzere mysql.rds_show_configuration saklı yordamı çağırın:

    mysql> call mysql.rds_show_configuration;
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | name                   | value | description                                                                                               |
    +------------------------+-------+-----------------------------------------------------------------------------------------------------------+
    | binlog retention hours | 24    | binlog retention hours specifies the duration in hours before binary logs are automatically deleted.      |
    | source delay           | 0     | source delay specifies replication delay in seconds between current instance and its master.              |
    | target delay           | 0     | target delay specifies replication delay in seconds between current instance and its future read-replica. |
    +------------------------+-------            +-----------------------------------------------------------------------------------------------------------+
    3 rows in set (0.00 sec)
    
  4. İkili günlük saklama süresini yapılandırmak için, rds_set_configuration ikili günlüklerin istenen süre boyunca kaynak sunucuda tutulmasını sağlamak için saklı yordamı çalıştırın. Örnek:

    Mysql> Call mysql.rds_set_configuration(‘binlog retention hours', 96);
    

    Bir döküm oluşturuyor ve sonra geri yüklüyorsanız, yukarıdaki komut, Delta değişikliklerini hızla hızlı bir şekilde yakalemenize yardımcı olur.

    Not

    İkili günlükleri, tanımlanan bekletme dönemine göre kaynak sunucuda depolamak için yeterli disk alanı olduğundan emin olun.

MySQL sunucusu için kaynak Amazon RDS 'den verilerin dökümünü yakalamak için iki yol vardır. Bir yaklaşım, doğrudan kaynak sunucudan verilerin dökümünü yakalama ile ilgilidir. Diğer yaklaşım, MySQL için bir Amazon RDS okuma çoğaltması için bir döküm yakalamaya yöneliktir.

  • Kaynak sunucudan doğrudan veri dökümünü yakalamak için:

    1. Verilerin işlemsel olarak tutarlı bir dökümünü almak için uygulama yazma işlemlerini birkaç dakika durdurduğunuzdan emin olun.

      Ayrıca, read_only bir veri dökümünü yakalarken yazma işlemlerinin işlenmemesi için parametreyi geçici olarak 1 değerine ayarlayabilirsiniz.

    2. Kaynak sunucuda yazma işlemlerini durdurduktan sonra, komutunu çalıştırarak ikili günlük dosyası adını ve sapmasını toplayın Mysql> Show master status; .

    3. MySQL Server için Azure veritabanından Çoğaltmaya başlamak için bu değerleri kaydedin.

    4. Verilerin dökümünü oluşturmak için mysqldump aşağıdaki komutu çalıştırarak yürütün:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      
  • Kaynak sunucuda yazma işlemleri durduğunda bir seçenek yoksa veya döküm verilerinin performansı kaynak sunucuda kabul edilemez değilse, bir çoğaltma sunucusunda bir döküm yakalayın:

    1. Kaynak sunucuyla aynı yapılandırmaya sahip bir Amazon MySQL Read çoğaltması oluşturun. Daha sonra döküm oluştur.

    2. MySQL için Amazon RDS 'in, MySQL sunucusu için kaynak Amazon RDS tarafından okunmasını sağlayın.

    3. Çoğaltma gecikmesi okuma çoğaltmasında 0 ' a ulaştığında, saklı yordamı çağırarak çoğaltmayı durdurun mysql.rds_stop_replication .

      Mysql> call mysql.rds_stop_replication;
      
    4. Çoğaltma durdurulduğunda, çoğaltmaya bağlanın. Ardından, SHOW SLAVE STATUS Relay_Master_Log_File alanından geçerli ikili günlük dosyası adını ve Exec_Master_Log_Pos alanından günlük dosyası konumunu almak için komutunu çalıştırın.

    5. MySQL Server için Azure veritabanından Çoğaltmaya başlamak için bu değerleri kaydedin.

    6. MySQL için Amazon RDS tarafından okunan verilerin dökümünü oluşturmak için mysqldump aşağıdaki komutu çalıştırarak yürütün:

      $ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
      

    Not

    Mydumper ' i kullanarak, MySQL için kaynak Amazon RDS veritabanının paralel bir dökümünü de yakalayabilirsiniz. Daha fazla bilgi için bkz. mydumper/myloader kullanarak büyük veritabanlarını MySQL Için Azure veritabanı 'Na geçirme.

  1. MySQL Native restore kullanarak veritabanını geri yüklemek için şu komutu çalıştırın:

    $ mysql -h <target_server> -u <targetuser> -p < dumpname.sql
    
  2. MySQL için kaynak Amazon RDS sunucusunda oturum açın ve bir çoğaltma kullanıcısı ayarlayın. Ardından bu kullanıcıya gerekli ayrıcalıkları verin.

    • SSL kullanıyorsanız, aşağıdaki komutları çalıştırın:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL; 
      Mysql> SHOW GRANTS FOR syncuser@'%';
      
    • SSL kullanmıyorsanız aşağıdaki komutları çalıştırın:

      Mysql> CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword';
      Mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%'; 
      Mysql> SHOW GRANTS FOR syncuser@'%';
      

    Tüm Gelen Verileri Çoğaltma işlevleri saklı yordamlar tarafından yapılır. Tüm yordamlar hakkında daha fazla bilgi için bkz. gelen verileri çoğaltma saklı yordamları. Bu saklı yordamları MySQL kabuğu veya MySQL çalışma ekranı 'nda çalıştırabilirsiniz.

  3. MySQL için Amazon kaynak sunucusu ve MySQL için Azure veritabanı hedef sunucusu ' nu bağlamak için, hedef MySQL için Azure veritabanı sunucusunda oturum açın. Aşağıdaki komutu çalıştırarak MySQL için Amazon Server 'ı kaynak sunucu olarak ayarlayın:

    CALL mysql.az_replication_change_master('source_server','replication_user_name','replication_user_password',3306,'<master_bin_log_file>',master_bin_log_position,'<master_ssl_ca>');
    
  4. MySQL için kaynak Amazon RDS sunucusu ve hedef Azure veritabanı sunucusu arasında çoğaltmayı başlatmak için aşağıdaki komutu çalıştırın:

    Mysql> CALL mysql.az_replication_start;
    
  5. Çoğaltmanın durumunu denetlemek için, Çoğaltma sunucusunda aşağıdaki komutu çalıştırın:

    Mysql> show slave status\G
    

    Slave_IO_RunningVe Slave_SQL_Running parametrelerinin durumu Evet ise, çoğaltma başlatılır ve çalışır durumda olur.

  6. Seconds_Behind_MasterHedef sunucunun ne kadar gecikdiğini öğrenmek için parametresinin değerini denetleyin.

    Değer 0 ise, hedef, kaynak sunucudan tüm güncelleştirmeleri işledi. Değer 0 dışında bir şeydir, hedef sunucu güncelleştirmeleri işlemeye devam eder.

Başarılı bir tam geçişi sağlayın

Başarılı bir cutover sağlamak için:

  1. MySQL için hedef Azure veritabanı sunucusunda uygun oturum açma bilgilerini ve veritabanı düzeyinde izinleri yapılandırın.
  2. MySQL için kaynak Amazon RDS sunucusuna yazma işlemlerini durdurun.
  3. MySQL için hedef Azure veritabanı sunucusunun kaynak sunucuyla ve Seconds_Behind_Master değerin 0 ' dan olduğundan emin olun show slave status .
  4. mysql.az_replication_stopTüm değişiklikler MySQL sunucusu için hedef Azure veritabanı 'na çoğaltıldığından çoğaltmayı durdurmak için saklı yordamı çağırın.
  5. mysql.az_replication_remove_masterGelen verileri çoğaltma yapılandırmasını kaldırmak için çağırın.
  6. İstemcileri ve istemci uygulamaları, MySQL için Azure veritabanı sunucusuna yeniden yönlendirin.

Bu noktada, geçiş tamamlanmıştır. Uygulamalarınız, MySQL için Azure veritabanı 'nı çalıştıran sunucuya bağlanır.

Sonraki adımlar