MariaDB 10.5 беше пуснат като GA през юни 2020 г. В изданието беше добавена поддръжка за Amazon S3 или всеки публичен или частен облак на трета страна, който поддържа S3 API. Той също така разполага с усъвършенствано управление на привилегиите, разширяващо неговата детайлност, което позволява на DBA например да предоставя ограничени привилегии на конкретен потребител на база данни за строга сигурност на вашата база данни.
MariaDB 10.5 също се похвали с подобренията си с механизма за съхранение на InnoDB за неговата производителност и някои нови променливи също са представени, но основните оттеглени променливи са маркирани като остарели или напълно премахнати. Например, имайте предвид, че в MariaDB 10.5 innodb_buffer_pool_instances вече е маркиран като остарял, докато е настроен да бъде премахнат във версия 10.6. Ако сте любопитни за каквато и да е причината, която казват, моля, проверете MDEV-15058.
С всички тези промени е най-добре да предоставите този блог, за да предоставите ръководство за това как да надстроите MariaDB 10.4 до MariaDB 10.5. Ще разгледаме стъпка по стъпка кои са нещата, които трябва да имате предвид за надграждане.
Неща, от които се нуждаете, преди да надстроите
Невинаги е най-добрият метод за надграждане на базата данни на живо в производството, без да се прави тест. Този прост жаргон дефинира термина, който наричаме SNAFU. Може да натиснете Google, за да намерите термина, но по принцип винаги е най-добре да не докосвате нормалното здраве, особено нормално функциониращите системи. Въпреки това, не винаги вашата система трябва да остане постоянна, тя трябва да бъде надстроена, за да използва корекции за сигурност, корекции на грешки и разширени функции, които присъстват в по-новите версии на версиите. Така че в този случай винаги имате планиран и настроен механизъм за възстановяване преди надстройката. В случай, че надстройването на системата се сблъска с проблеми, които са останали незабелязани, това може да окаже влияние върху бизнеса ви.
Винаги създавайте резервно копие на вашата база данни
В този случай винаги осигурявайте резервно копие на данните си. Можете да използвате инструменти като mariabackup или mydumper или, ако сте потребител на ClusterControl, тогава да използвате инструмента за управление на архивиране на база данни. Ако все още не сте подготвени за какъв тип резервно копие имате нужда, може да се наложи да проверите най-добрите практики, когато правите резервно копие.
Тест... Тествай... и Тествай отново
Докато архивирането предоставя данни за подаване в случай, че трябва да възстановите първоначалното му състояние, ако възникнат непредвидени проблеми, надстройката до основна версия трябва първо да се тества в машина за разработка или етап. За големите корпоративни компании е обичайна практика винаги да се прави регресионен тест върху целева среда за осигуряване на качеството или среда, където първо трябва да се приложи надстройката на сървърите на базата данни до основната версия. Всички системи от приложение и база данни трябва да продължат с регресионен тест или серия от QA тестове, докато всичко премине. Не е добра идея да опростявате тестов случай на вашето приложение, което отива към системите на базата данни и просто да изключите, че всичко е наред, стига базата данни да не се срине или просто е доказано само за кратък период от време, когато тестът е накратко, много прост тест, който покрива само малък процент от цялостната ви система. Тестването на надстройката ви първо в среда на етап или QA трябва да бъде приоритизирано, така че да постигне идеално добрата форма на вашето приложение, без да засяга бизнеса, а също и потребителите, които ще използват приложението ви, отколкото късно да осъзнаете, че надстройката на базата данни кара системата ви да се държи необичайно поради промени, които все още не сте открили.
Подгответе процедура за възстановяване
Всичко трябва да бъде планирано по време на надграждането на вашата база данни. Винаги, когато е налично архивиране и тестването разкрива силни и обещаващи резултати, то винаги се чувства сигурно и предвидимо в случай, че възникнат неочаквани предизвикателства по време на надграждане на вашите производствени сървъри на MariaDB бази данни. В този случай винаги пишете и подгответе процедура, която връща нещата към нормалното плавно и безпроблемно.
Ако вашият прозорец за поддръжка не е твърде дълъг, подготовката на процедура за възстановяване с помощта на автоматизирани инструменти като Ansible, Chef, Puppet, SaltStack или Terraform може да бъде добър избор за процедура за възстановяване. Той свежда до минимум човешките грешки и осигурява скорост и пъргавина за изпълнение на жизненоважни задачи. Въпреки че може да се повреди в случай, че възникне една грешка, ако скриптът за автоматизация се провали, това също означава, че не можете да пренебрегнете възможността това да се случи. Ето защо това също така посочва, че възстановяването трябва да бъде безпроблемно и да е било правилно тествано, за да може да се възстанови в валидна процедура.
Процедури за надграждане на MariaDB
Надстройването на вашата MariaDB версия 10.4 до 10.5 не е проблем, но е лесно. По-долу са стъпките, които можете да следвате, за да надстроите до най-новата версия на MariaDB 10.5.
Подгответе своето хранилище
Разбираемо е, че имате MariaDB 10.4, така че се предполага, че има налично хранилище в текущите ви сървърни възли на MariaDB. В противен случай все пак можете да добавите хранилище и това е просто.
Ubuntu/Debian
За Ubuntu/Debian базирани системи, за съществуващо хранилище на mariadb, можете да редактирате хранилището. Може да успеете да проверите дали съществуващите хранилища са във вашия хост или да откриете дали някъде има съществуващо хранилище на MariaDB. За да направите това, просто
$ grep ^[^#] /etc/apt/sources.list /etc/apt/sources.list.d/*
Обикновено имате хранилище mariadb.list. В моята настройка в Ubuntu 18.0 (Bionic) това се показва по следния начин:
[email protected]:/vagrant# cat /etc/apt/sources.list.d/mariadb.list
deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.4/ubuntu bionic main
Просто стартирайте следния команден ред, за да добавите хранилището MariaDB 10.5,
. /etc/os-release
sudo echo "deb [arch=amd64] http://ftp.osuosl.org/pub/mariadb/repo/10.5/${ID} ${VERSION_CODENAME} main" >> /etc/apt/sources.list.d/mariadb.list
Преди да могат да бъдат инсталирани пакети MariaDB, изисква пакетите, които ще бъдат инсталирани, да бъдат импортирани с публичен ключ GPG, който се използва за проверка на цифровите подписи на пакетите в тяхното хранилище. Можете да проверите вашите apt ключове със следното,
$ apt-key list |grep -C2 -i 'mariadb'
Ако ключовете не са импортирани,
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
или за по-нови базирани на Ubuntu/Debian версии, т.е. започвайки с Debian 9 (Stretch) и Debian Unstable (Sid) и Ubuntu 16.04 LTS (Xenial),
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
След като приключите, просто стартирайте
$ sudo apt update
CentOS/RHEL
За CentOS/RHEL, ако имате съществуващо хранилище, можете просто да добавите или редактирате файла. В противен случай добавянето на редовете по-долу за хранилището на MariaDB 10.5 ще е достатъчно за изискванията за хранилището (вижте mariadb.repo). Например, имам следното mariadb.repo в моя хост CentOS 8.0.
[[email protected] ~]# cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB Repository
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
[mariadb_10.5]
name = MariaDB Repository For 10.5
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
enabled = 1
gpgkey = https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1
Можете да проверите дали хранилището на MariaDB е активирано и работи добре:
[[email protected] ~]# dnf --disablerepo=* --enablerepo=mariadb_10.5 repolist
repo id repo name status
mariadb_10.5 MariaDB Repository For 10.5 83
Надстройте своите пакети MariaDB
Надстройването с MariaDB е много лесно. Първо се уверете, че сте изключили правилно сървъра на MariaDB.
За натоварен и жив производствен сървър се уверете, че нямате входящи връзки и че мръсните страници са правилно изхвърлени на диска. Преди да изключите сървъра, можете да зададете агресивно изчистването на мръсни страници с вашата машина за съхранение на Innodb, така че всички мръсни страници да бъдат изчистени и да ускорите процеса на изключване,
set global innodb_max_dirty_pages_pct = 0;
След това наблюдавайте мръсните страници със следното,
$ mysqladmin ext -i10 | grep dirty
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
След като е добре, изключете екземпляра на MariaDB,
systemctl stop mariadb
За клъстер от база данни главен/реплика е добра практика винаги да започвате надстройката си върху репликата(ите). Така че преди надстройката и след изключване се уверете, че сте добавили следното във вашия конфигурационен файл my.cnf,
[mysqld]
….
skip-slave-start
Това ви позволява да избегнете автоматично стартиране на нишките за репликация при стартиране на сървъра на MariaDB. Това ви дава повече безопасност и избягва допълнителни грешки при репликацията. Стартирайте нишките за репликация ръчно само след като сте готови със следния израз,
START SLAVE;
Ubuntu/Debian
Надстройването с базирани на Ubuntu/Debian системи е доста лесно,
sudo apt install --only-upgrade mariadb-server mariadb-client mariadb-backup mariadb-common
Разбира се, не предоставяйте опцията -y, за да можете да прегледате следните пакети, които да бъдат актуализирани.
Centos/RHEL
Също както при базираните на Ubuntu/Debian системи, CentOS/RHEL също не показва никакви проблеми за надграждане на текущата ви версия на MariaDB 10.4. Можете да изпълните следната команда по-долу, за да удовлетворите процеса,
$ dnf --disablerepo=* --enablerepo=mariadb_10.5 upgrade Mariadb-server MariaDB-client MariaDB-backup MariaDB-common Mariadb-shared
След инсталация/надстройка на пакет
След като пакетите бъдат надстроени. Тъй като това е голяма надстройка, не забравяйте да презаредите демона за systemd. Просто бягай,
$ systemctl daemon-reload
Сега, когато сте готови, стартирайте услугата mariadb
$ systemctl start mariadb
и стартирайте mysqld_upgrade,
$ mysql_upgrade
Докато изпълнявате mysql_upgrade, винаги наблюдавайте регистъра на грешките, за да можете да хванете всички грешки, преди да стартирате и стартирате всичко за нормалните си операции:
tail -5f /var/log/mariadb/mariadb.log
Съвети за надстройка за потребители на ClusterControl
Тъй като ClusterControl не осигурява надграждане на основни версии, когато извършвате надстройка на пакет, винаги не забравяйте да изключите режимите за автоматично възстановяване за вашия MariaDB клъстер. Задайте възлите в режим на поддръжка, така че сигналите да са безшумни и да не се уведомяват фалшиви сигнали.