ProxySQL, Ubuntu 16.04 üzerinde MySQL için Yük Dengeleyici Olarak Nasıl Kullanılır

Giriş

ProxySQL açık kaynaklı bir MySQL proxy sunucusudur, yani MySQL sunucusu ile veritabanlarına erişen uygulamalar arasında aracı olarak hizmet eder. ProxySQL, trafiği birden çok veritabanı sunucusu havuzu arasında paylaşarak performansı artırabilir ve ayrıca bir veya daha fazla veritabanı sunucusu başarısız olursa otomatik olarak bekleme durumuna düşerek kullanılabilirliği artırır.

Bu kılavuzda, otomatik olarak yük devretme özelliğine sahip birden fazla MySQL sunucusu için ProxySQL'i bir yük dengeleyici olarak kuracaksınız. Örnek olarak, bu öğretici, üç adet MySQL sunucusundan oluşan çok-birincil çoğaltılmış bir küme kullanır, ancak diğer küme yapılandırmalarında da benzer bir yaklaşım kullanabilirsiniz.

Ön şartlar

Bu öğreticiyi izlemek için ihtiyacınız olan şeyler:

  • Bir Ubuntu 16.04 sunucusu, bu ilk Ubuntu 16.04 sunucu kurulum öğreticisiyle birlikte kuruldu; buna sudo root olmayan bir kullanıcı ve bir güvenlik duvarı. Bu sunucu ProxySQL örneğiniz olacak.

  • Çok sunucular için veritabanı çoğaltma. MySQL sunucusu. Bunu, Ubuntu 16.04'te MySQL Grup Çoğaltmayı Nasıl Yapılır öğreticisini izleyerek ayarlayabilirsiniz. Tek Birincil veya Çoklu İlkeyi Seçme bölümünde, bir çok birincil çoğaltma grubu için yönergeleri izleyin.

Adım 1 – ProxySQL'i Yükleme

ProxySQL geliştiricileri, GitHub sürüm sayfasındaki tüm ProxySQL sürümleri için resmi Ubuntu paketleri sağlar, bu nedenle en son paket sürümünü buradan indirip yükleyeceğiz.

En son paketi sürüm listesinde bulabilirsiniz. Adlandırma kuralı olan proxysql_version-distribution.deb , version şeklinde bir dizedir 1.4.4 sürümü 1.4.4 için ve distribution gibi bir dizedir ubuntu16_amd64 64-bit Ubuntu 16.04.

Yazarken 1.4.4 olan en son resmi paketi /tmp dizinine indirin.

  • cd / tmp
  • curl -OL https://github.com/sysown/proxysql/releases/download/v1.4.4/proxysql_1.4.4-ubuntu16_amd64.deb

Paketi, .deb yazılım paketlerini yönetmek için kullanılan dpkg ile kurun. -i bayrağı, belirtilen dosyadan yüklemek istediğimizi gösterir.

  • sudo dpkg -i proxysql_ *

Bu noktada, .deb dosyasına artık ihtiyacınız olmadığından, dosyayı kaldırabilirsiniz.

  • rm proxysql_ *

Ardından, ProxySQL örneğine bağlanmak için bir MySQL istemci uygulamasına ihtiyacımız olacak. Bunun nedeni, ProxySQL yönetimsel görevler için dahili olarak MySQL uyumlu bir arabirim kullanmasıdır. Ubuntu depolarında bulunan mysql-client paketinin bir parçası olan mysql komut satırı aracını kullanacağız.

Paket deponuzu, önceden paketlenmiş en yeni sürümü aldığınızdan emin olmak için güncelleyin, ardından mysql-client paketini kurun.

  • sudo apt-get güncelleme
  • sudo apt-get install mysql-client

Artık ProxySQL'i çalıştırmak için gereken tüm şartlara sahipsiniz, ancak hizmet kurulumdan sonra otomatik olarak başlamıyor, bu nedenle el ile başlatın.

  • sudo sistemctl başlatma proxysql

ProxySQL şimdi varsayılan yapılandırmasıyla birlikte çalışıyor olmalıdır. systemctl kullanarak kontrol edebilirsiniz.

  • systemctl durumu proxysql

Çıktı buna benzer görünecektir:

Output● proxysql.service - LSB: High Performance Advanced Proxy for MySQL
Loaded: loaded (/etc/init.d/proxysql; bad; vendor preset: enabled)
Active: active (running) since Thu 2017-12-21 19:19:20 UTC; 5s ago
Docs: man:systemd-sysv-generator(8)
Process: 12350 ExecStart=/etc/init.d/proxysql start (code=exited, status=0/SUCCESS)
Tasks: 23
Memory: 30.9M
CPU: 86ms
CGroup: /system.slice/proxysql.service
├─12355 proxysql -c /etc/proxysql.cnf -D /var/lib/proxysql
└─12356 proxysql -c /etc/proxysql.cnf -D /var/lib/proxysql

active (running) satırı ProxySQL kurulu ve çalışıyor demektir.

Ardından, ProxySQL'in yönetim arayüzüne erişmek için kullanılan şifreyi ayarlayarak güvenliği artıracağız.

Adım 2 – ProxySQL Yönetici Parolasını Ayarlama

Yeni bir ProxySQL kurulumunu ilk başlattığınızda, tüm yapılandırma değişkenleri için varsayılan değerleri başlatmak için paket tarafından sağlanan bir yapılandırma dosyasını kullanır. Bu başlatma işleminden sonra, ProxySQL yapılandırmasını komut satırından yönetebileceğiniz ve değiştirebileceğiniz bir veritabanında saklar.

ProxySQL'de yönetici parolasını ayarlamak için, bu yapılandırma veritabanına bağlanacağız ve uygun değişkenleri güncelleyeceğiz.

İlk olarak, yönetim arayüzüne erişin. Varsayılan kurulumda admin olan şifre girmeniz istenecektir.

  • mysql -u admin -p -h 127.0.0.1 -P 6032 --prompt = 'ProxySQLAdmin>'

  • -u bağlanmak istediğimiz kullanıcıyı belirtir; burada yapılandırma ayarlarını değiştirme gibi idari görevler için varsayılan kullanıcı olan admin'dir .
  • -h 127.0.0.1 söyler mysql yerel ProxySQL örneğine bağlanmak için. Biz ProxySQL soket dosyasını dinlemek değil çünkü bunu açıkça tanımlamak gerekir mysql varsayılan olarak varsayar.
  • -P bağlanılacak bağlantı noktasını belirtir. ProxySQL yönetici arayüzü dinler 6032 .
  • --prompt varsayılan istemi değiştiren isteğe bağlı bir bayraktır, normalde mysql> . Burada ProxySQL yönetim arayüzüne bağlı olduğumuzun açıkça anlaşılması için ProxySQLAdmin> olarak değiştiriyoruz. Bu, daha sonra çoğaltılmış veritabanı sunucularında MySQL arabirimlerine bağlanacağımız zaman karışıklığı önlemek için yardımcı olacaktır ..

Bağlandıktan sonra ProxySQLAdmin> istemini görürsünüz:

ProxySQL administration console promptWelcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.30 (ProxySQL Admin Module)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

ProxySQLAdmin>

global_variables veritabanındaki admin-admin_credentials yapılandırma değişkenini güncelleyerek ( UPDATE ) yönetimsel hesap parolasını değiştirin. Değiştirmeyi unutmayın password aşağıdan seçtiğiniz güçlü bir şifreye komuta.

  • UPDATE global_variables SET variable_value = 'admin: şifre' WHERE variable_name = 'admin-admin_credentials';

OutputQuery OK, 1 row affected (0.00 sec)

Bu değişiklik, ProxySQL yapılandırma sistemi nasıl çalıştığından hemen etkisini göstermez. Üç ayrı tabakadan oluşur:

  • bellek , komut satırı arabiriminden değişiklik yaparken değiştirilir.
  • ProxySQL tarafından etkili yapılandırma olarak kullanılan runtime .
  • Disk , yeniden başlatmalar sırasında bir yapılandırma devam etmesi için kullanılır.

Şu an yaptığınız değişiklik bellektendir . Değişikliği yürürlüğe koymak için, bellek ayarlarını çalışma zamanı alanına kopyalamanız ve daha sonra devam ettirmek için bunları diske kaydetmeniz gerekir.

  • YÖNETİCİ DEĞİŞKENLERDEN YÜKLEME;
  • ADMIN DEĞİŞKENLERDEN KAYDIN;

Bu ADMIN komutları, yalnızca yönetimsel komut satırı arabirimiyle ilgili değişkenleri işlemektedir. ProxySQL, MYSQL gibi benzer komutları, konfigürasyonunun diğer kısımlarını işlemek için kullanır. Bunları daha sonra bu öğreticide kullanacağız.

ProxySQL yeni bir yönetici şifresi ile kurulduğundan ve çalışmaya başladığından, ProxySQL'in onları izleyebilmesi için 3 adet MySQL düğümünü ayarlayalım. ProxySQL arabirimini açık tutun, çünkü daha sonra kullanacağız.

Adım 3 – MySQL'de İzlemeyi Yapılandırma

Durumunu değerlendirmek için ProxySQL'in MySQL düğümleriyle iletişim kurması gerekir. Bunu yapmak için, her bir sunucuya özel bir kullanıcı ile bağlanabilmelidir.

Burada, gerekli kullanıcıyı MySQL düğümlerinde yapılandıracağız ve ProxySQL'in grup çoğaltma durumunu sorgulamasına izin veren ek SQL işlevleri kuracağız.

MySQL grup çoğaltması zaten çalışmakta olduğundan, aşağıdaki adımların yalnızca grubun tek bir üyesinde yapılması gerekir .

İkinci bir terminalde, MySQL düğümlerinden biriyle bir sunucuya giriş yapın.

  • ssh sammy @ sizin_mysql_server_ip_1

ProxySQL grup kopyalama desteğiyle çalışmak için gerekli bazı işlevleri içeren SQL dosyasını indirin.

  • curl -OL https://gist.github.com/lefred/77ddbde301c72535381ae7af9f968322/raw/5e40b03333a3c148b78aa348fd2cd5b5dbb36e4d/addition_to_sys.sql

Not : Bu dosya ProxySQL yazarları tarafından sağlanır, ancak geçici bir yolla sağlanır: Kişisel bir GitHub deposunda öz bulunur, bu da hareket etmesi veya güncelliğini kaybetmesi anlamına gelir. Gelecekte, resmi ProxySQL havuzunda sürümlenmiş bir dosya olarak eklenebilir.

Bu dosyanın içeriği ve içeriği hakkında yazarın blog yazısı olan MySQL grup çoğaltması için yerel ProxySQL desteği hakkında daha fazla bilgi bulabilirsiniz.

Dosyanın içeriğini less addition_to_sys.sql kullanarak görüntüleyebilirsiniz.

Hazır olduğunuzda, dosyadaki komutları yürütün. MySQL yönetici şifresi girmeniz istenecektir.

  • mysql -u kök-p <addition_to_sys.sql

Komut başarıyla çalıştırılırsa, çıktı çıkmaz. Bu durumda, tüm MySQL düğümleri ProxySQL'in grup çoğaltma durumunu tanıması için gereken işlevleri ortaya çıkaracaktır.

Sonra, örneklerin durumunu izlemek için ProxySQL tarafından kullanılacak özel bir kullanıcı oluşturmalıyız.

Kök parolasını tekrar isteyecek olan MySQL etkileşimli istemini açın.

  • mysql -u kök-p

Ardından, burada monitör olarak adlandırdığımız özel bir kullanıcı oluşturun. Parolayı güçlü bir parola ile değiştirdiğinizden emin olun.

  • CREATE USER 'monitor' @ '%' Tanımlanan 'monitorpassword';

MySQL sunucu durumunu monitör kullanıcısına sorgulamak için kullanıcı ayrıcalıklarını verin.

  • GRANT SELECT sys. * 'Izlemek' için @ '%';

Sonunda değişiklikleri uygulayın.

  • FLUSH PRIVILEGES;

Grup replikasyonu sayesinde, kullanıcıyı sağlık izleme için bir MySQL düğümüne eklemeyi bitirdikten sonra, üç düğümün tamamında yapılandırılacaktır.

Sonra, MySQL düğümlerine erişebilmesi için ProxySQL'i bu kullanıcıyla ilgili bilgileri güncellemeliyiz.

Adım 4 – ProxySQL'de İzleme Yapılandırma

ProxySQL'i, düğümleri izlerken yeni kullanıcı hesabını kullanacak şekilde yapılandırmak için uygun yapılandırma değişkenini UPDATE . Bu, 2. Adımdaki yönetici şifresini ayarlama şeklinize çok benzer.

ProxySQL admin arabiriminde, mysql-monitor_username değişkenini yeni hesabın kullanıcı adına güncelleyin.

  • UPDATE global_variables SET variable_value = 'monitör' WHERE variable_name = 'mysql-monitor_username';

Tıpkı daha önce olduğu gibi yapılandırma otomatik olarak uygulanmaz, bu nedenle çalışma zamanına geçirin ve diske kaydedin. Bu sefer, MySQL yapılandırma değişkenlerini değiştirdiğimiz için bu değişkenleri güncellemek için ADMIN yerine MYSQL kullandığımıza dikkat edin.

  • MYSQL DEĞİŞKENLERİNİ RUNTIME OLARAK YÜKLEYİN;
  • MYSQL DEĞİŞKENLERİNİ SAYISINA KAYDETİN;

İzleme hesabı her iki uçta da yapılandırılmıştır ve bir sonraki adım ProxySQL'e düğümlerin kendilerini anlatmaktır.

Adım 5 – MySQL Bağlantı Noktalarını ProxySQL Sunucu Havuzuna Ekleme

ProxySQL'i üç MySQL düğümümüzden haberdar etmek için, ProxySQL'e bunları düğüm kümeleri olan ana makine gruplarına nasıl dağıtacağımızı söylemeliyiz. Her ana grup, 1 veya 2 gibi pozitif bir sayı ile tanımlanır. Ana bilgisayar grupları, farklı SQL sorgularını ProxySQL sorgu yönlendirme kullanırken farklı ana bilgisayar gruplarına yönlendirebilir.

Statik çoğaltma yapılandırmalarında, ana bilgisayar grupları keyfi olarak ayarlanabilir. Bununla birlikte, ProxySQL'in grup çoğaltma desteği, bir çoğaltma grubundaki tüm düğümleri otomatik olarak dört mantıksal duruma böler:

  • yazarlar , verileri değiştiren soruları kabul edebilen MySQL düğümleri. ProxySQL, bu gruptaki tüm birincil düğümleri tanımlanan maksimum miktara kadar korumayı taahhüt eder.
  • yedek yazar s, aynı zamanda verileri değiştiren soruları kabul edebilen MySQL düğümleri. Bununla birlikte, bu düğümler yazarlar olarak atanmaz; korunan yazarların tanımlanan miktarını aşan birincil düğümler bu grupta tutulur ve yazarlardan biri başarısız olursa yazarlara terfi edilir.
  • okuyucular , değişen sorguları kabul edemeyen ve salt okunur düğümler olarak kullanılmaları gereken MySQL düğümleridir. ProxySQL yalnızca köle düğümlerini buraya koyar.
  • çevrimdışı , bu bağlantı yetersizliği veya yavaş trafik gibi sorunlar nedeniyle yanlış çalışmakta olan düğümler içindir.

Bu dört devletin her biri karşılık gelen ana bilgisayar gruplarına sahiptir, ancak sayısal grup tanımlayıcıları otomatik olarak atanmaz.

Hepsini bir araya getirirsek, ProxySQL'e her devlet için hangi tanımlayıcıları kullanması gerektiğini söylemeliyiz. Burada, kullandığımız 1 çevrimdışı konak grubu için 2 yazar konak grubu için 3 okuyucu konak grubu için ve 4 yedek yazar konak grubu için.

Bu tanımlayıcıları ayarlamak için, bu değişkenler ve değerlerle mysql_group_replication_hostgroups yapılandırma tablosunda yeni bir satır oluşturun.

  • mysql_group_replication_hostgroups takın (writer_hostgroup, backup_writer_hostgroup, reader_hostgroup, offline_hostgroup, aktif max_writers, writer_is_also_reader, max_transactions_behind) DEĞERLERİ (2, 4, 3, 1, 1, 3, 1, 100);

Bu satırda ve her birinin yaptığı ek değişkenler şunlardır:

  • active set to 1 , ProxySQL'in bu ana bilgisayar gruplarını izlemesini sağlar.
  • max_writers , kaç düğümün yazar gibi hareket max_writers tanımlar. Burada 3 kullandık, çünkü çoklu-primer bir konfigürasyonda, tüm düğümlere eşit muamele görebiliriz, yani burada 3 (toplam düğüm sayısı) kullandık.
  • writer_is_also_reader 1 ayarlandığında, ProxySQL'e yazarları okuyucular gibi de tedavi etmesi sağlanır.
  • max_transactions_behind , bir düğüm çevrimdışı olarak sınıflandırılmadan önce gecikmiş işlemlerin maksimum sayısını ayarlar.

Not: Örneğimizde, tüm düğümlerin veritabanına yazabileceği çok temel bir topoloji kullanıldığından, yazar ana makine grubundaki tüm SQL sorgularını dengeleyeceğiz. Diğer topolojilerde, yazar (birincil) düğümler ile okuyucu (ikincil) düğümler arasındaki bölüm, salt okunur sorguları, yazma sorgularından farklı düğümlere / ana bilgisayar gruplarına yönlendirebilir. ProxySQL bunu otomatik olarak yapmaz, ancak kuralları kullanarak sorgu yönlendirme ayarlayabilirsiniz.

Artık ProxySQL, düğümlerin ana gruplar arasında nasıl dağıtılacağını bildiğinden, MySQL sunucularımızı havuza ekleyebiliriz. Bunu yapmak için, her sunucunun IP adresini ve başlangıç ​​ana bilgisayar grubunu, ProxySQL ile etkileşime girebilecek sunucular listesini içeren mysql_servers tablosuna INSERT gerekir.

Aşağıdaki üç örnekte yer alan IP adreslerini değiştirdiğinizden emin olun, üç MySQL sunucusunun her birini ekleyin.

  • INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (2, '203.0.113.1', 3306);
  • INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (2, '203.0.113.2', 3306);
  • INSERT INTO mysql_servers (hostgroup_id, hostname, port) VALUES (2, '203.0.113.3', 3306);

Burada, 2 değeri başlangıçta bu düğümlerin hepsini yazarlar ve 3306 varsayılan MySQL bağlantı noktasını belirler.

Tıpkı önceki gibi bu değişiklikleri çalışma zamanına geçirin ve değişiklikleri yürürlüğe koymak için bunları diske kaydedin.

  • MYSQL sunucularını zamanına kadar yükleyin;
  • MYSQL sunucularını diske kaydedin;

ProxySQL, düğümlerimizi belirtilen şekilde ana bilgisayar gruplarına dağıtmalıdır. ProxySQL kullanan sunucuların geçerli durumunu ortaya koyan runtim330e_mysql_servers tablosuna karşı bir SELECT sorgusu yürüterek bunu kontrol edelim.

  • SELECT hostgroup_id, hostname, durum FROM runtime_mysql_servers;

Output+--------------+-------------+--------+
| hostgroup_id | hostname | status |
+--------------+-------------+--------+
| 2 | 203.0.113.1 | ONLINE |
| 2 | 203.0.113.2 | ONLINE |
| 2 | 203.0.113.3 | ONLINE |
| 3 | 203.0.113.1 | ONLINE |
| 3 | 203.0.113.2 | ONLINE |
| 3 | 203.0.113.3 | ONLINE |
+--------------+-------------+--------+
6 rows in set (0.01 sec)

Sonuçlar tablosunda, her sunucu iki kez listelenir: her biri birer kez olmak üzere, ana makine grup kimlikleri 2 ve 3 , her üç düğümün de hem yazar hem de okuyucu olduğunu belirtir. Tüm düğümler ONLINE olarak işaretlenmiştir, yani kullanılmaya hazır oldukları anlamına gelir.

Bununla birlikte, bunları kullanabilmemiz için, her düğümde MySQL veritabanlarına erişmek için kullanıcı kimlik bilgilerini yapılandırmamız gerekir.

Adım 6 – MySQL Kullanıcılarını Oluşturma

ProxySQL bir yük dengeleyici görevi görür; Son kullanıcılar ProxySQL'e bağlanırlar ve ProxySQL sırayla seçilen MySQL düğümüne bağlantıyı aktarır. Tek bir düğüme bağlanmak için ProxySQL eriştiği kimlik bilgilerini tekrar kullanır.

Çoğaltma düğümlerinde bulunan veritabanlarına erişime izin vermek için, ProxySQL ile aynı kimlik bilgilerini içeren bir kullanıcı hesabı oluşturmamız ve o kullanıcıya gerekli ayrıcalıkları sağlamamız gerekir.

Adım 3'te olduğu gibi, aşağıdaki adımlar yalnızca grubun tek bir üyesi üzerinde gerçekleştirilmelidir. Herhangi bir üyeyi seçebilirsiniz.

Şifre ile özdeşleşmiş yeni bir kullanıcı adı verilen playgrounduser oluşturma playgroundpassword .

  • KULLANICI 'playgrounduser' YAZININ @ '%' KİMLİĞİ 'oyun alanı şifresi';

playground test veritabanına orijinal grup çoğaltma öğreticisinden tam olarak erişebilmeniz için ayrıcalıklar verin.

  • TÜM İMTİYAZLARI oyun alanına verin. * 'Playgrounduser' @ '%';

Ardından, değişiklikleri uygulayın ve istemi kapatın.

  • FLUSH PRIVILEGES;
  • ÇIKIŞ;

Doğrudan düğümde yeni yapılandırılmış kimlik bilgilerini kullanarak veritabanında çalışarak kullanıcının doğru bir şekilde oluşturulduğunu doğrulayabilirsiniz.

Yeni kullanıcı ile MySQL arayüzünü yeniden açın, bu şifreyi size soracaktır.

  • mysql -u oyun alanı kullanıcısı -p

Oturum açtığınızda, playground veritabanında bir test sorgusu uygulayın.

  • Oyun alanındaki TABLOLARI GÖSTER;

Output+----------------------+
| Tables_in_playground |
+----------------------+
| equipment |
+----------------------+
1 row in set (0.00 sec)

Veritabanında, orijinal çoğaltma öğreticisinde oluşturulan equipment tablosunu gösteren görünür liste tabloları, kullanıcının düğümlerde doğru bir şekilde oluşturulduğunu onaylar.

Artık MySQL arabiriminden bağlantıyı kesebilirsiniz, ancak terminali sunucu bağlantısıyla açık tutun. Bunu, son adımda testler yapmak için kullanacağız.

  • ÇIKIŞ;

Şimdi, ProxySQL sunucusunda ilgili kullanıcıyı oluşturmamız gerekiyor.

7. Adım – ProxySQL Kullanıcısı Oluşturma

Son yapılandırma adımı, playgrounduser kullanıcısı ile ProxySQL'e bağlantılara izin vermek ve bu bağlantıları düğümlere aktarmaktır.

Bunu yapmak için, kullanıcı kimlik bilgisi bilgilerini barındıran mysql_users tablosunda yapılandırma değişkenleri ayarlamamız gerekir. ProxySQL arabiriminde, yapılandırma veritabanına kullanıcı adı, parola ve varsayılan ana makine grubu ekleyin ( yazma sunucusu grubu için 2 )

  • INSERT INTO mysql_users (kullanıcı adı, şifre, default_hostgroup) DEĞERLER ('playgrounduser', 'playgroundpassword', 2);

Yapılandırmayı çalışma zamanına geçirin ve yeni yapılandırmayı yürürlüğe koymak için diske kaydedin.

  • MYSQL KULLANICILARININ RUNTIME EDİN;
  • MYSQL KULLANICILARININ SAYISINA KAYDETİN;

Bu kimlik bilgilerini kullanarak veritabanı düğümlerine bağlanabildiğimizi doğrulamak için ProxySQL sunucusuna başka bir terminal penceresi ve SSH açın. Daha sonra yönetim komut istemine ihtiyaç duyacağız, bu yüzden henüz kapamayın.

  • ssh sammy @ sizin_proxysql_server_ip

ProxySQL, gelen istemci bağlantıları için 6033 numaralı bağlantı noktasını dinler; bu nedenle, playgrounduser ve bağlantı noktası 6033 kullanarak gerçek veritabanına (yönetim arayüzüne değil) bağlanmayı deneyin. Örneğimizde playgroundpassword parolası olan şifreyi girmeniz istenecektir.

  • mysql -u playgrounduser -p -h 127.0.0.1 -P 6033 --prompt = 'ProxySQLClient>'

Burada, istemi ProxySQLClient> olarak ProxySQLClient> için yönetim arayüzü isteminden ayırt edebiliriz. Son yapılandırmayı sınarken her ikisini de kullanacağız.

Komut istemi açılmalıdır, yani kimlik bilgileri ProxySQL tarafından kabul edilmiştir.

ProxySQL client prompt

  • MySQL monitörüne hoş geldiniz. Komutlar; veya \ g.
  • MySQL bağlantı kimliğiniz 31
  • Sunucu sürümü: 5.5.30 (ProxySQL)
  • Telif hakkı (c) 2000, 2017, Oracle ve / veya bağlı kuruluşları. Her hakkı saklıdır.
  • Oracle, Oracle Corporation ve / veya Oracle Corporation'ın tescilli ticari markasıdır.
  • bağlı. Diğer adlar ilgili ülkelerinin ticari markaları olabilir
  • sahipleri.
  • 'Yardım' yazın. veya '\ h' yardım için. Geçerli giriş bildirimini silmek için '\ c' yazın.
  • ProxySQLClient>

ProxySQL'in düğümlerden birine bağlanıp bağlanmadığını doğrulamak için basit bir deyimi çalıştıralım. Bu komut, veritabanında üzerinde çalıştığı sunucunun ana makine adını sorar ve sunucu ana makine adını tek çıktı olarak döndürür.

  • SELECT @@ ana makine adı;

Yapılandırmamıza göre, bu sorgu ProxySQL tarafından yazar ana makine grubuna atanan üç düğümden birine yönlendirilmelidir. Çıktı, member1 MySQL düğümlerinden birinin ana makine adı olduğu yerde member1 .

Output+------------+
| @@hostname |
+------------+
| member1 |
+------------+
1 row in set (0.00 sec)

Bu işlem, ProxySQL'nin üç MySQL düğümü arasında bağlantı dengesini yüklemesini sağlar.

Son adımda, ProxySQL'in veritabanında okuma ve yazma ifadelerini çalıştırabileceğini ve bazı düğümler düştüğü zaman bile sorguları işleyeceğini doğrulayacağız.

Adım 8 – ProxySQL Yapılandırmasını Doğrulama

ProxySQL ile MySQL düğümleri arasındaki bağlantının çalıştığını biliyoruz, bu nedenle son testler, veritabanı izinlerinin ProxySQL'den okuma ve yazma ifadelerine izin vermesini ve bu düğümlerin bazılarının düğmelerin bulunduğu düğmelerin hala çalışıp çalışmadığından emin olmalarını sağlamaktır. grup başarısız.

playground veritabanından verileri okuyabileceğimizi doğrulamak için ProxySQL istemci isteminde bir SELECT deyimi yürütün.

  • SELECT * FROM playground.equipment;

Çıktı, grup çoğaltma öğreticisinde yaratılan üç öğeyi içeren aşağıdakine benzer olmalıdır. Bu, MySQL veritabanındaki verileri ProxySQL aracılığıyla başarıyla okudunuz demektir.

Output+----+--------+-------+--------+
| id | type | quant | color |
+----+--------+-------+--------+
| 3 | slide | 2 | blue |
| 10 | swing | 10 | yellow |
| 17 | seesaw | 3 | green |
+----+--------+-------+--------+
3 rows in set (0.00 sec)

Sonra, 5 kırmızı matkabı temsil eden tabloya yeni veriler ekleyerek yazı yazmayı deneyin.

  • INSERT INTO oyun alanına.equipment (tür, miktar, renk) DEĞERLER ("matkap", 5, "kırmızı");

Ardından, verilerin eklendiğini doğrulamak için önceki SELECT komutunu tekrar çalıştırın.

  • SELECT * FROM playground.equipment;

Çıktıdaki yeni matkap hattı, MySQL veritabanına ProxySQL vasıtasıyla veri yazdığımız anlamına geliyor.

Output+----+--------+-------+--------+
| id | type | quant | color |
+----+--------+-------+--------+
| 3 | slide | 2 | blue |
| 10 | swing | 10 | yellow |
| 17 | seesaw | 3 | green |
| 24 | drill | 5 | red |
+----+--------+-------+--------+
4 rows in set (0.00 sec)

ProxySQL'in şu anda veritabanını kullanabileceğini biliyoruz, ancak bir sunucu başarısız olursa ne olur?

Bir MySQL sunucusunun komut satırından, bir başarısızlığı simüle etmek için MySQL işlemini durdurun.

  • systemctl stop mysql

Veritabanı durduktan sonra, equipment tablosundaki verileri tekrar ProxySQL istemci isteminden sorgulamayı deneyin.

  • SELECT * FROM playground.equipment;

Çıktılar değişmemelidir; ekipman listesini önceden olduğu gibi görmelisiniz. Bu, ProxySQL, düğümlerden birinin başarısız olduğunu ve deyimi yürütmek için başka bir düğmeye geçiş yaptığını fark etmiştir.

Adım 5'te olduğu gibi ProxySQL yönetim komut isteminde runtime_mysql_servers tablosunu sorgulayarak bunu kontrol edebiliriz.

  • SELECT hostgroup_id, hostname, durum FROM runtime_mysql_servers;

Çıktı şöyle görünecektir:

Output+--------------+-------------+---------+
| hostgroup_id | hostname | status |
+--------------+-------------+---------+
| 1 | 203.0.113.1 | SHUNNED |
| 2 | 203.0.113.2 | ONLINE |
| 2 | 203.0.113.3 | ONLINE |
| 3 | 203.0.113.2 | ONLINE |
| 3 | 203.0.113.3 | ONLINE |
+--------------+-------------+---------+
6 rows in set (0.01 sec)

Durduğumuz düğüm artık gönderilmiyor, bu da geçici olarak ulaşılmaz kabul edildiğinden, tüm trafik kalan iki online düğüm arasında dağıtılacak.

ProxySQL bu düğümün durumunu sürekli olarak izleyecek ve normal davranırsa çevrimiçi duruma geri getirecek veya Adım 4'te ayarladığımız zaman aşımı eşiğini aşması durumunda çevrimdışı olarak işaretleyecektir.

Bu izlemeyi test edelim. MySQL sunucusuna dönün ve düğümü tekrar açın.

  • systemctl başlangıç ​​mysql

Bir dakika bekleyin, ardından runtime_mysql_servers tablosunu ProxySQL yönetim komut isteminden tekrar sorgulayın.

  • SELECT hostgroup_id, hostname, durum FROM runtime_mysql_servers;

ProxySQL, düğümün tekrar kullanılabilir olduğunu ve çevrimiçi olarak işaretlediğini hızla fark edecektir:

Output+--------------+-------------+--------+
| hostgroup_id | hostname | status |
+--------------+-------------+--------+
| 2 | 203.0.113.1 | ONLINE |
| 2 | 203.0.113.2 | ONLINE |
| 2 | 203.0.113.3 | ONLINE |
| 3 | 203.0.113.1 | ONLINE |
| 3 | 203.0.113.2 | ONLINE |
| 3 | 203.0.113.3 | ONLINE |
+--------------+-------------+--------+
6 rows in set (0.01 sec)

En az bir düğüm yukarı çıkarsa, veritabanınızı hem salt okunur hem de salt okunur erişim için özgürce kullanabileceğinizi görmek için bu sınamayı başka bir düğümle (veya ikisi) tekrarlayabilirsiniz.

Conclusion

Bu yazıda, birden çok birincil grup çoğaltma topolojisinde birden çok yazma özellikli MySQL düğümünde SQL sorgularını denge yüklemek üzere ProxySQL'i yapılandırdınız. Bu tür bir yapılandırma, yükü birden fazla sunucuya dağıtarak ağır veritabanı kullanımının performansını artırabilir. Ayrıca, veritabanı sunucularından birinin çevrimdışı olması durumunda, yerine çalışma olanağı da sağlayabilir.

Bununla birlikte, burada yalnızca bir düğüm topolojisini örnek olarak verdik. ProxySQL, diğer birçok MySQL topolojileri için de sağlam sorgu önbellekleme, yönlendirme ve performans analizi sağlar. ProxySQL'in özellikleri ve bunlarla birlikte resmi ProxySQL blogu ve ProxySQL wiki'deki farklı veritabanı yönetimi sorunlarının nasıl çözüleceği hakkında daha fazla bilgi bulabilirsiniz.

Bir önceki yazımız olan JavaScript ile DOM Düğümleri Oluşturma, Ekleme, Değiştirme ve Silme başlıklı makalemizi de okumanızı öneririz.

About This Author

Uzun yıllardır yazılım ile uğraşıyorum. PHP ile başladığım yazılım hayatıma şu an PHP'nin yanında Swift ve Python ile devam ediyorum. Bu güne kadar bir çok proje geliştirdim ve yeni projeler geliştirmeye de devam ediyorum. Bu sitede yazılımseverlere faydalı bilgiler vermeye, yazılım geliştirmeye, öğrendiklerimi paylaşmaya, yeni başlayanlara yol göstermeye ve onlara yardımcı olmaya çalışıyorum.

Comments are closed

%d blogcu bunu beğendi: