Aracılığıyla paylaş


MySQL için Azure Veritabanı yapılandırma - Esnek Sunucu verisi çoğaltması

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

Bu makalede, kaynak ve çoğaltma sunucularını yapılandırarak esnek MySQL için Azure Veritabanı sunucuda Veri çoğaltmanın nasıl ayarlanacağı açıklanmaktadır. Bu makalede, MySQL sunucuları ve veritabanlarıyla ilgili daha önce deneyim sahibi olduğunuz varsayılır.

Not

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 için Azure Veritabanı esnek sunucu örneğinde çoğaltma oluşturmak için, Veri girişi çoğaltması şirket içi, sanal makinelerde (VM) veya bulut veritabanı hizmetlerindeki bir kaynak MySQL sunucusundan verileri eşitler. Veri girişi çoğaltması, ikili günlük (binlog) dosya konumu tabanlı çoğaltma veya GTID tabanlı çoğaltma kullanılarak yapılandırılabilir. Binlog çoğaltması hakkında daha fazla bilgi edinmek için bkz . MySQL Çoğaltma.

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

Çoğaltma olarak kullanılacak MySQL için Azure Veritabanı esnek sunucu örneği oluşturma

  1. Esnek MySQL için Azure Veritabanı sunucusunun yeni bir örneğini oluşturun (örneğin, replica.mysql.database.azure.com). Sunucu oluşturmak için Azure portalını kullanarak MySQL için Azure Veritabanı esnek sunucu örneği oluşturma bölümüne bakın. Bu sunucu, Verili çoğaltma için "çoğaltma" sunucusudur.

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

    Kullanıcı hesapları kaynak sunucudan çoğaltma sunucusuna çoğaltılamaz. Kullanıcılara çoğaltma sunucusuna erişim sağlamayı planlıyorsanız, yeni oluşturulan bu MySQL için Azure Veritabanı esnek sunucu örneğinde tüm hesapları ve ilgili ayrıcalıkları el ile oluşturmanız gerekir.

Kaynak MySQL sunucusunu yapılandırma

Aşağıdaki adımlar şirket içinde, bir sanal makinede veya diğer bulut sağlayıcıları tarafından barındırılan veritabanı hizmetinde Barındırılan MySQL sunucusunu Veri girişi çoğaltması için hazırlayıp yapılandırmaktadır. Bu sunucu, Veri gelen çoğaltması için "kaynak"tır.

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

  2. Ağ Gereksinimleri

    • Kaynak sunucunun 3306 numaralı bağlantı noktasında hem gelen hem de giden trafiğe izin verdiğinden ve 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.

    • Özel erişim (VNet Tümleştirmesi) kullanılıyorsa, Kaynak sunucu ile çoğaltma sunucusunun barındırıldığı sanal ağ arasında bağlantınız olduğundan emin olun.

    • ExpressRoute veya VPN kullanarak şirket içi kaynak sunucularınıza siteden siteye bağlantı sağladığınızdan emin olun. Sanal ağ oluşturma hakkında daha fazla bilgi için Sanal Ağ Belgeleri'ne ve özellikle adım adım ayrıntıları içeren hızlı başlangıç makalelerine bakın.

    • Çoğaltma sunucusunda özel erişim (VNet Tümleştirmesi) kullanılıyorsa ve kaynağınız Azure VM ise sanal ağdan sanal ağa bağlantının kurulduğuna emin olun. VNet-Vnet eşlemesi desteklenir. Sanal ağlar arasında sanal ağdan sanal ağa bağlantı gibi farklı bölgelerde iletişim kurmak için diğer bağlantı yöntemlerini de kullanabilirsiniz. Daha fazla bilgi için bkz . Sanal Ağdan Sanal Ağa VPN ağ geçidi

    • Sanal ağ Ağ Güvenlik Grubu kurallarınızın 3306 numaralı giden bağlantı noktasını engellemediğinden emin olun (MySQL Azure VM'de çalışıyorsa da gelen). Sanal ağ NSG trafiğini filtreleme hakkında ayrıntılı bilgi için Ağ güvenlik grupları ile ağ trafiğini filtreleme makalesine bakın.

    • Kaynak sunucunuzun güvenlik duvarı kurallarını çoğaltma sunucusu IP adresine izin verecek şekilde yapılandırın.

  3. Bin-log konumunu veya GTID tabanlı veri girişi çoğaltmasını kullanmak isteyip istemediğinize bağlı olarak uygun adımları izleyin.

    Aşağıdaki komutu çalıştırarak kaynakta ikili günlük kaydının etkinleştirilip etkinleştirilmediğini denetleyin:

    SHOW VARIABLES LIKE 'log_bin';
    

    Değişken log_bin "ON" değeriyle döndürülürse, sunucunuzda ikili günlük etkinleştirilir.

    "KAPALI" değeriyle döndürülürse log_bin ve kaynak sunucunuz şirket içinde veya yapılandırma dosyasına (my.cnf) erişebileceğiniz sanal makinelerde çalışıyorsa, aşağıdaki adımları izleyebilirsiniz:

    1. Kaynak sunucuda MySQL yapılandırma dosyanızı (my.cnf) bulun. Örneğin: /etc/my.cnf

    2. Düzenlemek için yapılandırma dosyasını açın ve dosyadaki mysqld bölümünü bulun.

    3. mysqld bölümünde aşağıdaki satırı ekleyin:

      log-bin=mysql-bin.log
      
    4. Değişikliklerin etkili olması için kaynak sunucuda MySQL hizmetini yeniden başlatın (veya Yeniden Başlat).

    5. Sunucu yeniden başlatıldıktan sonra, önceki sorguyla aynı sorguyu çalıştırarak ikili günlük kaydının etkinleştirildiğini doğrulayın:

      SHOW VARIABLES LIKE 'log_bin';
      
  4. Kaynak sunucu ayarlarını yapılandırın.

    Veri ekleme çoğaltması, parametrenin lower_case_table_names kaynak ve çoğaltma sunucuları arasında tutarlı olmasını gerektirir. Bu parametre, esnek MySQL için Azure Veritabanı sunucuda varsayılan olarak 1'dir.

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

    Kaynak sunucuda çoğaltma ayrıcalıklarıyla yapılandırılmış bir kullanıcı hesabı oluşturun. Bu, SQL komutları veya MySQL Workbench gibi bir araç aracılığıyla yapılabilir. Kullanıcı oluşturulurken bunun belirtilmesi gerekeceği için SSL ile çoğaltmayı planlayıp planlamayabileceğinizi düşünün. Kaynak sunucunuza kullanıcı hesaplarının nasıl ekleneceğini anlamak için MySQL belgelerine bakın.

    Aşağıdaki komutlarda, oluşturulan yeni çoğaltma rolü kaynağa yalnızca kaynağı barındıran makineden değil, herhangi bir makineden erişebilir. Bu, create user komutunda "syncuser@'%'" belirtilerek yapılır. Hesap adlarını belirtme hakkında daha fazla bilgi edinmek için MySQL belgelerine bakın.

    SSL ile çoğaltma

    Tüm kullanıcı bağlantıları için SSL istemek için aşağıdaki komutu kullanarak 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 kullanın:

    CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
    GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';
    
  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şleyemeyecektir. İşletmenizin etkisini değerlendirin ve gerekirse salt okunur pencereyi yoğun olmayan bir zamanda zamanlayın.

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

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

    show master status;
    

    Sonuçlar aşağıdakine benzer görünmelidir. Sonraki adımlarda kullanmak üzere ikili dosya adını not edin.

    Ana Durum Sonuçları


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

  1. Hangi veritabanlarını ve tabloları esnek MySQL için Azure Veritabanı sunucuya çoğaltmak istediğinizi belirleyin ve kaynak sunucudan dökümü gerçekleştirin.

    Mysqldump kullanarak birincil sunucunuzdan veritabanlarını döküm edebilirsiniz. Ayrıntılar için Döküm ve Geri Yükleme'ye bakın. MySQL kitaplığının ve test kitaplığının dökümünü almak gereksizdir.

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

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

    SET GLOBAL read_only = OFF;
    UNLOCK TABLES;
    

    Not

    Sunucu yeniden okuma/yazma moduna geçmeden önce, genel değişken GTID_EXECUTED kullanarak GTID bilgilerini alabilirsiniz. Bu, çoğaltma sunucusunda GTID'yi ayarlamak için sonraki aşamada kullanılacaktır.

  3. Döküm dosyasını yeni sunucuya geri yükleyin.

    Döküm dosyasını esnek MySQL için Azure Veritabanı sunucuda oluşturulan sunucuya geri yükleyin. Döküm dosyasını Bir MySQL sunucusuna geri yükleme için Döküm ve Geri Yükleme'ye bakın. Döküm dosyası büyükse, çoğaltma sunucunuzla aynı bölgedeki Azure'daki bir sanal makineye yükleyin. Sanal makineden MySQL için Azure Veritabanı esnek sunucu örneğine geri yükleyin.

Not

Dökümü alıp geri yüklerken veritabanını salt okunur olarak ayarlamaktan kaçınmak istiyorsanız mydumper/myloader kullanabilirsiniz.

Çoğaltma Sunucusunda GTID'yi ayarlama

  1. Bin-log konum tabanlı çoğaltma kullanıyorsanız adımı atlayın

  2. Hedef (çoğaltma) sunucusunun GTID geçmişini sıfırlamak için kaynaktan alınan döküm dosyasındaki GTID bilgileri gereklidir.

  3. Aşağıdaki CLI komutunu kullanarak çoğaltma sunucusunda GTID sıfırlamasını yürütmek için kaynaktan bu GTID bilgilerini kullanın:

    az mysql flexible-server gtid reset --resource-group  <resource group> --server-name <replica server name> --gtid-set <gtid set from the source server> --subscription <subscription id>
    

Daha fazla ayrıntı için bkz . GTID Sıfırlama.

Not

Coğrafi yedeklilik yedeklemesi etkinleştirilmiş bir sunucuda GTID sıfırlaması gerçekleştirilemez. Sunucuda GTID sıfırlaması gerçekleştirmek için coğrafi yedekliliği devre dışı bırakın. GTID sıfırlaması sonrasında Coğrafi yedeklilik seçeneğini yeniden etkinleştirebilirsiniz. GTID sıfırlama eylemi tüm kullanılabilir yedeklemeleri geçersiz kılır ve bu nedenle Coğrafi yedeklilik yeniden etkinleştirildikten sonra, coğrafi geri yüklemenin sunucuda gerçekleştirilmesi bir gün sürebilir

  1. Kaynak sunucuyu ayarlayın.

    Tüm Verili çoğaltma işlevleri saklı yordamlar tarafından 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, MySQL için Azure Veritabanı hizmetinde hedef çoğaltma sunucusunda oturum açın ve dış örneği kaynak sunucu olarak ayarlayın. Bu, MySQL için Azure Veritabanı sunucusunda veya mysql.az_replication_change_master_with_gtid saklı yordamı kullanılarak mysql.az_replication_change_master yapılır.

    CALL mysql.az_replication_change_master('<master_host>', '<master_user>', '<master_password>', <master_port>, '<master_log_file>', <master_log_pos>, '<master_ssl_ca>');
    
    CALL mysql.az_replication_change_master_with_gtid('<master_host>', '<master_user>', '<master_password>', <master_port>,'<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_port: Kaynak sunucunun bağlantıları dinlediği bağlantı noktası numarası. (3306, MySQL'in dinlediği varsayılan bağlantı noktasıdır)
    • 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_ssl_ca: CA sertifikasının bağlamı. SSL kullanmıyorsanız, boş dizeyi geçirin.

    Bu parametrenin bir değişken olarak geçirilmesi önerilir. Daha fazla bilgi için aşağıdaki örnekleri ziyaret edin.

    Not

    • Kaynak sunucu bir Azure VM'de barındırılıyorsa, kaynak ve çoğaltma sunucularının birbirleriyle iletişim kurmasına izin vermek için "Azure hizmetlerine erişime izin ver" seçeneğini "ON" olarak ayarlayın. Bu ayar, Bağlantı güvenliği seçeneklerinden değiştirilebilir. Daha fazla bilgi için bkz . Portalı kullanarak güvenlik duvarı kurallarını yönetme.
    • Veritabanının dökümünü almak için mydumper/myloader kullandıysanız /backup/metadata dosyasından master_log_file ve master_log_pos alabilirsiniz.

    Örnekler

    SSL ile çoğaltma

    Değişkeni @cert aşağıdaki MySQL komutları çalıştırılarak oluşturulur:

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

    SSL ile çoğaltma, "companya.com" etki alanında barındırılan bir kaynak sunucu ile MySQL için Azure Veritabanı esnek sunucuda 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, 'mysql-bin.000002', 120, @cert);
    
    CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, @cert);
    

    SSL olmadan çoğaltma

    SSL olmadan çoğaltma, "companya.com" etki alanında barındırılan bir kaynak sunucu ile MySQL için Azure Veritabanı esnek sunucuda 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, 'mysql-bin.000002', 120, '');
    
    CALL mysql.az_replication_change_master_with_gtid('master.companya.com', 'syncuser', 'P@ssword!', 3306, '');
    
  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;
    

    Çoğaltmanın doğru durumunu öğrenmek için, izleme sayfası altında çoğaltma ölçümleri - Çoğaltma GÇ Durumu ve Çoğaltma SQL Durumu'na bakın.

    Seconds_Behind_Master"0" ise, çoğaltma düzgün çalışıyor. Seconds_Behind_Master çoğaltmanın ne kadar geç olduğunu gösterir. Değer "0" değilse, çoğaltma güncelleştirmeleri işliyor demektir.

Veri içinde çoğaltma işlemleri için diğer yararlı 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 hatalarını atla

Çoğaltma hatasını atlamak ve çoğaltmanın devam etmesi için aşağıdaki saklı yordamı kullanın:

CALL mysql.az_replication_skip_counter;
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos][LIMIT [offset,] row_count]

İkili günlük sonuçlarını göster

Sonraki adımlar

  • Esnek MySQL için Azure Veritabanı sunucu için veri çoğaltma hakkında daha fazla bilgi edinin.