MySQL için Azure Veritabanı Geçirme - Tek Sunucu'MySQL için Azure Veritabanı - Açık kaynak araçlarla Esnek Sunucu

mydumper/myloader ve Data-in çoğaltması gibi açık kaynak araçların bir bileşimini kullanarak uygulamalarınıza en düşük kapalı kalma süresiyle MySQL için Azure Veritabanı - Tek Sunucu örneğini MySQL için Azure Veritabanı - Esnek Sunucu'ya geçirebilirsiniz.

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.

Veri girişi çoğaltması, 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ığı) güncelleştirmeleri ve değişiklikleri ikili günlüğe "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 oturum açmada yürütecek şekilde yapılandırılır.

Verileri bir MySQL için Azure Veritabanı örneğinden diğerine eşitlemek için Veri girişi çoğaltması ayarlarsanız, birincil (veya kaynak veritabanından) çoğaltmaya (veya hedef veritabanına) uygulamalarınızın seçmeli tam geçişini yapabilirsiniz.

Bu öğreticide, örnek veritabanını (klasik modeller) bir MySQL için Azure Veritabanı - Tek Sunucu örneğinden MySQL için Azure Veritabanı - Esnek Sunucu örneğine geçirmek ve ardından verileri eşitlemek için mydumper/myloader ve Data-in çoğaltmasını kullanacaksınız.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Farklı senaryolar için Veri ekleme çoğaltması için Ağ Ayarlar yapılandırın.
  • Birincil ve çoğaltma arasında Verili çoğaltmayı yapılandırın.
  • Çoğaltmayı test edin.
  • Geçişi tamamlamak için tam geçiş.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakiler gerekir:

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

    Dekont

    Tek Sunucu sürüm 5.6 MySQL için Azure Veritabanı çalıştırıyorsanız örneğinizi 5.7 sürümüne yükseltin ve ardından çoğaltmadaki verileri yapılandırın. Daha fazla bilgi edinmek için bkz. MySQL için Azure Veritabanı - Tek Sunucuda ana sürüm yükseltme.

  • MySQL için Azure Veritabanı Esnek Sunucu örneği. Daha fazla bilgi için MySQL için Azure Veritabanı Esnek Sunucuda örnek oluşturma makalesine bakın.

    Dekont

    Alanlar arası yedekli yüksek kullanılabilirlik sunucuları için Veri içi çoğaltmanın yapılandırılması desteklenmez. Hedef sunucunuz için alanlar arası yedekli HA kullanmak istiyorsanız şu adımları gerçekleştirin:

    1. Alanlar arası yedekli HA'nın etkinleştirildiği sunucuyu oluşturma
    2. HA'yi devre dışı bırakma
    3. Veri çoğaltmayı ayarlamak için makaleyi izleyin
    4. Tam geçiş sonrası Veri çoğaltma yapılandırmasını kaldırma
    5. HA'yı etkinleştirme

    GTID_Mode kaynak ve hedef sunucularda aynı ayara sahip olduğundan emin olun.

  • MySQL Workbench kullanarak bir veritabanına bağlanmak ve veritabanı oluşturmak için. Daha fazla bilgi için MySQL Workbench'i kullanarak verileri bağlama ve sorgulama makalesine bakın.

  • Kaynak ve hedef veritabanlarınızı barındıran aynı bölgede (veya özel erişimli aynı sanal ağda) Linux çalıştıran bir Azure VM'nizin olduğundan emin olmak için.

  • Mysql istemcisini veya MySQL Workbench'i (istemci araçları) Azure VM'nize yüklemek için. Hem birincil hem de çoğaltma sunucusuna bağlanabildiğinizi doğrulayın. Bu makalenin amaçları doğrultusunda mysql istemcisi yüklenir.

  • Mydumper/myloader'ı Azure VM'nize yüklemek için. Daha fazla bilgi için mydumper/myloader makalesine bakın.

  • Kaynak sunucudaki classicmodels veritabanının örnek veritabanı betiğini indirmek ve çalıştırmak için.

  • Çoğaltma değişiklikleri işlemeden önce binlog'ların temizlenmediğinden emin olmak için kaynak sunucudaki binlog_expire_logs_seconds yapılandırın. Başarılı kesme sonrasında değeri sıfırlayabilirsiniz.

Ağ gereksinimlerini yapılandırma

Veri girişi çoğaltmasını yapılandırmak için hedefin 3306 numaralı bağlantı noktası üzerinden kaynağa bağlanadığından emin olmanız gerekir. Kaynakta ayarlanan uç nokta türüne bağlı olarak, aşağıdaki uygun adımları uygulayın.

Veri çoğaltmayı yapılandırma

Çoğaltmadaki verileri yapılandırmak için aşağıdaki adımları uygulayın:

  1. mysql istemci aracını yüklediğiniz Azure VM'de oturum açın.

  2. mysql istemci aracını kullanarak kaynak ve hedefe Bağlan.

  3. Aşağıdaki komutu çalıştırarak kaynakta log_bin etkinleştirilip etkinleştirilmediğini belirlemek için mysql istemci aracını kullanın:

    SHOW VARIABLES LIKE 'log_bin';
    

    Dekont

    16 TB'a kadar destekleyen büyük depolama alanına sahip MySQL için Azure Veritabanı Tek Sunucu ile bu varsayılan olarak etkindir.

    Bahşiş

    4 TB'a kadar destekleyen MySQL için Azure Veritabanı Tek Sunucu ile bu varsayılan olarak etkinleştirilmez. Ancak, kaynak sunucu için bir okuma çoğaltması yükseltip okuma amaçlı çoğaltmayı silerseniz, parametre ON olarak ayarlanır.

  4. Kaynak sunucu için SSL zorlamasını temel alarak, uygun komutu çalıştırarak çoğaltma izniyle kaynak sunucuda bir kullanıcı oluşturun.

    SSL kullanıyorsanız aşağıdaki komutu çalıştırın:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
    

    SSL kullanmıyorsanız aşağıdaki komutu çalıştırın:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
    
  5. mydumper kullanarak veritabanını yedeklemek için mydumper\myloader'ı yüklediğimiz Azure VM'de aşağıdaki komutu çalıştırın:

    mydumper --host=<primary_server>.mysql.database.azure.com --user=<username>@<primary_server> --password=<Password> --outputdir=./backup --rows=100000 -G -E -R -z --trx-consistency-only --compress --build-empty-files --threads=16 --compress-protocol --ssl  --regex '^(classicmodels\.)' -L mydumper-logs.txt
    

    Bahşiş

    Biz yedekleme yaparken işlem tutarlılığı için --trx-consistency-only seçeneği gereklidir.

    • mysqldump'un --single-transaction değerinin mydumper eşdeğeri.
    • Tüm tablolarınız InnoDB ise kullanışlıdır.
    • "Döküm" iş parçacıkları bir işlem başlatana kadar "ana" iş parçacığının yalnızca genel kilidi tutması gerekir.
    • Genel kilitlemenin en kısa süresini sunar

    "Döküm" iş parçacıkları bir işlem başlatana kadar "ana" iş parçacığının yalnızca genel kilidi tutması gerekir.

    Bu komuttaki değişkenler aşağıda açıklanmıştır:

    HOW-TO-MANAGE-FIREWALL-PORTAL --host: Birincil sunucunun adı

    • --user: Bir kullanıcının adı (birincil sunucu MySQL için Azure Veritabanı - Tek Sunucu çalıştırdığından username@servername biçiminde). Sunucu yöneticisini veya SELECT ve RELOAD izinlerine sahip bir kullanıcıyı kullanabilirsiniz.
    • --Parola: Yukarıdaki kullanıcının parolası

    mydumper kullanma hakkında daha fazla bilgi için bkz. mydumper/myloader

  6. Aşağıdaki komutu çalıştırarak ikili günlük dosyası adını ve uzaklığını belirlemek için meta veri dosyasını okuyun:

    cat ./backup/metadata
    

    Bu komutta ,/backup, önceki adımda komutunda kullanılan çıkış dizinine başvurur.

    Sonuçlar aşağıdaki görüntüde gösterildiği gibi görünmelidir:

    Continuous sync with the Azure Database Migration Service

    Sonraki adımlarda kullanmak üzere ikili dosya adını not edin.

  7. Aşağıdaki komutu çalıştırarak myloader kullanarak veritabanını geri yükleyin:

    myloader --host=<servername>.mysql.database.azure.com --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=100 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
    

    Bu komuttaki değişkenler aşağıda açıklanmıştır:

    • --host: Çoğaltma sunucusunun adı
    • --user: Kullanıcının adı. Sunucu yöneticisini veya şemaları ve verileri veritabanına geri yükleyebilen okuma\yazma iznine sahip bir kullanıcı kullanabilirsiniz
    • --Parola: Yukarıdaki kullanıcının parolası
  8. Birincil sunucudaki SSL zorlamasına bağlı olarak, mysql istemci aracını kullanarak çoğaltma sunucusuna bağlanın ve aşağıdaki adımları uygulayın.

    • SSL zorlama etkinleştirildiyse:

      i. MySQL için Azure Veritabanı sunucunuzla SSL üzerinden iletişim kurmak için gereken sertifikayı buradan indirin.

      ii. Dosyayı not defterinde açın ve içeriği "ORTAK ANAHTAR SERTIFIKANIZIN BAĞLAMINI BURAYA YERLESTIR" bölümüne yapıştırın.

      SET @cert = '-----BEGIN CERTIFICATE-----
      PLACE YOUR PUBLIC KEY CERTIFICATE'S CONTEXT HERE
      -----END CERTIFICATE-----'
      

      iii. Çoğaltmadaki verileri yapılandırmak için aşağıdaki komutu çalıştırın:

      CALL mysql.az_replication_change_master('<Primary_server>.mysql.database.azure.com', '<username>@<primary_server>', '<Password>', 3306, '<File_Name>', <Position>, @cert);
      

      Dekont

      6. adımda elde edilen bilgilerden konumu ve dosya adını belirleyin.

    • SSL zorlama etkin değilse aşağıdaki komutu çalıştırın:

      CALL mysql.az_replication_change_master('<Primary_server>.mysql.database.azure.com', '<username>@<primary_server>', '<Password>', 3306, '<File_Name>', <Position>, ‘’);
      
  9. Çoğaltmayı çoğaltma sunucusundan başlatmak için aşağıdaki saklı yordamı çağırın.

    call  mysql.az_replication_start;
    
  10. Çoğaltma durumunu denetlemek için çoğaltma sunucusunda aşağıdaki komutu çalıştırın:

    show slave status \G;
    

    Dekont

    MySQL Workbench kullanıyorsanız \G değiştirici gerekli değildir.

    Slave_IO_Running ve Slave_SQL_Running durumu Evet ve Seconds_Behind_Master değeri 0 ise, çoğaltma iyi çalışıyor demektir. Seconds_Behind_Master çoğaltmanın ne kadar geç olduğunu gösterir. Değer 0 dışında bir değerse çoğaltma güncelleştirmeleri işliyor demektir.

Çoğaltmayı test etme (isteğe bağlı)

Veri girişi çoğaltmasının düzgün çalıştığını onaylamak için, birincil tablolardaki değişikliklerin çoğaltmaya çoğaltıldığını doğrulayabilirsiniz.

  1. Müşteriler tablosu gibi test için kullanılacak bir tablo belirleyin ve her birinde aşağıdaki komutu çalıştırarak içerdiği girdi sayısının birincil ve çoğaltma sunucularında aynı olduğunu onaylayın:

    select count(*) from customers;
    
  2. Daha sonraki karşılaştırma için giriş sayısını not edin.

    Çoğaltmayı test etmek için, birincil sunucudaki müşteri tablolarına veri eklemeyi deneyin ve ardından yeni verilerin çoğaltıldığını doğrulayın. Bu durumda, birincil sunucudaki bir tabloya iki satır ekleyecek ve çoğaltma sunucusunda çoğaltıldıklarını onaylayacaksınız.

  3. Birincil sunucudaki Müşteriler tablosunda, aşağıdaki komutu çalıştırarak satır ekleyin:

    insert  into `customers`(`customerNumber`,`customerName`,`contactLastName`,`contactFirstName`,`phone`,`addressLine1`,`addressLine2`,`city`,`state`,`postalCode`,`country`,`salesRepEmployeeNumber`,`creditLimit`) values
    (<ID>,'name1','name2','name3 ','11.22.5555','54, Add',NULL,'Add1',NULL,'44000','country',1370,'21000.00');
    
  4. Çoğaltma durumunu denetlemek için, çoğaltmanın beklendiği gibi çalıştığını onaylamak için show slave status \G öğesini çağırın.

  5. Sayımın aynı olduğunu onaylamak için çoğaltma sunucusunda aşağıdaki komutu çalıştırın:

    select count(*) from customers;
    

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

Tam geçişin başarılı olmasını sağlamak için aşağıdaki görevleri gerçekleştirin:

  1. Hedef sunucuya bağlanmak için uygun sunucu düzeyi güvenlik duvarını ve sanal ağ kurallarını yapılandırın. Portaldan kaynak ve hedef için güvenlik duvarı kurallarını karşılaştırabilirsiniz.
  2. Hedef sunucuda uygun oturum açma bilgilerini ve veritabanı düzeyi izinlerini yapılandırın. Karşılaştırmak için kaynak ve hedef sunucularda mysql.user adresinden SELECT FROM komutunu çalıştırabilirsiniz.
  3. MySQL için Azure Veritabanı Tek Sunucuya gelen tüm bağlantıların durduruldığından emin olun.

    Bahşiş

    MySQL için Azure Veritabanı Tek Sunucuyu salt okunur olarak ayarlayabilirsiniz.

  4. \G bağımlı durumunu göster komutunu çalıştırıp Seconds_Behind_Master parametresinin değerinin 0 olduğunu onaylayarak çoğaltmanın birincil değere yetişdiğinden emin olun.
  5. İstemcileri ve istemci uygulamalarını MySQL için Azure Veritabanı Esnek Sunucu'nun hedef örneğine yeniden yönlendirin.
  6. Çoğaltma sunucusundan çoğaltmayı durduracak mysql.az_replication_stop saklı yordamını çalıştırarak son tam geçişi gerçekleştirin.
  7. veri çoğaltma yapılandırmasını kaldırmak için mysql.az_replication_remove_master çağırın.

Bu noktada, uygulamalarınız yeni MySQL için Azure Veritabanı Esnek sunucusuna bağlanır ve kaynaktaki değişiklikler artık hedefe çoğaltılır. Azure portalı kullanarak MySQL için Azure Veritabanı güvenli duvarı kurallarını oluşturma ve yönetme

Sonraki adımlar