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

Създаване на високодостъпна база данни за Moodle с помощта на MySQL репликация

Moodle е система за управление на обучението с отворен код, широко използвана от училища и университети по целия свят. Проектът стартира през 2002 г. от Мартин Дугиамас, с цел да предостави на учащите, учителите, преподавателите сигурна, стабилна, отворена и безплатна платформа за учебни среди.

Самият софтуер  е написан на PHP и поддържа различни RDBMS, като:Oracle, MySQL, PostgreSQL, MariaDB и др.

В този блог ще обсъдим как да направим базата данни Moodle устойчива с помощта на MySQL репликация, която е необходима за поддържане на внедряване на Moodle с висока достъпност. Ще внедрим чрез ClusterControl настройка на база данни, състояща се от главен/подчинен MySQL репликация, предствана от излишни балансатори на натоварване на базата данни.

Архитектура

Репликацията на MySQL е популярен начин за постигане на излишък за базата данни. Важно е да се гарантира, че всички записи се изпращат към главния, докато четенията могат да бъдат балансирани на натоварването между подчинените. За да направим това, ще използваме ProxySQL, който е базиран на база данни балансьор на натоварване, който се грижи за разделянето на трафика за запис и изпращането му до главния. Тъй като главната роля може да се премести на друг сървър, например в случай на срив на база данни, ProxySQL може да следи новия главен и да се увери, че трафикът за запис е насочен съответно. VirtualIP се управлява от Keepalived, за да се осигури една устойчива крайна точка на база данни за всички сървъри на приложения на Moodle.

Наблюдение и управление при отказ

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

Връзката с приложението използва VIP (виртуален IP адрес) в низа за връзка с базата данни, така че ако нещо се случи от страната на базата данни, това ще сведе до минимум въздействието от вашето приложение и няма нужда да преконфигурирате каквото и да е. ClusterControl е компонентът, който следи базите данни и автоматизира преодоляването на отказ, например насърчаване на една от репликите до нов главен и възстановяване на неуспешния сървър на база данни.

Настройка на базата данни

Ще използваме ClusterControl, за да разгърнем нашата настройка на базата данни.

Първо, трябва да имате специален сървър за настройка на ClusterControl. Инсталацията е много лесна, просто трябва да изтеглите install-cc от хранилището на multiplenines, да дадете разрешение за изпълнение на файла и да го стартирате. Както е показано по-долу:  

$ wget http://www.severalnines.com/downloads/cmon/install-cc

$ chmod +x install-cc

$ sudo ./install-cc   # omit sudo if you run as root

Можете да стартирате горния скрипт във всякакъв вид Linux вариант. Той ще разположи всичко, което се изисква от ClusterControl.

След като ClusterControl стартира и работи, изберете бутона Разгръщане от таблото за управление на ClusterControl.

 

Ще покаже нова страница, която показва някои опции. Ще изберем първата опция за разгръщане за нашата настройка на MySQL репликация.

Трябва да имате достъп до целевия сървър на база данни чрез SSH. Не забравяйте да активирате SSH без парола и да предоставите sudo достъп на потребителя. Определете името на клъстера и щракнете върху Продължи, както е показано по-долу:

На следващата страница от вас се изисква да изберете доставчика на базата данни, версията на базата данни, която искате да инсталирате, паролата на root, портът на сървъра, ако искате да имате персонализирани или специфични портове, и директорията с данни MySQL.

След като цялата информация бъде попълнена, можете да преминете към следващата стъпка, което е страницата Дефиниране на топологията. Моля, попълнете ip адреса на сървъра на базата данни, в този случай, докато настройваме MyQL репликацията с 1 главен и 2 реплики.

Разгръщането вече ще задейства работа, която ще „Създава клъстер“, вие просто трябва да изчакате, докато работата приключи.

Настройка на ProxySQL

След като базата данни бъде разгърната, можете да преминете през Load Balancer от менюто на вашия клъстер. Моля, отидете на Управление -> Load Balancer. Ще се покаже, както следва:

Разгръщането на ProxySQL изисква да попълните известна информация, като например IP адреса, където искате да инсталирате ProxySQL, парола за администриране и наблюдение на потребителите и да разрешите на инстанцията да балансира натоварването. След това просто щракнете върху Разгръщане. За висока наличност се нуждаете от поне 2 балансира на натоварването, инсталирани пред базата данни.

Keepalived настройка

Услугата Keepalived се използва, за да направи вашия балансьор на натоварване високо достъпен. Настройката е наистина лесна, все още на страницата за балансиране на натоварването има раздел за Keepalived, както е показано по-долу:

Изберете типа на разполагане на балансиране на натоварването, в този случай използваме ProxySQL, изберете услугата ProxySQL за поддържане на активност. Попълнете виртуалния IP адрес и мрежовия интерфейс. След това просто щракнете върху Разгръщане на Keepalived, той автоматично ще задейства нова задача за настройка на услугата.

Настройка на приложението

Преди да настроите приложението moodle, трябва да подготвите потребителските идентификационни данни и самата база данни. За идентификационните данни можете да отидете на:Управление -> Схеми и потребители.

Трябва да попълните някаква информация, напр. потребителско име, парола, име на хост и привилегия. След това просто щракнете върху Създаване на потребител. Това ви позволява да създадете потребител за приложението Moodle:

За създаване на база данни, можете да изберете раздела Създаване на база данни на същия страница като потребители.

Следващата стъпка е да конфигурирате идентификационните данни от страна на ProxySQL, можете да импортирате идентификационни данни, които сте създали в ProxySQL. Можете да отидете до възела ProxySQL, да изберете раздела Потребители, от дясната страна има бутон Импортиране на потребител.

Потърсете потребителя на moodle_application и след това изберете потребителя. На следващата страница трябва да дефинирате хостгрупата по подразбиране за потребителя и след това да импортирате потребители.

Моля, повторете стъпките за импортиране на потребителите на другия възел на ProxySQL, или можете да използвате Sync Instances в менюто ProxySQL.

Трябва да изтеглите приложението moodle от официалния уебсайт на moodle (re. https://www.moodle.com). ://download.moodle.org/), последната версия, когато е написан този блог, е 3.9.1. Те предоставят два типа компресирани файлове, компресиран zip и tar zip. Изтеглете zip файла и го поставете във вашите сървъри за приложения. Вижте изискванията за софтуера moodle, т.е.:уеб сървър, PHP библиотека.

Разархивирайте zip файловете във временна директория, създайте директорията /var/www/html/moodle, копирайте извлечената директория в папката. Не забравяйте да дадете разрешение 0755 за директорията. След това можете да получите достъп до уеб браузъра за следващата настройка. Изберете езика, както е показано по-долу:

Изберете драйвера на базата данни за вашата настройка на MySQL, както следва:

Трябва да попълните информация за идентификационните данни на базата данни, която сте направили по-рано, за пример:потребителско име, парола, хост, база данни, порт. Името на хоста трябва да е вашият виртуален IP адрес, а портът е ProxySQL порт, който е 6032.

Хостът на базата данни ще бъде вашият виртуален IP адрес. След като попълните полетата, щракнете върху Напред и сте готови.

Създаването на високодостъпна база данни за Moodle с помощта на ClusterControl е много лесно и лесно, можете да създадете своя собствена база данни, която ще поддържа 99,99% време за работа на вашата услуга.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL динамична централна таблица

  2. Активирайте Entity Framework 6 за MySql (C#) в WinForms на Microsoft Visual Studio 2013

  3. Вмъкване на данни от една таблица в друга в MySQL

  4. Грешка при използване освен в заявка

  5. Най-добрият начин да проверите дали mysql_query е върнал някакви резултати?