Ako nainštalovať server MySQL na vyrovnávanie záťaže s ProxySQL na Debian 11
Na tejto stránke
- Predpoklady
- Nastavenie úložiska
- Inštalácia ProxySQL a Percona XtraDB Cluster Client
- Pridanie MySQL Cluster/Percona XtraDB Cluster do ProxySQL
- Nastavenie ProxySQL Monitoring User
- Nastavenie používateľa databázy pre aplikácie
- Overte databázu a používateľa
- Záver
ProxySQL je vysokovýkonný proxy server MySQL s malými rozmermi, ktorý je možné nainštalovať do viacerých prostredí, ako sú VM, K8, bare-metal a kontajnery Docker. ProxySQL je riešenie s otvoreným zdrojovým kódom, ktoré poskytuje vysokú dostupnosť pre váš klaster MySQL s podporou multiplexovania pripojení, poskytuje pravidlá dotazov na smerovanie zápisov na primárne a distribuuje čítania cez repliky.
ProxySQL podporuje AMD64 (x86_64) aj ARM64 kompatibilné. Poskytuje proxy aplikačnej vrstvy pre vašu aplikáciu a tiež poskytuje pokročilé dotazy s detekciou zlyhania.
V tejto príručke nainštalujete a nastavíte vyvažovanie záťaže klastra MySQL cez ProxySQL na serveri Debian 11. Nainštalujete ProxySQL v2 s klientom percona XtraDB, potom pridáte klaster Percona XtraDB do ProxySQL, nastavíte používateľa monitorovania ProxySQL, potom pridáte databázu a používateľa, ktorý bude použitý pre vaše aplikácie.
Predpoklady
Ak chcete začať s touto príručkou, musíte mať nasledujúce požiadavky:
- Server Linux so systémom Debian 11 – Tento príklad používa server Debian s názvom hostiteľa 'proxysql-deb'.
- Používateľ bez oprávnenia root s oprávneniami správcu sudo/root.
- Plne nakonfigurovaný MySQL Cluster alebo Percona XtraDB Cluster.
To je všetko. Keď sú všetky požiadavky pripravené, môžete spustiť inštaláciu ProxySQL.
Nastavenie úložiska
Prvým krokom, ktorý musíte urobiť pre túto príručku, je pridať na váš server úložiská ProxySQL aj Percona XtraDB. Repozitár Percona XtraDB sa použije na inštaláciu balíka 'percona-xtradb-cluster-client', ktorý vyžaduje ProxySQL.
Ak chcete začať, nainštalujte niektoré základné závislosti zadaním nasledujúceho príkazu apt. Po zobrazení výzvy zadajte y a pokračujte stlačením klávesu ENTER.
sudo apt install wget gnupg2 lsb-release curl apt-transport-https ca-certificates
Ďalej si stiahnite súbor úložiska pre Percona XtraDB a nainštalujte ho pomocou príkazu 'dpkg' nižšie.
wget -q https://repo.percona.com/apt/percona-release_latest.generic_all.deb
sudo dpkg -i percona-release_latest.generic_all.deb
Teraz aktualizujte a obnovte svoj index balíkov Debianu pomocou nasledujúceho príkazu apt nižšie. Mali by ste vidieť, že bolo pridané nové úložisko Percona XdtraDB.
sudo apt update
Potom zadajte príkaz 'percona-release', aby ste povolili úložisko Percona XtraDB Cluster 8.0.
sudo percona-release setup pxc80
S pridaným úložiskom Percona XtraDB teraz spustite nasledujúci príkaz na pridanie kľúča GPG a úložiska pre ProxySQL.
wget -q -nv -O /etc/apt/trusted.gpg.d/proxysql-2.4.x-keyring.gpg 'https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/repo_pub_key.gpg'
echo deb https://repo.proxysql.com/ProxySQL/proxysql-2.4.x/$(lsb_release -sc)/ ./ | tee /etc/apt/sources.list.d/proxysql.list
Aktualizujte a znova obnovte svoj index balíkov Debianu, aby ste získali nové úložisko.
sudo apt update
S pridanými úložiskami Percona XtraDB a ProxySQL môžete nainštalovať klientske balíky ProxySQL a Percona XtraDB.
Inštalácia ProxySQL a Percona XtraDB Cluster Client
V tejto časti nainštalujete balík ProxySQL v2 s klientskym balíkom Percona XtraDB. Zadajte nasledujúci príkaz apt na inštaláciu klientskych balíkov ProxySQL aj Percona XtraDB.
sudo apt install proxysql2 percona-xtradb-cluster-client
Po zobrazení výzvy zadajte y na potvrdenie a pokračujte stlačením ENTER.
Po nainštalovaní ProxySQL sa automaticky spustí a spustí sa automaticky pri štarte systému. Zadajte nasledujúci pomocný program príkazu systemctl na overenie stavu služby ProxySQL.
sudo systemctl is-enabled proxysql
sudo systemctl start proxysql
Výstup „povolené“ potvrdzuje, že ProxySQL sa spustí automaticky pri spustení systému. A výstup 'active (run)' potvrdzuje, že ProxySQL beží.
Potom zadajte nasledujúci príkaz mysql na prihlásenie na server ProxySQL pomocou predvoleného používateľa a hesla „admin“.
mysql -u admin -padmin -h 127.0.0.1 -P 6032 --prompt='proxysql-deb> '
Po úspešnom by ste mali získať shell ProxySQL nasledovne. Cez klienta Percona XtraDB ste sa pripojili k modulu ProxySQL admin.
Teraz zadajte nasledujúci dotaz, aby ste získali zoznam databáz na serveri ProxySQL. Mali by ste vidieť viacero databáz dostupných na serveri ProxySQL.
SHOW DATABASES;
S nainštalovaným serverom ProxySQL a klientom Percona XtraDB Cluster ste pripravení pridať MySQL alebo Percona XtraDB Cluster na server ProxySQL a nastaviť vyrovnávanie záťaže.
Pridanie MySQL Cluster/Percona XtraDB Cluster do ProxySQL
Prvým krokom, ktorý musíte urobiť po inštalácii servera ProxySQL, je pridať svoj MySQL alebo percona XtraDB Cluster na server ProxySQL. A to sa dá dosiahnuť pomocou shellu ProxySQL. Tento príklad používa Percona XtraDB Cluster s nasledujúcimi podrobnosťami:
Hostname IP Address Port
---------------------------------
pxc01 192.168.5.15 3306
pxc02 192.168.5.16 3306
pxc03 192.168.5.17 3306
Skôr ako začnete, uistite sa, že ste sa prihlásili do prostredia ProxySQL. Potom zadajte nasledujúce otázky na pridanie serverov MySQL do ProxySQL. Uistite sa, že ste zmenili podrobnosti IP adries a portov s údajmi o klastri MySQL.
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.15',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.16',3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (0,'192.168.5.17',3306);
Výstup „Dotaz OK, ovplyvnený 1 riadok“ potvrdzuje, že server MySQL bol pridaný k serveru ProxySQL.
Zadajte nasledujúci dotaz na overenie zoznamu serverov MySQL, ktoré sú dostupné na ProxySQL. Mali by ste vidieť tri servery MySQL pridané k serveru ProxySQL.
SELECT * FROM mysql_servers;
S MySQL alebo Percona XtraDB Cluster pridaným do ProxySQL budete musieť ďalej nastaviť monitorovanie Percona XtraDB Cluster na ProxySQL.
Nastavenie ProxySQL Monitoring User
Aby sa zabezpečilo, že klaster MySQL alebo Percona XtraDB je v poriadku, ProxySQL bude nepretržite monitorovať všetky dostupné servery MySQL. Aby ste to dosiahli, musíte vytvoriť nového používateľa na vašom klastri percona XtraDB a potom definovať monitorovacieho používateľa na serveri ProxySQL.
Prihláste sa na svoj server Percona XtraDB Cluster, vstúpte do shellu MySQL pomocou príkazu 'mysql' a potom vykonajte nasledujúce dotazy MySQL, aby ste vytvorili nového používateľa 'monitor' s heslom 'monitor'.
CREATE USER 'monitor'@'%' IDENTIFIED WITH mysql_native_password by 'monitor';
GRANT USAGE ON *.* TO 'monitor'@'%';
FLUSH PRIVILEGES;
SELECT USER,host FROM mysql.user;
SHOW GRANTS FOR 'monitor'@'%';
Ďalej prejdite na server ProxySQL a vykonajte nasledujúci dotaz na definovanie používateľa, ktorý sa bude používať na monitorovanie klastra Percona XtraDB. Týmto sa zmení predvolená premenná 'mysql-monitor_username' na používateľa 'monitor' a premenná 'mysql-monitor_password' pre heslo 'monitor >'.
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_username';
UPDATE global_variables SET variable_value='monitor' WHERE variable_name='mysql-monitor_password';
Zadaním nasledujúceho dotazu aktualizujete niektoré ďalšie parametre pre monitorovanie Percona XtraDB Cluster na serveri ProxySQL.
UPDATE global_variables SET variable_value='2000' WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');
Uložte zmeny, ktoré ste vykonali v 'global_variables' v rámci servera ProxySQL vykonaním nasledujúcich dotazov.
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
Mali by ste dostať takýto výstup.
Teraz spustite nasledujúci dotaz na overenie zoznamu 'global_variables' pre 'mysql-monitor_' na serveri ProxySQL.
SELECT * FROM global_variables WHERE variable_name LIKE 'mysql-monitor_%';
Mali by ste dostať výstup ako na nasledujúcom obrázku - Premenná 'mysql-monitor_username' musí mať hodnotu ako užívateľ 'monitor' a premenná 'mysql-monitor_password' pre heslo je 'monitor'. Môžete tiež vidieť hodnotu premenných 'mysql-monitor_connect_interval', 'mysql-monitor_ping_interval', 'mysql-monitor_read_only_interval' isa zmenila na '2000'.
Nakoniec zadajte nasledujúce otázky na overenie stavu monitorovania Percona XtraDB Cluster na serveri ProxySQL. Zobrazí sa vám protokoly posledného stavu protokolu a posledného pingu zo servera ProxySQL na všetky dostupné servery Percona XtraDB Cluster.
SELECT * FROM monitor.mysql_server_connect_log ORDER BY time_start_us DESC LIMIT 6;
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 6;
Keď budete úspešní, mali by ste dostať takýto výstup.
Posledné pripojenie logov ProxySQL servera do Percona XtraDB Cluster.
Posledné ping protokoly ProxySQL servera do Percona XtraDB Cluster.
S klastrom MySQL alebo Percona XtraDB Cluster monitorovaným serverom ProxySQL ste teraz pripravení nastaviť nového používateľa, ktorého budú vaše aplikácie používať.
Nastavenie používateľa databázy pre aplikácie
S nainštalovaným a nakonfigurovaným serverom ProxySQL a pridaným klastrom MySQL alebo Percona XtraDB ako backend databázy teraz nastavíte nového používateľa, ktorého budú vaše aplikácie používať. Takže namiesto priameho pripojenia k serveru MySQL by sa vaše aplikácie mali pripojiť k serveru ProxySQL, ktorý štandardne beží na porte '6033'.
Ak chcete pre svoje aplikácie nastaviť nového používateľa, musíte vykonať nasledujúce kroky:
- Vytvorte nového používateľa v klastri MySQL alebo klastri Percona XtraDB a nastavte privilégiá.
- Pridajte svojho používateľa Percona XtraDB Cluster na server ProxySQL - vložte do tabuľky 'mysql_users'.
Ak chcete začať, vráťte sa na server Percona XtraDB Cluster a prihláste sa do shellu MySQL cez používateľa root. Potom vytvorte nového používateľa MySQL a udeľte mu privilégiá na prístup ku všetkým databázam zadaním nasledujúcich dotazov. V tomto príklade vytvoríte nového používateľa 'sbuser' s heslom 'sbpass'. Tiež nezabudnite zmeniť IP adresu '192.168.5.85' s IP adresou servera ProxySQL.
CREATE USER 'sbuser'@'192.168.5.85' IDENTIFIED WITH mysql_native_password by 'sbpass';
GRANT ALL PRIVILEGES ON *.* TO 'sbuser'@'192.168.5.85';
FLUSH PRIVILEGES;
Potom sa vráťte späť na server ProxySQL a spustite nasledujúci dotaz na pridanie nového používateľa MySQL na server ProxySQL. Vaši používatelia MySQL by mali byť pridaní do tabuľky 'mysql_users' na serveri ProxySQL. V čase písania tohto článku ProxySQL server ešte nepodporuje šifrované heslo.
INSERT INTO mysql_users (username,password) VALUES ('sbuser','sbpass');
Teraz zadajte nasledujúce otázky na potvrdenie a uloženie zmien na serveri ProxySQL. Vďaka tomu je váš nový používateľ pripravený a tohto používateľa MySQL môžete použiť pre svoje aplikácie.
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;
Vďaka tomu by sa vaša aplikácia mala teraz pripojiť k serveru ProxySQL s používateľom 'sbuser' a heslom 'sbpass' s portom 6033.
Overte databázu a používateľa
V tejto časti overíte inštaláciu ProxySQL pripojením k serveru ProxySQL pomocou vami vytvoreného používateľa a hesla.
Zadajte nasledujúci príkaz 'mysql' na prihlásenie na server ProxySQL s novým používateľom 'sbuser' a heslom 'sbpass'. Po úspešnom by ste mali vidieť shell servera ProxySQL.
mysql -u sbuser -psbpass -h 127.0.0.1 -P 6033 --prompt='proxysql-deb> '
Ak chcete skontrolovať zoznam databáz v klastri Percona XtraDB, zadajte nasledujúci dotaz. V tomto príklade existuje jedna databáza 'percona' v klastri Percona XtraDB.
show databases;
Prepnite sa na databázu 'percona' pomocou dopytu 'USE' nižšie.
use percona
Potom zadajte nasledujúce dopyty na kontrolu tabuliek zoznamov v databáze 'percona'. Potom získajte dostupné údaje o aktuálnej databáze, v ktorej pracujete.
show tables;
select * from example;
Mali by ste dostať takýto výstup - Databázy, ktoré sú uložené v Percona XtraDB Cluster sú prístupné z ProxySQL servera. To znamená, že vaša inštalácia ProxySQL ako nástroja na vyvažovanie záťaže pre Percona XtraDB Cluster bola úspešná.
Potom zadajte nasledujúce dopyty na vloženie nových údajov do databázy 'percona' a tabuľky 'príklad'.
INSERT INTO percona.example VALUES (4, 'pxc04');
INSERT INTO percona.example VALUES (5, 'pxc05');
Potom znova overte novo aktualizované údaje pomocou nasledujúceho dotazu. v prípade úspechu by ste mali získať nové údaje dostupné v tabuľke „príklad“. Toto potvrdzuje, že váš používateľ môže čítať a zapisovať do databáz na Percona XtraDB Cluster.
select * from example;
Nakoniec, aby ste sa uistili, že vaše nové údaje sú aktualizované na Percona XtraDB Cluster, musíte overiť priamo zo servera percona XtraDB Cluster.
Prihláste sa na svoj server Percona XtraDB Cluster, vstúpte do shellu MySQL cez používateľa root a potom spustite nasledujúci dotaz na získanie údajov z tabuľky „percona“ „príklad“ .
select * from percona.example;
Keď budete úspešní, mali by ste získať nové údaje, ktoré ste pridali cez server ProxySQL.
S ohľadom na túto skutočnosť je vaša inštalácia servera ProxySQL ako vyrovnávača zaťaženia pre klaster MySQL alebo klaster Percona XtraDB úspešná.
Záver
V tejto príručke ste nakonfigurovali vyvažovanie záťaže klastra MySQL alebo klastra Percona XtraDB cez ProxySQL na serveri Debian 11. Nainštalovali ste ProxySQLv2, pridali ste Percona XtraDB Cluster do ProxySQL a nakonfigurovali ste Percona XtraDB Cluster monitorovanie na ProxySQL.
Okrem toho ste vytvorili a nakonfigurovali používateľov MySQL alebo Percona XtraDB Cluster, ktorých môžete použiť pre vaše aplikácie. Overili ste tiež vyvažovanie záťaže MySQL Cluster alebo Percona XtraDB Cluster cez ProxySQL, ktoré umožňuje vysokú dostupnosť a odolnosť voči chybám vášho databázového servera a vašich aplikácií.
Vďaka tomu môžete teraz pridať viac uzlov percona XtraDB Cluster na váš databázový server na vyrovnávanie zaťaženia. Môžete tiež nastaviť rozdelenie čítania/zápisu cez ProxySQL, nastaviť sharding ProxySQL a nastaviť SSL pripojenie z proxySQL do Percona XtraDB Cluster. Ak sa chcete dozvedieť viac o ProxySQL, navštívte oficiálnu dokumentáciu ProxySQL.