MariaDB 10.5 została wydana jako GA w czerwcu 2020 r. W wydaniu dodano obsługę Amazon S3 lub dowolnej chmury publicznej lub prywatnej innej firmy, która obsługuje interfejs API S3. Oferuje również zaawansowaną obsługę uprawnień, która rozszerza jego szczegółowość, co umożliwia administratorowi na przykład przyznanie ograniczonych uprawnień określonemu użytkownikowi bazy danych w celu zapewnienia ścisłego bezpieczeństwa bazy danych.
MariaDB 10.5 również pochwalił się ulepszeniami silnika pamięci masowej InnoDB ze względu na jego wydajność, a także przedstawiono kilka nowych zmiennych, ale główne przestarzałe zmienne zostały oznaczone jako przestarzałe lub całkowicie usunięte. Zwróć na przykład uwagę, że w MariaDB 10.5 innodb_buffer_pool_instances została już oznaczona jako przestarzała, podczas gdy w wersji 10.6 jest ustawiona do usunięcia. Jeśli jesteś ciekawy, z jakiego powodu mówią, sprawdź MDEV-15058.
Po tych wszystkich zmianach najlepiej jest udostępnić ten blog, aby zapewnić przewodnik dotyczący uaktualniania MariaDB 10.4 do MariaDB 10.5. Omówimy krok po kroku, co należy wziąć pod uwagę przy aktualizacji.
Rzeczy, których potrzebujesz przed aktualizacją
Nie zawsze jest to najlepsza metoda aktualizacji bazy danych na żywo w środowisku produkcyjnym bez przeprowadzania testów. Ten prosty żargon definiuje termin, który nazywamy SNAFU. Możesz trafić do Google, aby znaleźć ten termin, ale w zasadzie zawsze najlepiej nie dotykać normalnego stanu zdrowia, zwłaszcza normalnie funkcjonujących systemów. Jednak nie zawsze system musi pozostać stały, musi być aktualizowany, aby korzystać z poprawek bezpieczeństwa, poprawek i zaawansowanych funkcji, które są obecne w nowszych wersjach. W takim przypadku zawsze masz zaplanowany mechanizm powrotu po awarii i skonfigurowany przed aktualizacją. W przypadku, gdy aktualizacja systemu wykryje problemy, które nie zostały zauważone, może to mieć wpływ na Twoją firmę.
Zawsze twórz kopię zapasową swojej bazy danych
W takim przypadku zawsze twórz kopię zapasową swoich danych. Możesz użyć narzędzi takich jak mariabackup lub mydumper lub, jeśli jesteś użytkownikiem ClusterControl, użyć narzędzia Database Backup Management. Jeśli nie jesteś jeszcze przygotowany na rodzaj potrzebnej kopii zapasowej, być może będziesz musiał sprawdzić najlepsze praktyki podczas tworzenia kopii zapasowej.
Testuj... Testuj... i testuj ponownie
Podczas gdy kopia zapasowa dostarcza dane do zasilania w przypadku konieczności przywrócenia stanu pierwotnego w przypadku wystąpienia nieprzewidzianych problemów, uaktualnienie do wersji głównej należy najpierw przetestować na maszynie programistycznej lub tymczasowej. W dużych przedsiębiorstwach powszechną praktyką jest zawsze przeprowadzanie testu regresji w docelowym środowisku QA lub środowisku przejściowym, w którym najpierw należy zastosować aktualizację serwerów bazy danych do głównej wersji. Wszystkie systemy z aplikacji i bazy danych muszą przejść test regresji lub serię testów QA, dopóki wszystko nie przejdzie. Nie jest dobrym pomysłem uproszczenie przypadku testowego aplikacji przechodzącego do systemów baz danych i po prostu wykluczenie, że wszystko jest w porządku, o ile baza danych nie ulegnie awarii lub po prostu zostało to udowodnione przez krótki czas, gdzie test jest krótki, bardzo prosty test, który obejmuje tylko niewielki procent całego systemu. Testowanie uaktualnienia najpierw w środowisku pomostowym lub QA musi być traktowane priorytetowo, tak aby osiągnąć idealnie dobry kształt aplikacji bez wpływu na stronę biznesową, a także na użytkowników, którzy będą korzystać z Twojej aplikacji, niż zdając sobie sprawę, że uaktualnienie bazy danych powoduje, że system zachowuje się nienormalnie z powodu zmian, których jeszcze nie odkryłeś.
Przygotuj procedurę przywracania
Wszystko należy zaplanować podczas aktualizacji bazy danych. Zawsze, gdy dostępna jest kopia zapasowa, a testy dają dobre i obiecujące wyniki, zawsze jest to bezpieczne i przewidywalne na wypadek nieoczekiwanych wyzwań podczas uaktualniania produkcyjnych serwerów baz danych MariaDB. W takim przypadku zawsze napisz i przygotuj procedurę, która sprawi, że wszystko wróci do normy płynnie i bezproblemowo.
Jeśli okres konserwacji nie jest zbyt długi, przygotowanie procedury przywracania przy użyciu zautomatyzowanych narzędzi, takich jak Ansible, Chef, Puppet, SaltStack lub Terraform może być dobrym wyborem do przeprowadzenia procedury przywracania. Minimalizuje błędy ludzkie i zapewnia szybkość i sprawność wykonywania ważnych zadań. Chociaż może to spowodować uszkodzenie w przypadku napotkania pojedynczego błędu, jeśli skrypt automatyzacji ulegnie awarii, oznacza to również, że nie możesz zignorować możliwości, że może się to zdarzyć. W związku z tym wskazuje to również, że przywracanie musi być bezproblemowe i zostało odpowiednio przetestowane, aby umożliwić przywrócenie do prawidłowej procedury.
Procedury aktualizacji MariaDB
Aktualizacja MariaDB w wersji 10.4 do 10.5 nie jest jeszcze kłopotliwa i prosta. Poniżej znajdują się kroki, które możesz wykonać, aby zaktualizować do najnowszej wersji MariaDB 10.5.
Przygotuj swoje repozytorium
Jest zrozumiałe, że masz MariaDB 10.4, więc zakłada się, że w bieżących węzłach serwera MariaDB znajduje się obecne repozytorium. W przeciwnym razie możesz i tak dodać repozytorium i to jest po prostu proste.
Ubuntu/Debian
W przypadku systemów opartych na Ubuntu/Debian, w przypadku istniejącego repozytorium mariadb można je edytować. Możesz być w stanie zweryfikować, czy istniejące repozytoria znajdują się na Twoim hoście lub sprawdzić, czy gdzieś istnieje repozytorium MariaDB. Aby to zrobić, po prostu
$ grep ^[^#] /etc/apt/sources.list /etc/apt/sources.list.d/*
Zazwyczaj masz repozytorium mariadb.list. W mojej konfiguracji w Ubuntu 18.0 (Bionic) wygląda to następująco:
[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
Wystarczy uruchomić następujący wiersz poleceń, aby dodać repozytorium 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
Przed zainstalowaniem pakietów MariaDB wymaga to zaimportowania pakietów z kluczem publicznym GPG, który służy do weryfikacji podpisów cyfrowych pakietów w ich repozytorium. Możesz sprawdzić swoje klucze apt w następujący sposób:
$ apt-key list |grep -C2 -i 'mariadb'
Jeśli klucze nie są importowane,
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
lub nowsze wersje oparte na Ubuntu/Debianie, tj. zaczynające się od Debian 9 (Stretch), Debian Unstable (Sid) i Ubuntu 16.04 LTS (Xenial),
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Gdy skończysz, po prostu uruchom
$ sudo apt update
CentOS/RHEL
W przypadku CentOS/RHEL, jeśli masz istniejące repozytorium, możesz po prostu dodać lub edytować plik. W przeciwnym razie dodanie poniższych wierszy dla repozytorium MariaDB 10.5 wystarczy do spełnienia wymagań repozytorium (patrz mariadb.repo). Na przykład mam następujący mariadb.repo na moim hoście 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
Możesz sprawdzić, czy repozytorium MariaDB jest włączone i działa poprawnie:
[[email protected] ~]# dnf --disablerepo=* --enablerepo=mariadb_10.5 repolist
repo id repo name status
mariadb_10.5 MariaDB Repository For 10.5 83
Uaktualnij swoje pakiety MariaDB
Aktualizacja za pomocą MariaDB jest bardzo prosta. Upewnij się, że najpierw poprawnie zamknąłeś serwer MariaDB.
W przypadku zajętego i działającego serwera produkcyjnego, upewnij się, że nie masz połączeń przychodzących i czy brudne strony są prawidłowo opróżniane na dysk. Przed wyłączeniem serwera możesz ustawić agresywnie opróżnianie brudnych stron za pomocą silnika pamięci masowej Innodb, aby wszystkie brudne strony zostały opróżnione i aby proces zamykania przebiegał szybciej,
set global innodb_max_dirty_pages_pct = 0;
Następnie monitoruj brudne strony za pomocą następujących,
$ mysqladmin ext -i10 | grep dirty
| Innodb_buffer_pool_pages_dirty | 0 |
| Innodb_buffer_pool_bytes_dirty | 0 |
Gdy wszystko będzie dobrze, zamknij instancję MariaDB,
systemctl stop mariadb
W przypadku klastra bazy danych master/replika dobrą praktyką jest rozpoczynanie uaktualniania zawsze od repliki. Dlatego przed aktualizacją i po wyłączeniu upewnij się, że dodałeś następujące elementy do pliku konfiguracyjnego my.cnf,
[mysqld]
….
skip-slave-start
Pozwala to uniknąć automatycznego uruchamiania wątków replikacji podczas uruchamiania serwera MariaDB. Zapewnia to większe bezpieczeństwo i pozwala uniknąć dalszych błędów w replikacji. Uruchom wątki replikacji ręcznie dopiero po przygotowaniu za pomocą następującej instrukcji,
START SLAVE;
Ubuntu/Debian
Aktualizacja do systemów opartych na Ubuntu/Debian jest dość prosta,
sudo apt install --only-upgrade mariadb-server mariadb-client mariadb-backup mariadb-common
Oczywiście nie należy podawać z opcją -y, aby można było przejrzeć następujące pakiety do aktualizacji.
Centy/RHEL
Tak samo jak w przypadku systemów opartych na Ubuntu/Debian, CentOS/RHEL również nie sprawia kłopotów z aktualizacją bieżącej wersji MariaDB 10.4. Możesz uruchomić następujące polecenie poniżej, aby wystarczyć do tego procesu,
$ dnf --disablerepo=* --enablerepo=mariadb_10.5 upgrade Mariadb-server MariaDB-client MariaDB-backup MariaDB-common Mariadb-shared
Po instalacji/aktualizacji pakietu
Po zaktualizowaniu pakietów. Ponieważ jest to główna aktualizacja, nie zapomnij przeładować demona dla systemd. Po prostu biegnij,
$ systemctl daemon-reload
Teraz, gdy wszystko jest gotowe, uruchom usługę mariadb
$ systemctl start mariadb
i uruchom mysqld_upgrade,
$ mysql_upgrade
Podczas uruchamiania mysql_upgrade zawsze monitoruj dziennik błędów, aby móc wykryć wszelkie błędy przed uruchomieniem i uruchomieniem wszystkiego w normalnych operacjach:
tail -5f /var/log/mariadb/mariadb.log
Wskazówki dotyczące aktualizacji dla użytkowników ClusterControl
Ponieważ ClusterControl nie zapewnia uaktualnienia wersji głównych, podczas wykonywania uaktualnienia pakietu zawsze nie zapomnij wyłączyć trybów automatycznego odzyskiwania klastra MariaDB. Ustaw węzły w trybie konserwacji, aby alerty były wyciszone i aby żadne fałszywe alerty nie były powiadamiane.