MySQL için Amazon RDS'yi veri girişi çoğaltmasını kullanarak MySQL için Azure Veritabanı geçirme

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

Önemli

MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?

Dekont

Bu makalede, Microsoft'un artık kullanmadığı köle terimi geçmektedir. Terim yazılımdan kaldırıldığında, bu makaleden kaldıracağız.

MySQL dökümü ve geri yükleme, MySQL Workbench Dışarı ve İçeri Aktarma gibi yöntemleri kullanabilir veya MySQL veritabanlarınızı esnek MySQL için Azure Veritabanı sunucuya geçirmek için Azure Veritabanı Geçiş Hizmeti. mysqldump veya mydumper ve myloader gibi açık kaynak araçların bir bileşimini ve Veri Girişi Çoğaltma ile myloader'ı kullanarak iş yüklerinizi en düşük kapalı kalma süresiyle geçirebilirsiniz.

Veri İçeri Çoğaltma, ikili günlük dosyası konum yöntemine 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 kaynaklandığı) ikili günlüğe güncelleştirmeleri ve değişiklikleri olaylar 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üğü okuyacak ve olayları çoğaltmanın yerel veritabanındaki ikili günlükte yürütecek şekilde yapılandırılır.

Kaynak MySQL sunucusundan hedef MySQL sunucusuna veri eşitlemek için Veri İçeri Çoğaltma'yı ayarlayın. Birincil veritabanından (veya kaynak veritabanından) çoğaltmaya (veya hedef veritabanına) uygulamalarınızın seçmeli tam geçişini yapabilirsiniz.

Bu öğreticide, MySQL için Amazon Relational Database Service (RDS) çalıştıran bir kaynak sunucu ile esnek MySQL için Azure Veritabanı sunucu çalıştıran bir hedef sunucu arasında Veri Girişi Çoğaltma'yı ayarlamayı öğreneceksiniz.

Performans değerlendirmeleri

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 bilgisayardan döküm veya geri yükleme işlemleri gerçekleştirin:

  • MySQL için Azure Veritabanı esnek sunucu örnekleri için istemci makinenin hedef veritabanı sunucusuyla aynı sanal ağ ve kullanılabilirlik alanında olması gerekir.
  • Kaynak Amazon RDS veritabanı örnekleri için istemci örneği, kaynak veritabanı sunucusuyla aynı Amazon Sanal Özel Bulut ve kullanılabilirlik alanında bulunmalıdır. Önceki örnekte, FTP veya SFTP gibi dosya aktarım protokollerini kullanarak döküm dosyalarını istemci makineler arasında taşıyabilir veya bunları Azure Blob Depolama yükleyebilirsiniz. Toplam geçiş süresini azaltmak için, aktarmadan önce dosyaları sıkıştırın.

İstemci kapasitesi

İstemci bilgisayar nerede olursa olsun, istenen işlemleri gerçekleştirmek için yeterli bilgi işlem, G/Ç ve ağ kapasitesi gerektirir. Genel öneriler şunlardır:

  • Döküm veya geri yükleme işlemi verilerin gerçek zamanlı olarak işlenmesini (örneğin sıkıştırma veya sıkıştırmayı kaldırma) içeriyorsa, döküm veya geri yükleme iş parçacığı başına en az bir CPU çekirdeğine sahip bir örnek sınıfı seçin.
  • İstemci örneği için yeterli ağ bant genişliği 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ğ" bölümüne bakın.
  • İstemci makinesinin depolama katmanının beklenen okuma/yazma kapasitesini sağladığından emin olun. Premium SSD depolamaya sahip bir Azure sanal makinesi kullanmanızı öneririz.

Önkoşullar

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

  • Bir döküm oluşturmak ve hedef MySQL için Azure Veritabanı esnek sunucu örneğinizde geri yükleme işlemi gerçekleştirmek için istemci bilgisayarınıza mysqlclient yükleyin.

  • Daha büyük veritabanları için, veritabanlarının paralel dökümü ve geri yüklenmesi için mydumper ve myloader'ı yükleyin.

    Dekont

    Mydumper yalnızca Linux dağıtımlarında çalıştırılabilir. Daha fazla bilgi için bkz . Mydumper'ı yükleme.

  • 5.7 veya 8.0 sürümünü çalıştıran MySQL için Azure Veritabanı esnek sunucu örneği oluşturun.

    Önemli

    Hedefiniz alanlar arası yedekli yüksek kullanılabilirliğe (HA) sahip esnek MySQL için Azure Veritabanı sunucuysa, Bu yapılandırma için Veri İçeri Çoğaltma'nın desteklenmediğini unutmayın. Geçici bir çözüm olarak, sunucu oluşturma sırasında alanlar arası yedekli HA'yı ayarlayın:

    1. Alanlar arası yedekli HA'nın etkinleştirildiği sunucuyu oluşturun.
    2. HA'yi devre dışı bırakın.
    3. Veri Çoğaltma'yı ayarlamak için makaleyi izleyin.
    4. Tam geçiş sonrasında Veri Çoğaltma yapılandırmasını kaldırın.
    5. HA'yı etkinleştirin.

Aşağıda açıklandığı gibi çeşitli parametrelerin ve özelliklerin düzgün yapılandırıldığından ve ayarlandığından emin olun:

  • Uyumluluk nedenleriyle kaynak ve hedef veritabanı sunucularının aynı MySQL sürümünde olması gerekir.
  • Her tabloda bir birincil anahtar bulunur. Tablolarda birincil anahtar olmaması çoğaltma işlemini yavaşlatabilir.
  • Kaynak ve hedef veritabanının karakter kümesinin aynı olduğundan emin olun.
  • parametresini wait_timeout makul bir zamana ayarlayın. Süre, içeri aktarmak veya geçirmek istediğiniz veri veya iş yükü miktarına bağlıdır.
  • Tüm tablolarınızın InnoDB kullandığını doğrulayın. MySQL için Azure Veritabanı esnek sunucu yalnızca InnoDB depolama altyapısını destekler.
  • Çok sayıda ikincil dizine veya büyük tabloya sahip tablolar için, geri yükleme sırasında performans ek yükü etkileri görünür. Döküm dosyalarını CREATE TABLE , deyimlerin ikincil anahtar tanımlarını içermemesi için 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, Veri İçeri Çoğaltmaya hazırlanmak için:

  • Hedef MySQL için Azure Veritabanı esnek sunucu örneğinin kaynak Amazon RDS for MySQL sunucusuna bağlantı noktası 3306 üzerinden bağlanabildiğini doğrulayın.
  • Kaynak MySQL için Amazon RDS sunucusunun 3306 numaralı bağlantı noktasında hem gelen hem de giden trafiğe izin verdiğinden emin olun.
  • Azure ExpressRoute veya Azure VPN Gateway kullanarak kaynak sunucunuza siteden siteye bağlantı sağladığınızdan emin olun. Sanal ağ oluşturma hakkında daha fazla bilgi için Azure Sanal Ağ belgelerine bakın. Ayrıca adım adım ayrıntıları içeren hızlı başlangıç makalelerine bakın.
  • Hedef MySQL için Azure Veritabanı esnek sunucu IP adresine izin vermek için kaynak veritabanı sunucunuzun ağ güvenlik gruplarını yapılandırın.

Önemli

MySQL için kaynak Amazon RDS örneği GTID_mode AÇıK olarak ayarlandıysa, esnek MySQL için Azure Veritabanı sunucunun hedef örneğinin de GTID_mode ON olarak ayarlanmış olması gerekir.

MySQL için Azure Veritabanı hedef örneğini yapılandırma

MySQL için Azure Veritabanı Esnek Sunucunun hedef örneğini yapılandırmak için( Veri İçeri Çoğaltma için hedeftir):

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

  2. Sorgu günlüğüyle slow_query_logilgili ek yükü ortadan kaldırmaya yardımcı olmak için geçiş sırasında , general_log, audit_log_enabledve query_store_capture_mode parametrelerini KAPALI olarak ayarlayın.

  3. Hedef MySQL için Azure Veritabanı esnek sunucu örneğinin işlem boyutunu en fazla 64 sanal çekirdek olacak şekilde ölçeklendirin. Bu boyut, kaynak sunucunun veritabanı dökümünü geri yüklerken daha fazla işlem kaynağı sağlar.

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

  4. Geçiş sırasında daha fazla IOPS elde etmek veya geçiş için maksimum IOPS sayısını artırmak için depolama boyutunun ölçeğini artırın.

    Dekont

    Kullanılabilir maksimum IOPS, işlem boyutuna göre belirlenir. Daha fazla bilgi için MySQL için Azure Veritabanı esnek sunucuda işlem ve depolama seçenekleri bölümündeki IOPS bölümüne bakın.

Kaynak Amazon RDS for MySQL sunucusunu yapılandırma

Veri Girişi Çoğaltmasının kaynağı olan Amazon RDS'de barındırılan MySQL sunucusunu hazırlamak ve yapılandırmak için:

  1. MySQL için kaynak Amazon RDS sunucusunda ikili günlük kaydının etkinleştirildiğini onaylayın. Otomatik yedeklemelerin etkinleştirilip etkinleştirilmediğini denetleyin veya MySQL için kaynak Amazon RDS sunucusu için okuma amaçlı bir çoğaltma olduğundan emin olun.

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

    Veri İçeri Çoğaltma ile MySQL için Azure Veritabanı esnek sunucu çoğaltma işlemini yönetmez.

  3. kaynak Amazon RDS sunucusunda ikili günlük saklamayı denetleyarak ikili günlüklerin kaç saat tutulacaklarını belirlemek için saklı yordamı çağırın mysql.rds_show_configuration :

    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 saklı yordamı çalıştırarak rds_set_configuration ikili günlüklerin istenen süre boyunca kaynak sunucuda tutulmasını sağlayın. Örneğin:

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

    Döküm oluşturup geri yüklüyorsanız, yukarıdaki komut değişiklik değişikliklerini hızla yakalamanıza yardımcı olur.

    Dekont

    Tanımlanan saklama süresine göre kaynak sunucuda ikili günlükleri depolamak için yeterli disk alanı olduğundan emin olun.

Kaynak Amazon RDS for MySQL sunucusundan veri dökümünü yakalamanın iki yolu vardır. Bir yaklaşım, doğrudan kaynak sunucudan veri dökümü yakalamayı içerir. Diğer yaklaşım ise MySQL için Amazon RDS okuma çoğaltmasından döküm yakalamayı içerir.

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

    1. İşlem açısından tutarlı bir veri dökümü almak için uygulamadan yazma işlemlerini birkaç dakika boyunca durdurduğunuzdan emin olun.

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

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

    3. MySQL için Azure Veritabanı esnek sunucu örneğinizden çoğaltmayı başlatmak için bu değerleri kaydedin.

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

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

    1. Kaynak sunucuyla aynı yapılandırmaya sahip bir Amazon MySQL okuma çoğaltması oluşturun. Ardından dökümü orada oluşturun.

    2. MySQL için Amazon RDS'nin okuma amaçlı çoğaltmasının MySQL için amazon RDS sunucusuyla yakalamasına izin verin.

    3. Okuma çoğaltması üzerinde çoğaltma gecikmesi 0'a ulaştığında saklı yordamını mysql.rds_stop_replicationçağırarak çoğaltmayı durdurun.

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

    5. MySQL için Azure Veritabanı esnek sunucu örneğinizden çoğaltmayı başlatmak için bu değerleri kaydedin.

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

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

    Dekont

    MySQL için kaynak Amazon RDS veritabanınızdan verilerinizin paralel dökümünü yakalamak için mydumper'ı da kullanabilirsiniz. Daha fazla bilgi için bkz. Mydumper/myloader kullanarak büyük veritabanlarını esnek MySQL için Azure Veritabanı sunucuya geçirme.

  1. mysql yerel geri yüklemesini kullanarak veritabanını geri yüklemek için aşağıdaki komutu çalıştırın:

    $ mysql -h <target_server> -u <targetuser> -p < dumpname.sql
    

    Dekont

    Bunun yerine myloader kullanıyorsanız bkz. Mydumper/myloader kullanarak büyük veritabanlarını MySQL için Azure Veritabanı esnek sunucuya geçirme.

  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@'%';
      

    Saklı yordamlar tüm Veri-Gelen Çoğaltma işlevlerini yapar. Tüm yordamlar hakkında bilgi için bkz . Data-in Çoğaltma saklı yordamları. Bu saklı yordamları MySQL kabuğunda veya MySQL Workbench'te çalıştırabilirsiniz.

  3. MySQL için Amazon RDS kaynak sunucusunu ve MySQL için Azure Veritabanı esnek sunucu hedef sunucusunu bağlamak için hedef MySQL için Azure Veritabanı esnek sunucu örneğinde oturum açın. Aşağıdaki komutu çalıştırarak MySQL için Amazon RDS sunucusunu 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 ile hedef MySQL için Azure Veritabanı esnek sunucu örneği arasında çoğaltma başlatmak için aşağıdaki komutu çalıştırın:

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

    Mysql> show slave status\G
    

    ve parametrelerinin Slave_IO_Running durumu Evet ise, çoğaltma başlatılmıştır ve çalışır durumdadır.Slave_SQL_Running

  6. Hedef sunucunun Seconds_Behind_Master ne kadar gecikmeli olduğunu belirlemek için parametresinin değerini denetleyin.

    Değer 0 ise, hedef kaynak sunucudan tüm güncelleştirmeleri işlemiştir. Değer 0 dışında bir değerse hedef sunucu güncelleştirmeleri işlemeye devam ediyordur.

Tam geçişin başarılı olduğundan emin olun

Tam geçişin başarılı olmasını sağlamak için:

  1. Hedef MySQL için Azure Veritabanı esnek sunucu örneğinde uygun oturum açma bilgilerini ve veritabanı düzeyinde izinleri yapılandırın.
  2. MySQL için kaynak Amazon RDS sunucusuna yazma işlemini durdurun.
  3. Hedef MySQL için Azure Veritabanı esnek sunucu örneğinin kaynak sunucuya yakalandığından ve değerinin Seconds_Behind_Master0 olduğundan show slave statusemin olun.
  4. Tüm değişiklikler hedef MySQL için Azure Veritabanı esnek sunucu örneğine çoğaltıldığı için çoğaltmayı durdurmak için saklı yordamı mysql.az_replication_stop çağırın.
  5. Data-in Çoğaltma yapılandırmasını kaldırmak için çağrısı mysql.az_replication_remove_master .
  6. İstemcileri ve istemci uygulamalarını hedef MySQL için Azure Veritabanı esnek sunucu örneğine yeniden yönlendirin.

Bu noktada geçiş tamamlanır. Uygulamalarınız esnek MySQL için Azure Veritabanı sunucu çalıştıran sunucuya bağlanır.

Sonraki adımlar

  • Veritabanlarını esnek MySQL için Azure Veritabanı sunucuya geçirme hakkında daha fazla bilgi için bkz. Veritabanı Geçiş Kılavuzu.
  • MySQL/PostgreSQL uygulamalarını Azure yönetilen hizmetine kolayca geçirme videosunu görüntüleyin. MySQL uygulamalarının esnek MySQL için Azure Veritabanı sunucuya nasıl geçirildiğini gösteren bir tanıtım içerir.