Denne artikel beskriver proceduren for udskiftning af den oprindelige MySQL®️ eller MariaDB®️-tjeneste, der er forudinstalleret på enhver typisk Plesk Onyx 11 CentOS 7-server. Proceduren skitserer fjernelse af de eksisterende MySQL-relaterede binære filer og erstatter dem med en passende version af Percona-binære filer. Når disse Percona binære filer er på plads, behandles en typisk flertrins MySQL Incremental versionsopgradering for at bringe de eksisterende databaser og Percona binære filer til den ønskede Percona 5.7 version.
Vedligeholdelsesforventninger:Længde og nedetid
Foreslået vedligeholdelsesvarighed: 90 minutter
Minimum forventet nedetid: ~30 minutters flaksende service
Den forventede nedetid for MySQL-tjenesten for denne procedure er mindre end 30 minutters tilgængelighed af MySQL-tjenesten, der går op og ned gentagne gange (flapper). Dette tal forudsætter, at alt går glat, og at der ikke opstår uforudsete fejl. Den foreslåede vedligeholdelseslængde giver tid til fejlfinding, hvis der skulle opstå fejl, samt yderligere 30 minutter i det usandsynlige tilfælde, at alle ændringer skal vendes tilbage og vedligeholdelsesplanen afbrydes.
Oversigt over vedligeholdelsesfaser
Planen er opdelt i forberedelsesopgaver og faser. Forberedelsesopgaver skal udføres før starttidspunktet for dit vedligeholdelsesvindue. Etaper udføres i hele vedligeholdelseshændelsesvinduet og gennemgår hele proceduren for at udføre hvert vigtigt trin i dispositionen.
Forberedelse – Forudgående vedligeholdelsesopgaver
Disse to vigtige opgaver skal udføres før det planlagte starttidspunkt for dit vedligeholdelsesvindue:
- Kopiér eksisterende MySQL-konfigurationsfil
- Stage-backup af MySQL-databasedata
Vi bruger trin nul i denne plan for at hjælpe med at fremskynde backup-processen af MySQL-dataene. Da mængden af data, MySQL vil indeholde, varierer voldsomt pr. server, er det en god praksis at køre en inkrementel backup-løsning, såsom rsync, forud til vinduet for vedligeholdelseshændelser. Rsync vil sikkerhedskopiere størstedelen af statiske data, mens MySQL stadig kører, og vil derefter sikkerhedskopiere den trinvise forskel, når MySQL er lukket ned for vedligeholdelse.
Kopiér eksisterende MySQL-konfigurationsfil:
1) Lav en sikkerhedskopi af den eksisterende mig selv-konfigurationsfil.
cp -pv /etc/my.cnf{,.pre-percona.bak}
Stage-backup af MySQL-databasedata:
2) Kør følgende rsync for at klone MySQL-dataene. [VIGTIGT:efterfølgende skråstreg påkrævet]
rsync -vaH /var/lib/mysql{,.pre-percona}/
3) Vent på, at trin 1 er fuldført, før du starter trin 1.
Stage 1 – Luk MySQL og genkør Rsync Final Sync
Formålet med trin et er at sikre, at en uberørt sikkerhedskopi af MySQL-data er på plads, før du fortsætter. For at opnå dette er det nødvendigt at stoppe MySQL-tjenester fuldstændigt, så alle buffere skrives, og ingen yderligere ændringer bliver skrevet til databasen. Når den er stoppet, udføres rsync igen for at kopiere forskellene mellem de nu stoppede uberørte data og målsikkerhedskopieringsdataene.
1) Luk MySQL/MariaDB Service
systemctl stop mysql
2) Kør følgende rsync igen for at færdiggøre de klonede data. [VIGTIGT:efterfølgende skråstreg påkrævet]
rsync -vaH /var/lib/mysql{,.pre-percona}/
3) Vent på, at rsync er fuldført, før du går videre til trin 3.
Stage 2 – Erstat MariaDB 5.5 Binaries med Percona 5.5
BEMÆRK:MariaDB 5.5 er versionen installeret med Onyx 11 CentOS 7, så dette er udgangspunktet.Udskiftning af de eksisterende binære filer involverer at fjerne de nødvendige binære pakker fra systemet ved at bruge RPM-kommandolinjeværktøjet i stedet for yum. Dette gør det muligt at fjerne pakkerne uden at berøre nogen af de afhængigheder, der linker til andre systempakker. Da Percona, ligesom MariaDB, er en drop-in-erstatning for MySQL, vil de sammenkædede afhængigheder ikke kende forskellen, når de nye binære filer er på plads, og de vil fungere normalt.
1) Fjern MariaDB-pakker uden afhængigheder:
rpm -e --nodeps mariadb mariadb-libs mariadb-server
2) Fjern mariadb-devel-pakke (gør dette som en separat kommando fra oven for at undgå fjernelsesfejl, gør til manglende pakke)
rpm -e --nodeps mariadb-devel
3) Installer Percona repository:
yum install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm
4) Installer Percona DB-server:
yum install Percona-Server-client-55 Percona-Server-server-55 Percona-Server-shared-55
5) Udfør følgende kommandoer (tillader InnoDB plugin at indlæse korrekt)
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) Sørg for, at der ikke er nogen processer, der lytter på port 3306, og luk processen, hvis nogen.
netstat -tulpn | grep 3306
7) Start MySQL (nu Percona 5.5)
service mysql start
8) Kør mysql_upgrade script
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
9) [Valgfrit] Aktiver Percona XtraDB Cluster UDF fra 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) Genstart MySQL for at fuldføre opgraderingsproceduren
systemctl start mysql
Trin 3 – Skift Plesk MySQL-pakken til Plesk MySQL-fællesskabspakken
At køre Percona på Plesk er en ikke-understøttet konfiguration. Af denne grund, for at tilfredsstille afhængighedsforbindelser mellem Plesk MySQL-pakken og de nye Percona-binære filer, er det nødvendigt at skifte Plesk MySQL-udgivelsen til at bruge Plesk MySQL-fællesskabsudgivelsen i stedet. Ændringen er nødvendig for at lette opgradering og nedgradering af Percona-versioner.
1) Opret den nødvendige repo-konfigurationsfil:
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) Installer "plesk-mysql-server-community"-pakken fra det nye lager:
yum install plesk-mysql-server-community
3) Deaktiver filen /etc/yum.repos.d/plesk178.repo, da den ikke længere er nødvendig:
mv /etc/yum.repos.d/plesk178.repo{,.disabled}
4) Fjern "plesk-mysql-server"-pakken uden at røre ved afhængigheder.
rpm -e --nodeps plesk-mysql-server
Percona skulle nu være installeret og fungere på basis 5.5-versionen. De næste trin er identiske med den typiske MySQL-opgraderingsproces, hvor binære filer opgraderes, og derefter foretages skemaopdateringerne manuelt ved hjælp af mysql_upgrade-værktøjet.
Opgrader Percona 5.5 til 5.6
1) Stop MySQL-tjenesten:
service mysql stop
2) Fjern Percona 55-pakker uden afhængigheder:
rpm -e --nodeps Percona-Server-shared-55 Percona-Server-client-55 Percona-Server-server-55
3) Installer Percona 56-pakker
yum install Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56
4) Sørg for, at der ikke er nogen processer, der lytter på port 3306, og luk processen, hvis nogen.
netstat -tulpn | grep 3306
5) Start MySQL-tjenesten:
service mysql start
6) Opgrader MySQL-tabeller:
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
Stage 4 – Opgrader Percona 5.6 til 5.7
1) Stop MySQL-tjenesten:
service mysql stop
2) Fjern Percona 56-pakker uden afhængigheder:
rpm -e --nodeps Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56
3) Installer Percona 57-pakker
yum install Percona-Server-shared-57 Percona-Server-client-57 Percona-Server-server-57
4) Sørg for, at der ikke er nogen processer, der lytter på port 3306, og luk processen, hvis nogen.
netstat -tulpn | grep 3306
5) Start MySQL-tjenesten:
service mysql start
6) Opgrader MySQL-tabeller:
mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`
Trin 5 – Afslutning af opgradering
Systemet skulle nu køre Percona 5.7 og være fuldt tilgængeligt for applikationer. På dette trin skal alle websteder eller applikationer, der bruger en database, testes og eventuelle fejl undersøges.