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

Как да извършвате непрекъснати надстройки за MySQL

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

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

Малки срещу големи надстройки

По принцип малките надстройки са безопасни по начина, по който можете лесно да ги понижите или върнете назад и трябва да са съвместими с предишните пакети и функции.

Основната надстройка на версията включва някои рискове като премахване на пакет от база данни, съвместимост на конфигурацията и конекторите, оттеглени функции и др.

Така че, дори когато тестването е важно и за двата сценария, в случай на големи надстройки е задължително, ако искате да избегнете сериозни проблеми за вашия бизнес.

Преди надстройка

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

Резервни копия

Резервните копия винаги са важни и дори повече, ако искате да надстроите своята база данни. Ако нещо се обърка и други опции за възстановяване при бедствие не успеят, ще ви е необходимо резервно копие, за да възстановите вашата база данни. Така че, преди да започнете задачата, направете пълен архив (физическо или/или логическо) на текущата си база данни и я пазете в безопасност, докато се уверите, че всичко работи правилно за няколко дни/седмици.

Преглед на остарелите функции

Ако използвате функция, която е остаряла в новата версия, приложението ви може да се провали и ще трябва да върнете обратно, за да възстановите системите си, което ще генерира престой (в зависимост от подхода) и загуба на време. Проверката на оттеглената функция и сравнението им с тези, които използвате, ще избегне този неуспешен опит за надстройка.

Тестване

Това е важно не само за надстройки, но и за всяка промяна във вашата база данни или приложение. Наличието на тестова среда, която репликира производствената среда, може да ви спести време и да избегне неочаквани проблеми по време на надграждане или промяна на базата данни.

Отмяна

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

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

Проверки на доставчик

В зависимост от доставчика и версията, можете да използвате командата mysqlcheck, за да извършите предварителната проверка на текущата си инсталация и да потвърдите, че сте готови да започнете.

$ mysqlcheck -u root -p --all-databases --check-upgrade

Enter password:

mysql.columns_priv                                 OK

mysql.db                                           OK

mysql.engine_cost                                  OK

mysql.event                                        OK

mysql.func                                         OK

mysql.general_log                                  OK

mysql.gtid_executed                                OK

mysql.help_category                                OK

mysql.help_keyword                                 OK

mysql.help_relation                                OK

mysql.help_topic                                   OK

mysql.innodb_index_stats                           OK

mysql.innodb_table_stats                           OK

mysql.ndb_binlog_index                             OK

mysql.plugin                                       OK

mysql.proc                                         OK

mysql.procs_priv                                   OK

mysql.proxies_priv                                 OK

mysql.server_cost                                  OK

mysql.servers                                      OK

mysql.slave_master_info                            OK

mysql.slave_relay_log_info                         OK

mysql.slave_worker_info                            OK

mysql.slow_log                                     OK

mysql.tables_priv                                  OK

mysql.time_zone                                    OK

mysql.time_zone_leap_second                        OK

mysql.time_zone_name                               OK

mysql.time_zone_transition                         OK

mysql.time_zone_transition_type                    OK

mysql.user                                         OK

sys.sys_config                                     OK

Това е първата проверка, която трябва да се извърши преди надстройката и ще провери дали няма:

  • Таблици, използващи остарели типове данни или функции
  • Осираци frm файлове
  • Задействания с липсващ или празен дефинер или невалиден контекст за създаване

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

Ръчно подвижни надстройки за MySQL

Има различни подходи за извършване на непрекъснато надграждане. Може да е на място, като се използва репликация или дори комбинация от тях. Във всеки случай, ако искате да избегнете престой, не трябва да извършвате промени в приложението си по време на надстройката. За това можете да добавите Load Balancer пред вашите бази данни. Приложението ви ще се свърже с вашия Load Balancer и ще пренасочи трафика към наличните възли.

Да приемем, че имате MySQL репликация с 1 главен и 2 подчинени възела и 1 HAProxy възел пред тях:

Опростен начин за извършване на ръчно подвижно надграждане в тази среда може да бъде:

  • Деактивирайте един подчинен възел от вашия HAProxy
  • Уверете се, че нямате трафик на този подчинен възел
  • Надстройте ръчно подчинения възел
  • Проверете състоянието на репликация, за да се уверите, че е актуално
  • Деактивирайте главния възел във вашия HAProxy
  • Уверете се, че нямате трафик на главния си възел
  • Насърчаване на надстроения подчинен възел
  • Активирайте го във вашия HAProxy
  • Потвърдете, че новият главен адрес получава трафик
  • Преконфигурирайте втория си подчинен за репликация от новия главен
  • Деактивирайте второто подчинено устройство от вашия HAProxy
  • Уверете се, че нямате трафик на този подчинен възел
  • Надстройте ръчно подчинения възел
  • Проверете състоянието на репликация, за да се уверите, че е актуално
  • Активирайте го във вашия HAProxy
  • Потвърдете, че подчинения възел получава трафик (ако е необходимо)
  • Преконфигурирайте стария си главен файл, за да се репликира от новия главен файл
  • Надстройте стария главен възел ръчно
  • Проверете състоянието на репликация, за да се уверите, че е актуално
  • Активирайте го във вашия HAProxy
  • Потвърдете, че старият главен (сега подчинен) получава трафик (ако е необходимо)

Както можете да видите, дори и по опростен начин, тази задача изисква много стъпки и означава повече възможности нещо да се обърка.

Постоянни надстройки на ClusterControl за MySQL

Най-добрият начин да намалите възможността за отказ е чрез автоматизиране на всички (или почти всички) тези стъпки. С помощта на ClusterControl можете да извършите незначително надграждане на вашия MySQL клъстер само с няколко щраквания.

За да направите това, отидете на ClusterControl -> Изберете Cluster -> Manage -> Upgrades, където виждате опцията Upgrade.

Надстройките са онлайн и се извършват на един възел в даден момент. Възелът ще бъде спрян, софтуерът ще бъде актуализиран и след това възелът ще бъде стартиран отново. Ако възел не успее да се надстрои, процесът се прекратява.

Ако изберете опцията Надстройка, ще видите потвърждение за версията, която ще бъде надстроена:

И просто трябва да натиснете Upgrade, за да потвърдите тази задача. След това можете да наблюдавате процеса на надстройка в раздела за активност на ClusterControl:

В същото време ClusterControl ще преконфигурира вашите Load Balancers за изпращане на трафика към наличните възли.

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

Заключение

Надстройването е важна задача във всички компании и може да бъде рисковано, ако не вземете определени предпазни мерки и не следвате всички стъпки за надстройка правилно.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Конфигуриране на репликация на база данни Master-Master MySQL

  2. LAST_DAY() Примери – MySQL

  3. Транспониране на динамични колони в редове

  4. STR_TO_DATE() Примери – MySQL

  5. Как да синхронизирам база данни SQLite на телефон с Android с база данни MySQL на сървъра?