MariaDB (MySQL) kümesi: Azure öğreticisi

Önemli

Klasik VM 'Ler 1 Mart 2023 ' de kullanımdan kaldırılacaktır.

IaaS kaynaklarını ASM 'den kullanıyorsanız, lütfen geçişinizi 1 Mart 2023 ' den tamamlayabilirsiniz. Azure Resource Manager ' deki pek çok özellik geliştirmelerinden faydalanmak için anahtarı daha önce bir daha erken yapmanız önerilir.

Daha fazla bilgi için bkz. IaaS kaynaklarınızı 1 mart 2023 ' e kadar Azure Resource Manager geçirme.

Not

Azure 'da kaynak oluşturmak ve bunlarla çalışmak için iki farklı dağıtım modeli vardır: Azure Resource Manager ve klasik. Bu makale, klasik dağıtım modelini kapsamaktadır. Microsoft, en yeni dağıtımların Azure Resource Manager modelini kullanmasını önerir.

Not

MariaDB kurumsal kümesi artık Azure Marketi 'nde kullanılabilir. Yeni teklif Azure Resource Manager bir MariaDB Galera kümesini otomatik olarak dağıtır. Yeni teklifi Azure Marketi'nden kullanmanız gerekir.

Bu makalede, Azure sanal makineler 'de yüksek oranda kullanılabilir bir ortamda çalışmak üzere Mariadbs (MySQL için sağlam, ölçeklenebilir ve güvenilir bir bırakma değişikliği) Için çok yöneticili bir Galera kümesi oluşturma işleminin nasıl yapılacağı gösterilir.

Mimariye genel bakış

Bu makalede, aşağıdaki adımların nasıl tamamlanacağı açıklanmaktadır:

  • Üç düğümlü bir küme oluşturun.
  • Veri disklerini işletim sistemi diskinden ayırın.
  • IOPS 'yi artırmak için RAID-0/şeritli ayarda veri diskleri oluşturun.
  • Üç düğümün yükünü dengelemek için Azure Load Balancer kullanın.
  • Yinelenen çalışmayı en aza indirmek için, MariaDB + Galera içeren bir VM görüntüsü oluşturun ve diğer küme VM 'lerini oluşturmak için bunu kullanın.

Sistem mimarisi

Not

Bu konu, Azure CLI araçlarını kullanır, bu nedenle bunları indirdiğinizden ve yönergelere göre Azure aboneliğinize bağlamaya emin olun. Azure CLı 'de bulunan komutlara yönelik bir başvuruya ihtiyacınız varsa bkz. Azure CLI komut başvurusu. Ayrıca, kimlik doğrulaması için SSH anahtarı oluşturma ve. ped dosya konumunu bilmeniz gerekecektir.

Şablonu oluşturma

Altyapı

  1. Kaynakları birlikte tutmak için bir benzeşim grubu oluşturun.

     azure account affinity-group create mariadbcluster --location "North Europe" --label "MariaDB Cluster"
    
  2. Sanal ağ oluşturun.

     azure network vnet create --address-space 10.0.0.0 --cidr 8 --subnet-name mariadb --subnet-start-ip 10.0.0.0 --subnet-cidr 24 --affinity-group mariadbcluster mariadbvnet
    
  3. Tüm disklerimizi barındırmak için bir depolama hesabı oluşturun. 20.000 ıOPS depolama hesabı sınırına ulaşmaktan kaçınmak için aynı depolama hesabında 40 ' den fazla kullanılmış Disk yerleştirmemeniz gerekir. Bu durumda, bu sınırın her ikisi de, kolaylık sağlamak için her şeyi aynı hesapta depolayacaksınız.

     azure storage account create mariadbstorage --label mariadbstorage --affinity-group mariadbcluster
    
  4. CentOS 7 sanal makine görüntüsünün adını bulun.

     azure vm image list | findstr CentOS
    

    Çıktı 5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20140926gibi bir şey olacaktır.

    Aşağıdaki adımda bu adı kullanın.

  5. VM şablonunu oluşturun ve/Path/to/Key.exe öğesini oluşturulan. pek SSH anahtarını depoladığınız yol ile değiştirin.

     azure vm create --virtual-network-name mariadbvnet --subnet-names mariadb --blob-url "http://mariadbstorage.blob.core.windows.net/vhds/mariadbhatemplate-os.vhd"  --vm-size Medium --ssh 22 --ssh-cert "/path/to/key.pem" --no-ssh-password mariadbtemplate 5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20140926 azureuser
    
  6. RAID yapılandırmasında kullanmak üzere VM 'ye 4 500 GB veri diski ekleyin.

     FOR /L %d IN (1,1,4) DO azure vm disk attach-new mariadbhatemplate 512 http://mariadbstorage.blob.core.windows.net/vhds/mariadbhatemplate-data-%d.vhd
    
  7. Mariadbhatemplate.cloudapp.net:22 adresinde oluşturduğunuz şablon VM 'de oturum açmak ve özel anahtarınızı kullanarak bağlanmak için SSH kullanın.

Yazılım

  1. Kök alın.

     sudo su
    
  2. RAID desteğini yükler:

    a. Mdaddm 'yi yükler.

           yum install mdadm
    

    b. Bir EXT4 dosya sistemiyle RAID0/Stripe yapılandırmasını oluşturun.

           mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=4 /dev/sdc /dev/sdd /dev/sde /dev/sdf
           mdadm --detail --scan >> /etc/mdadm.conf
           mkfs -t ext4 /dev/md0
    

    c. Bağlama noktası dizinini oluşturun.

           mkdir /mnt/data
    

    d. Yeni oluşturulan RAID cihazının UUID 'sini alın.

           blkid | grep /dev/md0
    

    e. /Etc/fstaba 'yi düzenleyin.

           vi /etc/fstab
    

    f. Yeniden başlatma sırasında otomatik bağlama özelliğini etkinleştirmek için cihazı ekleyin ve UUID 'yi, önceki blkıd komutundan elde edilen değerle değiştirin.

           UUID=<UUID FROM PREVIOUS>   /mnt/data ext4   defaults,noatime   1 2
    

    g. Yeni bölümü bağlayın.

           mount /mnt/data
    
  3. MariaDB 'yi yükler.

    a. MariaDB. repo dosyasını oluşturun.

             vi /etc/yum.repos.d/MariaDB.repo
    

    b. Depo dosyasını aşağıdaki içerikle doldur:

           [mariadb]
           name = MariaDB
           baseurl = http://yum.mariadb.org/10.0/centos7-amd64
           gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
           gpgcheck=1
    

    c. Çakışmaları önlemek için mevcut sonek ve MariaDB-libs 'leri kaldırın.

        yum remove postfix mariadb-libs-*
    

    d. MariaDB 'yi Galera ile birlikte yüklemelisiniz.

        yum install MariaDB-Galera-server MariaDB-client galera
    
  4. MySQL veri dizinini RAID blok cihazına taşıyın.

    a. Geçerli MySQL dizinini yeni konumuna kopyalayın ve eski dizini kaldırın.

        cp -avr /var/lib/mysql /mnt/data  
        rm -rf /var/lib/mysql
    

    b. Yeni dizin için izinleri uygun şekilde ayarlayın.

        chown -R mysql:mysql /mnt/data && chmod -R 755 /mnt/data/
    

    c. Eski dizini RAID bölümünde yeni konuma işaret eden bir oluşturmaksızın oluşturun.

        ln -s /mnt/data/mysql /var/lib/mysql
    
  5. SELinux küme işlemlerini kesintiye uğradığıiçin, geçerli oturum için devre dışı bırakmak gereklidir. Sonraki yeniden başlatmalarda devre dışı bırakmak için /etc/selinux/config düzenleyin.

         setenforce 0
    
         then editing `/etc/selinux/config` to set `SELINUX=permissive`
    
  6. MySQL çalıştırmalarını doğrulayın.

    a. MySQL 'i başlatın.

        service mysql start
    

    b. MySQL yüklemesini güvenli hale getirme, kök parolasını ayarlama, anonim kullanıcıları kaldırma, uzak kök oturumu devre dışı bırakma ve test veritabanını kaldırma.

        mysql_secure_installation
    

    c. Küme işlemleri için veritabanında ve isteğe bağlı olarak uygulamalarınız için bir kullanıcı oluşturun.

        mysql -u root -p
        GRANT ALL PRIVILEGES ON *.* TO 'cluster'@'%' IDENTIFIED BY 'p@ssw0rd' WITH GRANT OPTION; FLUSH PRIVILEGES;
        exit
    

    d. MySQL 'i durdurun.

         service mysql stop
    
  7. Yapılandırma yer tutucusu oluşturun.

    a. Küme ayarları için bir yer tutucu oluşturmak üzere MySQL yapılandırmasını düzenleyin. <Variables> değiştirme veya Şimdi açıklama kaldırma. Bu şablondan bir VM oluşturduktan sonra bu işlem gerçekleşir.

         vi /etc/my.cnf.d/server.cnf
    

    b. Galera bölümünü düzenleyin ve temizleyin.

    c. [MariaDB] bölümünü düzenleyin.

        wsrep_provider=/usr/lib64/galera/libgalera_smm.so
        binlog_format=ROW
        wsrep_sst_method=rsync
        bind-address=0.0.0.0 # When set to 0.0.0.0, the server listens to remote connections
        default_storage_engine=InnoDB
        innodb_autoinc_lock_mode=2
    
        wsrep_sst_auth=cluster:p@ssw0rd # CHANGE: Username and password you created for the SST cluster MySQL user
        #wsrep_cluster_name='mariadbcluster' # CHANGE: Uncomment and set your desired cluster name
        #wsrep_cluster_address="gcomm://mariadb1,mariadb2,mariadb3" # CHANGE: Uncomment and Add all your servers
        #wsrep_node_address='<ServerIP>' # CHANGE: Uncomment and set IP address of this server
        #wsrep_node_name='<NodeName>' # CHANGE: Uncomment and set the node name of this server
    
  8. CentOS 7 üzerinde FirewallD kullanarak güvenlik duvarında gerekli bağlantı noktalarını açın.

    • MySQL: firewall-cmd --zone=public --add-port=3306/tcp --permanent
    • GALERA: firewall-cmd --zone=public --add-port=4567/tcp --permanent
    • GALERA IST: firewall-cmd --zone=public --add-port=4568/tcp --permanent
    • RSYNC: firewall-cmd --zone=public --add-port=4444/tcp --permanent
    • Güvenlik duvarını yeniden yükleme: firewall-cmd --reload
  9. Sistemi performans için iyileştirin. Daha fazla bilgi için bkz. performans ayarlama stratejisi.

    a. MySQL yapılandırma dosyasını yeniden düzenleyin.

         vi /etc/my.cnf.d/server.cnf
    

    b. [MariaDB] bölümünü düzenleyin ve aşağıdaki içeriği ekleyin:

    Not

    InnoDB_buffer_pool_size sanal makinenizin belleğinin yüzde 70 ' ünü kullanmanızı öneririz. Bu örnekte, 16 GB RAM 3,5 ile orta Azure VM 'si için 2,45 GB olarak ayarlanmıştır.

        innodb_buffer_pool_size = 2508M # The buffer pool contains buffered data and the index. This is usually set to 70 percent of physical memory.
        innodb_log_file_size = 512M #  Redo logs ensure that write operations are fast, reliable, and recoverable after a crash
        max_connections = 5000 # A larger value will give the server more time to recycle idled connections
        innodb_file_per_table = 1 # Speed up the table space transmission and optimize the debris management performance
        innodb_log_buffer_size = 128M # The log buffer allows transactions to run without having to flush the log to disk before the transactions commit
        innodb_flush_log_at_trx_commit = 2 # The setting of 2 enables the most data integrity and is suitable for Master in MySQL cluster
        query_cache_size = 0
    
  10. MySQL 'i durdurun, bir düğüm eklerken kümeyi bozmamak ve makinenin sağlamasını kaldırmak için MySQL hizmetinin başlangıçta çalıştırılmasını devre dışı bırakın.

     service mysql stop
     chkconfig mysql off
     waagent -deprovision
    
  11. Portal üzerinden VM 'yi yakalayın. (Şu anda, Azure CLI araçlarında #1268 sorun , Azure CLI araçları tarafından yakalanan görüntülerin ekli veri disklerini yakalamamasının bir olgusunu anlatmaktadır.)

    a. Makineyi Portal üzerinden kapatın.

    b. Yakala ' ya tıklayın ve görüntü adını MariaDB-Galera-Imageolarak belirtin. Bir açıklama girin ve "waagent 'ı çalıştırdım" olup olmadığını denetleyin.

    Sanal makineyi yakala

Kümeyi oluşturma

Oluşturduğunuz şablonla üç VM oluşturun ve ardından kümeyi yapılandırıp başlatın.

  1. Oluşturduğunuz MariaDB-Galera-Image görüntüsünden ilk CentOS 7 sanal makinesini oluşturun, aşağıdaki bilgileri sağlar:
  • Sanal ağ adı: mariadbvnet

  • Alt ağ: MariaDB

  • Makine boyutu: Orta

  • Bulut hizmeti adı: mariadbha (veya mariadbha.cloudapp.net üzerinden erişmek istediğiniz herhangi bir ad)

  • Makine adı: mariadb1

  • Kullanıcı adı: azureuser

  • SSH erişimi: etkin

  • SSH sertifikası. ped dosyası geçiliyor ve/Path/to/Key.exe öğesini oluşturulan. pek SSH anahtarını depoladığınız yolla değiştiriyor.

    Not

    Aşağıdaki komutlar, açıklık açısından birden çok satıra bölünür, ancak her birini tek bir satır olarak girmeniz gerekir.

     azure vm create
     --virtual-network-name mariadbvnet
     --subnet-names mariadb
     --availability-set clusteravset
     --vm-size Medium
     --ssh-cert "/path/to/key.pem"
     --no-ssh-password
     --ssh 22
     --vm-name mariadb1
     mariadbha mariadb-galera-image azureuser
    
  1. Mariadbha bulut hizmetine bağlanarak iki sanal makine oluşturun. VM adını ve SSH bağlantı noktasını aynı bulut hizmetindeki diğer VM 'lerle çakışmayan benzersiz bir bağlantı noktasıyla değiştirin.

     azure vm create
     --virtual-network-name mariadbvnet
     --subnet-names mariadb
     --availability-set clusteravset
     --vm-size Medium
     --ssh-cert "/path/to/key.pem"
     --no-ssh-password
     --ssh 23
     --vm-name mariadb2
     --connect mariadbha mariadb-galera-image azureuser
    

MariaDB3 için:

    azure vm create
    --virtual-network-name mariadbvnet
    --subnet-names mariadb
    --availability-set clusteravset
    --vm-size Medium
    --ssh-cert "/path/to/key.pem"
    --no-ssh-password
    --ssh 24
    --vm-name mariadb3
    --connect mariadbha mariadb-galera-image azureuser
  1. Sonraki adımda üç VM 'nin her birinin iç IP adresini almanız gerekir:

    IP adresi alınıyor

  2. Üç VM 'de oturum açmak ve bunların her birinde yapılandırma dosyasını düzenlemek için SSH kullanın.

     sudo vi /etc/my.cnf.d/server.cnf
    

    Satırın başındaki # kaldırarak wsrep_cluster_name ve wsrep_cluster_address açıklamasını kaldırın. Ayrıca, wsrep_node_address ve wsrep_node_name <NodeName> <ServerIP> yerine sanal makinenin IP adresi ve adıyla değiştirin ve bu çizgilerin de açıklamasını kaldırın.

  3. MariaDB1 üzerinde kümeyi başlatın ve başlangıçta çalışmasına izin verin.

     sudo service mysql bootstrap
     chkconfig mysql on
    
  4. MariaDB2 ve MariaDB3 üzerinde MySQL başlatın ve başlangıçta çalışmasına izin verin.

     sudo service mysql start
     chkconfig mysql on
    

Kümenin yükünü dengelemek

Kümelenmiş VM 'Leri oluşturduğunuzda, bunları farklı hata ve güncelleştirme etki alanlarına yerleştirdiklerinden ve Azure 'un aynı anda tüm makinelerde hiçbir zaman bakım gerektirmediğinden emin olmak için kümeavset adlı bir kullanılabilirlik kümesine eklediniz. Bu yapılandırma, Azure hizmet düzeyi sözleşmesi (SLA) tarafından desteklenen gereksinimleri karşılar.

Şimdi üç düğüm arasındaki istekleri dengelemek için Azure Load Balancer kullanın.

Azure CLı kullanarak makinenizde aşağıdaki komutları çalıştırın.

Komut parametreleri yapısı: azure vm endpoint create-multiple <MachineName> <PublicPort>:<VMPort>:<Protocol>:<EnableDirectServerReturn>:<Load Balanced Set Name>:<ProbeProtocol>:<ProbePort>

azure vm endpoint create-multiple mariadb1 3306:3306:tcp:false:MySQL:tcp:3306
azure vm endpoint create-multiple mariadb2 3306:3306:tcp:false:MySQL:tcp:3306
azure vm endpoint create-multiple mariadb3 3306:3306:tcp:false:MySQL:tcp:3306

CLı, yük dengeleyici araştırma aralığını 15 saniyeye ayarlar ve bu da biraz uzun sürebilir. Portalda herhangi bir VM 'nin uç noktaları altında değiştirin.

Uç noktayı düzenle

Yük dengeli kümeyi yeniden yapılandır' ı seçin.

Yük dengeli kümeyi yeniden yapılandırın

Yoklama aralığını 5 saniyeye değiştirin ve değişikliklerinizi kaydedin.

Araştırma aralığını değiştir

Kümeyi doğrulama

Sabit iş yapılır. Küme artık mariadbha.cloudapp.net:3306adresinden erişilebilir olmalıdır. Bu, yük dengeleyiciyi ve üç VM arasında sorunsuz ve verimli bir şekilde rota isteklerini ziyaret etmelidir.

Bu kümenin çalıştığını doğrulamak için, en sevdiğiniz MySQL istemcinizi kullanarak VM 'lerden birine bağlanın veya bunlardan birine bağlanın.

 mysql -u cluster -h mariadbha.cloudapp.net -p

Sonra bir veritabanı oluşturun ve verileri bazı verilerle doldurun.

CREATE DATABASE TestDB;
USE TestDB;
CREATE TABLE TestTable (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255));
INSERT INTO TestTable (value)  VALUES ('Value1');
INSERT INTO TestTable (value)  VALUES ('Value2');
SELECT * FROM TestTable;

Oluşturduğunuz veritabanı aşağıdaki tabloyu döndürür:

+----+--------+
| id | value  |
+----+--------+
|  1 | Value1 |
|  4 | Value2 |
+----+--------+
2 rows in set (0.00 sec)

Sonraki adımlar

Bu makalede, CentOS 7 çalıştıran Azure sanal makinelerinde üç düğümlü bir MariaDB + Galera yüksek kullanılabilir kümesi oluşturdunuz. VM 'Ler Azure Load Balancer ile yük dengedir.

Azure Linux VM 'lerinde MySQL performansını en üst düzeye çıkarmak ve testetmek için başka bir yönteme bakmak isteyebilirsiniz.