W tym artykule opisano procedurę zastępowania natywnej usługi MySQL®️ lub MariaDB®️, która jest preinstalowana na dowolnym typowym serwerze Plesk Onyx 11 CentOS 7. Procedura obejmuje usunięcie istniejących plików binarnych związanych z MySQL i zastąpienie ich odpowiednią wersją plików binarnych Percony. Po utworzeniu tych plików binarnych Percony, typowa wieloetapowa aktualizacja wersji MySQL Incremental jest przetwarzana w celu dostosowania istniejących baz danych i plików binarnych Percony do pożądanej wersji Percona 5.7.
Oczekiwania dotyczące konserwacji:długość i przestoje
Sugerowany czas trwania konserwacji: 90 minut
Minimalny oczekiwany czas przestoju: ~30 minut trzepotania serwisu
Przewidywany czas przestoju usługi MySQL dla tej procedury to mniej niż 30 minut ciągłego zwiększania i zmniejszania dostępności usługi MySQL (trzepotanie). Ta liczba zakłada, że wszystko idzie gładko i nie występują żadne nieprzewidziane błędy. Sugerowana długość konserwacji zapewnia czas na rozwiązanie problemu w przypadku wystąpienia błędu, a także dodatkowe 30 minut w mało prawdopodobnym przypadku, gdy wszystkie zmiany będą musiały zostać cofnięte, a plan konserwacji przerwany.
Omówienie etapów konserwacji
Plan podzielony jest na zadania i etapy przygotowawcze. Zadania przygotowawcze należy zakończyć przed rozpoczęciem okna konserwacji. Etapy są przeprowadzane w całym oknie konserwacji i przechodzą przez całą procedurę w celu wykonania każdego ważnego etapu zarysu.
Przygotowanie – zadania przed konserwacją
Te dwa ważne zadania muszą zostać wykonane przed zaplanowanym czasem rozpoczęcia okresu konserwacji:
- Skopiuj istniejący plik konfiguracyjny MySQL
- Etapowa kopia zapasowa danych bazy danych MySQL
W tym planie używamy etapu zero, aby przyspieszyć proces tworzenia kopii zapasowej danych MySQL. Ponieważ ilość danych przechowywanych przez MySQL różni się znacznie w zależności od serwera, dobrą praktyką jest uruchomienie rozwiązania do przyrostowej kopii zapasowej, takiego jak rsync, prior do okna zdarzenia konserwacji. Rsync wykona kopię zapasową większości statycznych danych, gdy MySQL nadal działa, a następnie wykona kopię zapasową przyrostowej różnicy po zamknięciu MySQL w celu konserwacji.
Skopiuj istniejący plik konfiguracyjny MySQL:
1) Utwórz kopię zapasową istniejącego pliku konfiguracyjnego siebie.
cp -pv /etc/my.cnf{,.pre-percona.bak}
Etapowa kopia zapasowa danych bazy danych MySQL:
2) Uruchom następujący rsync, aby sklonować dane MySQL. [WAŻNE:wymagany końcowy ukośnik]
rsync -vaH /var/lib/mysql{,.pre-percona}/
3) Poczekaj na zakończenie kroku 1 przed rozpoczęciem etapu 1.
Etap 1 – Wyłącz MySQL i ponownie uruchom Rsync Final Sync
Celem pierwszego etapu jest zapewnienie nieskazitelnej kopii zapasowej danych MySQL przed kontynuowaniem. Aby to osiągnąć, konieczne jest całkowite zatrzymanie usług MySQL, aby wszystkie bufory zostały zapisane i żadne dodatkowe zmiany nie były zapisywane w bazie danych. Po zatrzymaniu rsync jest wykonywany ponownie, aby skopiować różnice między zatrzymanymi pierwotnymi danymi a docelowymi danymi kopii zapasowej.
1) Wyłącz usługę MySQL/MariaDB
systemctl stop mysql
2) Uruchom ponownie następujący program rsync, aby sfinalizować sklonowane dane. [WAŻNE:wymagany końcowy ukośnik]
rsync -vaH /var/lib/mysql{,.pre-percona}/
3) Poczekaj na zakończenie rsync, zanim przejdziesz do etapu 3.
Etap 2 – Zamień pliki binarne MariaDB 5.5 na Percona 5.5
UWAGA:MariaDB 5.5 to wersja instalowana z Onyx 11 CentOS 7, więc jest to punkt wyjścia.Zastąpienie istniejących plików binarnych wiąże się z usunięciem niezbędnych pakietów binarnych z systemu za pomocą narzędzia wiersza poleceń RPM zamiast yum. Pozwala to na usunięcie pakietów bez dotykania żadnej z zależności łączących się z innymi pakietami systemowymi. Ponieważ Percona, podobnie jak MariaDB, jest bezpośrednim zamiennikiem MySQL, po wprowadzeniu nowych plików binarnych, połączone zależności nie będą rozpoznawać różnicy i będą działać normalnie.
1) Usuń pakiety MariaDB bez zależności:
rpm -e --nodeps mariadb mariadb-libs mariadb-server
2) Usuń pakiet mariadb-devel (zrób to jako oddzielne polecenie od powyższego, aby uniknąć niepowodzenia usuwania z braku pakietu)
rpm -e --nodeps mariadb-devel
3) Zainstaluj repozytorium Percona:
yum install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm
4) Zainstaluj serwer Percona DB:
yum install Percona-Server-client-55 Percona-Server-server-55 Percona-Server-shared-55
5) Wykonaj następujące polecenia (pozwala na poprawne załadowanie wtyczki InnoDB)
mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak
cp -a /var/lib/mysql/ibdata1.bak /var/lib/mysql/ibdata1
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
cp -a /var/lib/mysql/ib_logfile0.bak /var/lib/mysql/ib_logfile0
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak
cp -a /var/lib/mysql/ib_logfile1.bak /var/lib/mysql/ib_logfile1
6) Upewnij się, że nie ma żadnych procesów nasłuchujących na porcie 3306 i zabij proces, jeśli taki istnieje.
netstat -tulpn | grep 3306
7) Uruchom MySQL (teraz Percona 5.5)
service mysql start
8) Uruchom skrypt mysql_upgrade
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
9) [Opcjonalnie] Włącz Percona XtraDB Cluster UDF z Percona Toolkit:
plesk db -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'"
plesk db -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'"
plesk db -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"
10) Uruchom ponownie MySQL, aby zakończyć procedurę aktualizacji
systemctl start mysql
Etap 3 – Przełącz pakiet Plesk MySQL na pakiet społeczności Plesk MySQL
Uruchamianie Percony na Plesku to nieobsługiwana konfiguracja. Z tego powodu, aby spełnić zależności między pakietem Plesk MySQL a nowymi plikami binarnymi Percona, konieczne jest przełączenie wersji Plesk MySQL na korzystanie z wersji Plesk MySQL Community. Zmiana jest konieczna, aby ułatwić aktualizowanie i obniżanie wersji Percony.
1) Utwórz niezbędny plik konfiguracyjny repozytorium:
printf '[PLESK_17_8_11-dist] %s\nname=PLESK_17_5_3 dist %s\nbaseurl=http://autoinstall.plesk.com/PSA_17.8.11/dist-rpm-CentOS-7-x86_64/ %s\nenabled=1 %s\ngpgcheck=1 %s\n' > /etc/yum.repos.d/plesk178.repo
2) Zainstaluj pakiet „plesk-mysql-server-community” z nowego repozytorium:
yum install plesk-mysql-server-community
3) Wyłącz plik /etc/yum.repos.d/plesk178.repo, ponieważ nie jest już potrzebny:
mv /etc/yum.repos.d/plesk178.repo{,.disabled}
4) Usuń pakiet „plesk-mysql-server” bez dotykania zależności.
rpm -e --nodeps plesk-mysql-server
Percona powinna być teraz zainstalowana i działać na podstawowej wersji 5.5. Kolejne etapy są identyczne z typowym procesem aktualizacji MySQL, w którym uaktualniane są pliki binarne, a następnie aktualizacje schematu są dokonywane ręcznie za pomocą narzędzia mysql_upgrade.
Uaktualnij Perconę 5.5 do 5.6
1) Zatrzymaj usługę MySQL:
service mysql stop
2) Usuń pakiety Percona 55 bez zależności:
rpm -e --nodeps Percona-Server-shared-55 Percona-Server-client-55 Percona-Server-server-55
3) Zainstaluj pakiety Percona 56
yum install Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56
4) Upewnij się, że nie ma żadnych procesów nasłuchujących na porcie 3306 i zabij proces, jeśli taki istnieje.
netstat -tulpn | grep 3306
5) Uruchom usługę MySQL:
service mysql start
6) Uaktualnij tabele MySQL:
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
Etap 4 – Ulepsz Perconę 5.6 do 5.7
1) Zatrzymaj usługę MySQL:
service mysql stop
2) Usuń pakiety Percona 56 bez zależności:
rpm -e --nodeps Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56
3) Zainstaluj pakiety Percona 57
yum install Percona-Server-shared-57 Percona-Server-client-57 Percona-Server-server-57
4) Upewnij się, że nie ma żadnych procesów nasłuchujących na porcie 3306 i zabij proces, jeśli taki istnieje.
netstat -tulpn | grep 3306
5) Uruchom usługę MySQL:
service mysql start
6) Uaktualnij tabele MySQL:
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
Etap 5 – Finalizacja aktualizacji
System powinien teraz działać w wersji Percona 5.7 i być w pełni dostępny dla aplikacji. Na tym etapie wszelkie witryny lub aplikacje korzystające z bazy danych powinny zostać przetestowane, a wszelkie błędy zbadane.