Aracılığıyla paylaş


MariaDB için Azure Veritabanı'da Veri İçi Çoğaltmayı Yapılandırma

Önemli

MariaDB için Azure Veritabanı kullanımdan kaldırılıyor. MySQL için Azure Veritabanı geçiş yapmanızı kesinlikle öneririz. MySQL için Azure Veritabanı geçiş hakkında daha fazla bilgi için bkz. MariaDB için Azure Veritabanı ne oluyor?.

Bu makalede, kaynak ve çoğaltma sunucularını yapılandırarak MariaDB için Azure Veritabanı'da Veri Çoğaltma'nın nasıl ayarlanacağı açıklanır. Bu makalede MariaDB sunucuları ve veritabanlarıyla ilgili daha önce deneyim sahibi olduğunuz varsayılır.

MariaDB için Azure Veritabanı hizmetinde çoğaltma oluşturmak için, Veri İçeri Çoğaltma şirket içi, sanal makinelerde (VM) veya bulut veritabanı hizmetlerindeki bir kaynak MariaDB sunucusundan verileri eşitler. Gelen Verileri Çoğaltma, MariaDB’de yerel olan ikili günlük (binlog) dosya konumuna dayalı çoğaltmayı temel alır. Binlog çoğaltması hakkında daha fazla bilgi edinmek için bkz. binlog çoğaltmasına genel bakış.

Bu makaledeki adımları gerçekleştirmeden önce Veri çoğaltmasının sınırlamalarını ve gereksinimlerini gözden geçirin.

Dekont

Kaynak sunucunuz sürüm 10.2 veya daha yeniyse, Genel İşlem Kimliği'ni kullanarak Gelen Veri Çoğaltma'yı ayarlamanızı öneririz.

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.

Çoğaltma olarak kullanmak için MariaDB sunucusu oluşturma

  1. Yeni bir MariaDB için Azure Veritabanı sunucusu oluşturun (örneğin, replica.mariadb.database.azure.com). Sunucu, Veri İçeri Çoğaltma'daki çoğaltma sunucusudur.

    Sunucu oluşturma hakkında bilgi edinmek için bkz. Azure portalını kullanarak MariaDB için Azure Veritabanı sunucusu oluşturma.

    Önemli

    MariaDB için Azure Veritabanı sunucusunu Genel Amaçlı veya Bellek için İyileştirilmiş fiyatlandırma katmanlarında oluşturmanız gerekir.

  2. Aynı kullanıcı hesaplarını ve ilgili ayrıcalıkları oluşturun.

    Kullanıcı hesapları kaynak sunucudan çoğaltma sunucusuna çoğaltılamaz. Çoğaltma sunucusuna kullanıcı erişimi sağlamak için, yeni oluşturulan MariaDB için Azure Veritabanı sunucusunda tüm hesapları ve ilgili ayrıcalıkları el ile oluşturmanız gerekir.

  3. Kaynak sunucunun IP adresini çoğaltmanın güvenlik duvarı kurallarına ekleyin.

    Azure portalını veya Azure CLI’yı kullanarak güvenlik duvarı kurallarını güncelleştirin.

Kaynak sunucuyu yapılandırma

Aşağıdaki adımlar şirket içinde, VM'de veya bulut veritabanı hizmetinde barındırılan MariaDB sunucusunu Veri İçinde Çoğaltma için hazırlayıp yapılandırmaktadır. MariaDB sunucusu, Veri İçeri Çoğaltma'daki kaynaktır.

  1. Devam etmeden önce birincil sunucu gereksinimlerini gözden geçirin.

  2. Kaynak sunucunun 3306 numaralı bağlantı noktasında hem gelen hem de giden trafiğe izin verdiğinden ve kaynak sunucunun genel IP adresine sahip olduğundan, DNS'nin genel olarak erişilebilir olduğundan veya tam etki alanı adına (FQDN) sahip olduğundan emin olun.

    Başka bir makinede barındırılan MySQL komut satırı gibi bir araçtan veya Azure portalında bulunan Azure Cloud Shell'den bağlanmayı deneyerek kaynak sunucuya bağlantıyı test edin.

    Kuruluşunuzun katı güvenlik ilkeleri varsa ve kaynak sunucudaki tüm IP adreslerinin Azure'dan kaynak sunucunuza iletişimi etkinleştirmesine izin vermiyorsa, MariaDB için Azure Veritabanı sunucunuzun IP adresini belirlemek için aşağıdaki komutu kullanabilirsiniz.

    1. MySQL komut satırı gibi bir araç kullanarak MariaDB için Azure Veritabanı oturum açın.

    2. Aşağıdaki sorguyu yürütür.

      SELECT @@global.redirect_server_host;
      

      Aşağıda bazı örnek çıkışlar verilmiştir:

      +-----------------------------------------------------------+
      | @@global.redirect_server_host                             |
      +-----------------------------------------------------------+
      | e299ae56f000.tr1830.westus1-a.worker.database.windows.net |
       +-----------------------------------------------------------+
      
    3. MySQL komut satırından çıkın.

    4. IP adresini almak için ping yardımcı programı içinde aşağıdakini yürütebilirsiniz.

      ping <output of step 2b>
      

      Örneğin:

      C:\Users\testuser> ping e299ae56f000.tr1830.westus1-a.worker.database.windows.net
      Pinging tr1830.westus1-a.worker.database.windows.net (**11.11.111.111**) 56(84) bytes of data.
      
    5. Kaynak sunucunuzun güvenlik duvarı kurallarını, önceki adımın çıkış ip adresini 3306 numaralı bağlantı noktasına içerecek şekilde yapılandırın.

    Dekont

    Bu IP adresi bakım/dağıtım işlemleri nedeniyle değişebilir. Bu bağlantı yöntemi yalnızca 3306 bağlantı noktasında tüm IP adreslerine izin veremeyen müşteriler içindir.

  3. İkili günlük kaydını açın.

    İkili günlük kaydının birincilde etkinleştirilip etkinleştirilmediğini görmek için aşağıdaki komutu girin:

    SHOW VARIABLES LIKE 'log_bin';
    

    Değişken log_bin değerini ONdöndürürse, sunucunuzda ikili günlük etkinleştirilir.

    değerini döndürürselog_bin, my.cnf dosyasını log_bin=ON düzenleyerek ikili günlüğü OFFaçın. Değişikliğin etkili olması için sunucuyu yeniden başlatın.

  4. Kaynak sunucu ayarlarını yapılandırın.

    Gelen Veri Çoğaltma, parametresinin lower_case_table_names kaynak ve çoğaltma sunucuları arasında tutarlı olmasını gerektirir. lower_case_table_names parametresi varsayılan olarak MariaDB için Azure Veritabanı olarak ayarlanır1.

    SET GLOBAL lower_case_table_names = 1;
    
  5. Yeni bir çoğaltma rolü oluşturun ve izinleri ayarlayın.

    Kaynak sunucuda çoğaltma ayrıcalıklarıyla yapılandırılmış bir kullanıcı hesabı oluşturun. SQL komutlarını veya MySQL Workbench'i kullanarak hesap oluşturabilirsiniz. SSL ile çoğaltmayı planlıyorsanız, kullanıcı hesabını oluştururken bunu belirtmeniz gerekir.

    Kaynak sunucunuza kullanıcı hesapları eklemeyi öğrenmek için MariaDB belgelerine bakın.

    Yeni çoğaltma rolü aşağıdaki komutları kullanarak kaynağa yalnızca kaynağı barındıran makineden değil herhangi bir makineden erişebilir. Bu erişim için, kullanıcı oluşturmak için komutta syncuser@'%' belirtin.

    MariaDB belgeleri hakkında daha fazla bilgi edinmek için bkz . Hesap adlarını belirtme.

    SQL komutu

    • SSL ile çoğaltma

      Tüm kullanıcı bağlantıları için SSL istemek için aşağıdaki komutu girerek bir kullanıcı oluşturun:

      CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
      GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;
      
    • SSL olmadan çoğaltma

      Tüm bağlantılar için SSL gerekli değilse, kullanıcı oluşturmak için aşağıdaki komutu girin:

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

    MySQL Workbench

    MySQL Workbench'te çoğaltma rolünü oluşturmak için Yönetim bölmesinde Kullanıcılar ve Ayrıcalıklar'ı seçin. Ardından Hesap Ekle'yi seçin.

    Users and Privileges

    Oturum Açma Adı alanına bir kullanıcı adı girin.

    Sync user

    Yönetici Istrative Roles panelini seçin ve ardından Genel Ayrıcalıklar listesinde Çoğaltma Bağımlı'yı seçin. Çoğaltma rolünü oluşturmak için Uygula'yı seçin.

    Replication Slave

  6. Kaynak sunucuyu salt okunur moda ayarlayın.

    Veritabanının dökümünü almadan önce sunucunun salt okunur moda yerleştirilmesi gerekir. Salt okunur moddayken, kaynak herhangi bir yazma işlemini işleyemez. İş üzerindeki etkiyi önlemeye yardımcı olmak için yoğun olmayan bir zamanda salt okunur pencereyi zamanlayın.

    FLUSH TABLES WITH READ LOCK;
    SET GLOBAL read_only = ON;
    
  7. Geçerli ikili günlük dosyası adını ve uzaklığını alın.

    Geçerli ikili günlük dosyası adını ve uzaklığını belirlemek için komutunu show master statusçalıştırın.

    show master status;
    

    Sonuçlar aşağıdaki tabloya benzer olmalıdır:

    Master Status Results

    sonraki adımlarda kullanılacağından ikili dosya adını not edin.

  8. GTID konumunu alın (isteğe bağlı, GTID ile çoğaltma için gereklidir).

    İlgili binlog dosya adı ve uzaklığı için GTID konumunu almak için işlevini BINLOG_GTID_POS çalıştırın.

    select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    

Kaynak sunucunun dökümünü al ve geri yükle

  1. Kaynak sunucudan tüm veritabanlarının dökümünü alın.

    Kaynak sunucudan tüm veritabanlarını döküm etmek için mysqldump kullanın. MySQL kitaplığının ve test kitaplığının dökümünü almak gerekli değildir.

    Daha fazla bilgi için bkz . Döküm ve geri yükleme.

  2. Kaynak sunucuyu okuma/yazma moduna ayarlayın.

    Veritabanı boşaltıldıktan sonra kaynak MariaDB sunucusunu yeniden okuma/yazma moduna geçirin.

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    
  3. Döküm dosyasını yeni sunucuya geri yükleyin.

    Döküm dosyasını MariaDB için Azure Veritabanı hizmetinde oluşturulan sunucuya geri yükleyin. Döküm dosyasını MariaDB sunucusuna geri yükleme hakkında bilgi dökümü ve geri yükleme bölümüne bakın.

    Döküm dosyası büyükse, çoğaltma sunucunuzla aynı bölge içinde Azure'daki bir VM'ye yükleyin. VM'den MariaDB için Azure Veritabanı sunucusuna geri yükleyin.

  1. Kaynak sunucuyu ayarlayın.

    Tüm VeriLi çoğaltma işlevleri saklı yordamlarla gerçekleştirilir. Tüm yordamları Data-in Çoğaltma Saklı Yordamları'nda bulabilirsiniz. Saklı yordamlar MySQL kabuğunda veya MySQL Workbench'te çalıştırılabilir.

    İki sunucuyu bağlamak ve çoğaltmayı başlatmak için MariaDB için Azure DB hizmetinde hedef çoğaltma sunucusunda oturum açın. Ardından, MariaDB için Azure DB sunucusundaki veya mysql.az_replication_change_master_with_gtid saklı yordamını mysql.az_replication_change_master kullanarak dış örneği kaynak sunucu olarak ayarlayın.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', 3306, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    

    veya

    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', 3306, '<master_gtid_pos>', '<master_ssl_ca>');
    
    • master_host: Kaynak sunucunun ana bilgisayar adı
    • master_user: kaynak sunucu için kullanıcı adı
    • master_password: Kaynak sunucu için parola
    • master_log_file: ikili günlük dosyası adı çalıştırılıyor show master status
    • master_log_pos: ikili günlük konumunun çalıştırılması show master status
    • master_gtid_pos: GTID konumunun çalışması select BINLOG_GTID_POS('<binlog file name>', <binlog offset>);
    • master_ssl_ca: CA sertifikasının bağlamı. SSL kullanmıyorsanız boş bir dize geçirin.*

    *master_ssl_ca parametresini değişken olarak geçirmenizi öneririz. Daha fazla bilgi için aşağıdaki örneklere bakın.

    Örnekler

    • SSL ile çoğaltma

      Aşağıdaki komutları çalıştırarak değişkeni @cert oluşturun:

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

      SSL ile çoğaltma, etki alanı companya.com barındırılan bir kaynak sunucu ile MariaDB için Azure Veritabanı içinde barındırılan bir çoğaltma sunucusu arasında ayarlanır. Bu saklı yordam çoğaltmada çalıştırılır.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert);
      
    • SSL olmadan çoğaltma

      SSL olmadan çoğaltma, etki alanı companya.com barındırılan bir kaynak sunucu ile MariaDB için Azure Veritabanı'de barındırılan bir çoğaltma sunucusu arasında ayarlanır. Bu saklı yordam çoğaltmada çalıştırılır.

      CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, '');
      
  2. Çoğaltmayı başlatın.

    Çoğaltmayı mysql.az_replication_start başlatmak için saklı yordamı çağırın.

    CALL mysql.az_replication_start;
    
  3. Çoğaltma durumunu denetleyin.

    show slave status Çoğaltma durumunu görüntülemek için çoğaltma sunucusunda komutunu çağırın.

    show slave status;
    

    ve Slave_SQL_Running durumundaysa Slave_IO_Running yesve değeri Seconds_Behind_Master ise 0çoğaltma çalışıyor. Seconds_Behind_Master çoğaltmanın ne kadar geç olduğunu gösterir. Değer değilse 0, çoğaltma güncelleştirmeleri işliyor demektir.

  4. Veri girişi çoğaltmasını daha güvenli hale getirmek için ilgili sunucu değişkenlerini güncelleştirin (yalnızca GTID olmadan çoğaltma için gereklidir).

    MariaDB'deki yerel çoğaltma sınırlaması nedeniyle, GTID senaryosu olmadan çoğaltmada ve sync_relay_log_info değişkenlerini ayarlamanız sync_master_info gerekir.

    Veri çoğaltmasının kararlı olduğundan emin olmak için çoğaltma sunucunuzun sync_master_info ve sync_relay_log_info değişkenlerini denetleyin ve değişkenleri olarak 1ayarlayın.

Diğer saklı yordamlar

Çoğaltmayı durdurma

Kaynak ve çoğaltma sunucusu arasında çoğaltmayı durdurmak için aşağıdaki saklı yordamı kullanın:

CALL mysql.az_replication_stop;

Çoğaltma ilişkisini kaldırma

Kaynak ve çoğaltma sunucusu arasındaki ilişkiyi kaldırmak için aşağıdaki saklı yordamı kullanın:

CALL mysql.az_replication_remove_master;

Çoğaltma hatasını atla

Çoğaltma hatasını atlamak ve çoğaltmaya izin vermek için aşağıdaki saklı yordamı kullanın:

CALL mysql.az_replication_skip_counter;

Sonraki adımlar

MariaDB için Azure Veritabanı için Veri Çoğaltma hakkında daha fazla bilgi edinin.