Mysql
 sql >> база данни >  >> RDS >> Mysql

Балансиране на натоварването на базата данни в облака - MySQL Master Failover с ProxySQL 2.0:Част първа (внедряване)

Облакът предоставя много гъвкави среди за работа. Можете лесно да го мащабирате нагоре и надолу, като добавяте или премахвате възли. Ако има нужда, можете лесно да създадете клонинг на вашата среда. Това може да се използва за процеси като надстройки, тестове за натоварване, възстановяване при бедствия. Основният проблем, с който трябва да се справите, е, че приложенията трябва да се свързват с базите данни по някакъв начин, а гъвкавите настройки могат да бъдат трудни за бази данни - особено при настройките master-slave. За щастие има някои опции за улесняване на този процес.

Един от начините е да използвате прокси за база данни. Има няколко прокси сървъра, от които да избирате, но в тази публикация в блога ще използваме ProxySQL, добре познат прокси, достъпен за MySQL и MariaDB. Ще покажем как можете да го използвате за ефективно преместване на трафик между MySQL възли без видимо въздействие върху приложението. Също така ще обясним някои ограничения и недостатъци на този подход.

Първоначална настройка на облак

Първо, нека обсъдим настройката. Ще използваме екземпляри на AWS EC2 за нашата среда. Тъй като ние само тестваме, ние всъщност не се интересуваме от висока наличност, освен това, което искаме да докажем, че е възможно - безпроблемни главни промени. Следователно ще използваме един възел на приложението и един възел на ProxySQL. Съгласно добрите практики, ние ще разположим ProxySQL на възела на приложението и приложението ще бъде конфигурирано да се свързва с ProxySQL чрез Unix сокет. Това ще намали излишните разходи, свързани с TCP връзките и ще увеличи сигурността - трафикът от приложението към проксито няма да напусне локалния екземпляр, оставяйки само ProxySQL -> MySQL връзка за криптиране. Отново, тъй като това е прост тест, няма да настроим SSL. В производствени среди искате да направите това, дори ако използвате VPC.

Околната среда ще изглежда като на диаграмата по-долу:

Като приложение ще използваме Sysbench - синтетична програма за сравнение за MySQL . Той има опция за деактивиране и активиране на използването на транзакции, които ще използваме, за да демонстрираме как ProxySQL ги обработва.

Инсталиране на MySQL репликационен клъстер с помощта на ClusterControl

За да направим внедряването бързо и ефективно, ще използваме ClusterControl за внедряване на настройката за репликация на MySQL вместо нас. Инсталирането на ClusterControl изисква само няколко стъпки. Тук няма да навлизаме в подробности, но трябва да отворите нашия уебсайт, регистрацията и инсталирането на ClusterControl трябва да бъде доста лесно. Моля, имайте предвид, че трябва да настроите SSH без парола между екземпляр на ClusterControl и всички възли, които ще управляваме с него.

След като ClusterControl бъде инсталиран, можете да влезете. Ще ви бъде представен съветник за внедряване:

Тъй като вече имаме екземпляри, работещи в облак, просто ще продължим с Опция „Разгръщане“. Ще ни бъде представен следния екран:

Ще изберем MySQL репликация като тип клъстер и трябва да осигурим свързаност подробности. Това може да бъде връзка чрез root потребител или може също да бъде sudo потребител със или без парола.

В следващата стъпка трябва да вземем някои решения. Ще използваме Percona Server за MySQL в последната му версия. Трябва също да дефинираме парола за root потребителя на възлите, които ще разположим.

В последната стъпка трябва да дефинираме топология - ще продължим с това, което предложихме в началото - господар и трима роби.

ClusterControl ще започне внедряването - можем да го проследим в раздела Активност, както е показано на екранната снимка по-горе.

След като внедряването приключи, можем да видим клъстера в списъка с клъстери:

Инсталиране на ProxySQL 2.0 с помощта на ClusterControl

Следващата стъпка ще бъде внедряването на ProxySQL. ClusterControl може да направи това вместо нас.

Можем да направим това в Управление -> Балансиране на натоварване.

Тъй като просто тестваме нещата, ще използваме повторно екземпляра на ClusterControl за ProxySQL и Sysbench. В реалния живот вероятно бихте искали да използвате вашия „истински“ сървър на приложения. Ако не можете да го намерите в падащото меню, винаги можете да напишете адреса на сървъра (IP или име на хост) на ръка.

Искаме също да дефинираме идентификационни данни за потребители за наблюдение и администратор. Също така проверихме два пъти дали ProxySQL 2.0 ще бъде внедрен (винаги можете да го промените на 1.4.x, ако имате нужда).

В долната част на съветника ще дефинираме потребителя, който ще бъде създаден както в MySQL, така и в ProxySQL. Ако имате съществуващо приложение, вероятно искате да използвате съществуващ потребител. Ако използвате много потребители за приложението си, винаги можете да импортирате останалите от тях по-късно, след като ProxySQL ще бъде разгърнат.

Искаме да гарантираме, че всички MySQL екземпляри ще бъдат конфигурирани в ProxySQL. Ще използваме изрични транзакции, така че да настроим превключвателя съответно. Това е всичко, което трябва да направим – останалото е да щракнем върху бутона „Разгръщане на ProxySQL“ и да оставим ClusterControl да свърши своето.

Когато инсталацията приключи, ProxySQL ще се покаже в списъка с възли в клъстера. Както можете да видите на екранната снимка по-горе, той вече откри топологията и разпредели възли между групите за четене и записване.

Инсталиране на Sysbench

Последната стъпка ще бъде да създадем нашето „приложение“, като инсталираме Sysbench. Процесът е доста прост. Първо трябва да инсталираме предпоставки, библиотеки и инструменти, необходими за компилиране на Sysbench:

[email protected]:~# apt install git automake libtool make libssl-dev pkg-config libmysqlclient-dev

След това искаме да клонираме хранилището на sysbench:

[email protected]:~# git clone https://github.com/akopytov/sysbench.git

Накрая искаме да компилираме и инсталираме Sysbench:

[email protected]:~# cd sysbench/

[email protected]:~/sysbench# ./autogen.sh && ./configure && make && make install

Това е всичко, Sysbench е инсталиран. Сега трябва да генерираме някои данни. За това първо трябва да създадем схема. Ще се свържем с локалния ProxySQL и чрез него ще създадем схема „sbtest“ на главния. Моля, имайте предвид, че използвахме Unix сокет за връзка с ProxySQL.

[email protected]:~/sysbench# mysql -S /tmp/proxysql.sock -u sbtest -psbtest

mysql> CREATE DATABASE sbtest;

Query OK, 1 row affected (0.01 sec)

Сега можем да използваме sysbench, за да попълним базата данни с данни. Отново използваме Unix сокет за връзка с проксито:

[email protected]:~# sysbench /root/sysbench/src/lua/oltp_read_write.lua --threads=4 --events=0 --time=3600 --mysql-socket=/tmp/proxysql.sock --mysql-user=sbtest --mysql-password=sbtest --tables=32 --report-interval=1 --skip-trx=on --table-size=100000 --db-ps-mode=disable prepare

След като данните са готови, можем да продължим към нашите тестове.

Заключение

Във втората част на този блог ще обсъдим обработката от ProxySQL на връзките, преодоляването при отказ и неговите настройки, които могат да ни помогнат да управляваме главния превключвател по начин, който ще бъде най-малко натрапчив за приложението.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изчисляване на разстоянието между пощенските кодове в PHP

  2. Как да добавите колона за автоматично увеличение в съществуваща таблица в MySQL

  3. Каква е разликата между BIT и TINYINT в MySQL?

  4. Как да покажа грешки за моята MySQLi заявка?

  5. Предупреждение:mysqli_connect():(HY000/2002):Няма такъв файл или директория