sql >> Databasteknik >  >> RDS >> Mysql

Hur man ersätter MySQL med Percona på Plesk CentOS 7

Den här artikeln beskriver proceduren för att ersätta den inbyggda MySQL®️- eller MariaDB®️-tjänsten som är förinstallerad på en typisk Plesk Onyx 11 CentOS 7-server. Proceduren beskriver borttagning av befintliga MySQL-relaterade binärer och ersätter dem med en adekvat version av Percona-binärfiler. När dessa Percona-binärer är på plats, bearbetas en typisk flerstegs MySQL Incremental versionsuppgradering för att föra de befintliga databaserna och Percona-binärerna till den önskade Percona 5.7-versionen.

Underhållsförväntningar:Längd &stillestånd

Föreslagen underhållstid: 90 minuter
Minsta förväntade driftstopp: ~30 minuters flaxande service

Den förväntade stilleståndstiden för MySQL-tjänsten för denna procedur är mindre än 30 minuter när MySQL-tjänstens tillgänglighet går upp och ner upprepade gånger (fladder). Denna siffra förutsätter att allt går smidigt och att inga oförutsedda fel uppstår. Den föreslagna underhållslängden tillåter tid för felsökning om fel skulle uppstå samt ytterligare 30 minuter i det osannolika fallet att alla ändringar måste återställas och underhållsplanen avbryts.

Översikt över underhållsstadier

Planen är uppdelad i förberedande uppgifter och stadier. Förberedelser bör slutföras före starttiden för ditt underhållsfönster. Etapper genomförs under underhållshändelsens fönster och går igenom hela proceduren för att utföra varje viktigt steg i dispositionen.

Förberedelser – Uppgifter före underhåll

Dessa två viktiga uppgifter måste slutföras innan den schemalagda starttiden för ditt underhållsfönster:

  • Kopiera befintlig MySQL-konfigurationsfil
  • Stagesäkerhetskopiering av MySQL-databasdata

Vi använder steg noll i denna plan för att påskynda säkerhetskopieringen av MySQL-data. Eftersom mängden data som MySQL kommer att innehålla varierar mycket per server, är det en god praxis att köra en inkrementell säkerhetskopieringslösning, som rsync, före till underhållshändelsefönstret. Rsync kommer att säkerhetskopiera majoriteten av statisk data medan MySQL fortfarande körs och sedan säkerhetskopiera den inkrementella skillnaden när MySQL stängs av för underhåll.

Kopiera befintlig MySQL-konfigurationsfil:
1) Gör en säkerhetskopia av den befintliga mig själv-konfigurationsfilen.

cp -pv /etc/my.cnf{,.pre-percona.bak}

Stagesäkerhetskopiering av MySQL-databasdata:

2) Kör följande rsync för att klona MySQL-data. [VIKTIGT:ett snedstreck krävs]

rsync -vaH /var/lib/mysql{,.pre-percona}/

Obs:Mycket stora databaser kommer att ta betydligt längre tid att slutföra så planera därefter.

3) Vänta tills steg 1 är klart innan du startar steg 1.

Steg 1 – Stäng av MySQL och kör Rsync Final Sync igen

Syftet med steg ett är att säkerställa att en ren säkerhetskopia av MySQL-data finns på plats innan du fortsätter. För att åstadkomma detta är det nödvändigt att helt stoppa MySQL-tjänster så att alla buffertar skrivs och inga ytterligare ändringar skrivs till databasen. När den har stoppats exekveras rsync igen för att kopiera skillnaderna mellan de nu stoppade orörda data och måldata för säkerhetskopiering.

1) Stäng av MySQL/MariaDB-tjänsten

systemctl stop mysql

2) Kör följande rsync igen för att slutföra klonade data. [VIKTIGT:ett snedstreck krävs]

rsync -vaH /var/lib/mysql{,.pre-percona}/

3) Vänta tills rsync har slutförts innan du går vidare till steg 3.

Steg 2 – Ersätt MariaDB 5.5 Binaries med Percona 5.5

OBS:MariaDB 5.5 är versionen installerad med Onyx 11 CentOS 7, så detta är utgångspunkten.

Att ersätta de befintliga binära filerna innebär att de nödvändiga binära paketen tas bort från systemet med hjälp av RPM-kommandoradsverktyget istället för yum. Detta gör att paketen kan tas bort utan att röra något av de beroenden som länkar till andra systempaket. Eftersom Percona, liksom MariaDB, är en drop-in-ersättning för MySQL, när de nya binärerna väl är på plats kommer de länkade beroendena inte att känna skillnaden och kommer att fungera normalt.

1) Ta bort MariaDB-paket utan beroenden:

rpm -e --nodeps mariadb mariadb-libs mariadb-server

2) Ta bort paketet mariadb-devel (gör detta som ett separat kommando ovanifrån för att undvika borttagningsfel, gör till saknat paket)

rpm -e --nodeps mariadb-devel

3) Installera Percona repository:

yum install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm

4) Installera Percona DB-server:

yum install Percona-Server-client-55 Percona-Server-server-55 Percona-Server-shared-55

5) Utför följande kommandon (låter InnoDB plugin laddas 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) Se till att det inte finns några processer som lyssnar på port 3306 och avbryt processen om någon.

netstat -tulpn | grep 3306

7) Starta MySQL (nu Percona 5.5)

service mysql start

8) Kör mysql_upgrade-skriptet

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

9) [Valfritt] Aktivera Percona XtraDB Cluster UDF från 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) Starta om MySQL för att slutföra uppgraderingen

systemctl start mysql

Steg 3 – Byt Plesk MySQL-paket till Plesk MySQL Community-paketet

Att köra Percona på Plesk är en konfiguration som inte stöds. Av denna anledning, för att tillfredsställa beroendekopplingar mellan Plesk MySQL-paketet och de nya Percona-binärfilerna, är det nödvändigt att byta över Plesk MySQL-versionen till att använda Plesk MySQL Community-versionen istället. Ändringen är nödvändig för att underlätta uppgradering och nedgradering av Percona-versioner.

1) Skapa den nödvändiga repo-konfigurationsfilen:

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) Installera "plesk-mysql-server-community"-paketet från det nya förvaret:

yum install plesk-mysql-server-community

3) Inaktivera filen /etc/yum.repos.d/plesk178.repo eftersom den inte längre behövs:

mv /etc/yum.repos.d/plesk178.repo{,.disabled}

4) Ta bort ”plesk-mysql-server”-paketet utan att röra beroenden.

rpm -e --nodeps plesk-mysql-server

Percona bör nu vara installerad och fungera på basversionen 5.5. Nästa steg är identiska med den typiska MySQL-uppgraderingsprocessen där binärfiler uppgraderas, och sedan görs schemauppdateringarna manuellt med verktyget mysql_upgrade.

Uppgradera Percona 5.5 till 5.6

1) Stoppa MySQL-tjänsten:

service mysql stop

2) Ta bort Percona 55-paket utan beroenden:

rpm -e --nodeps Percona-Server-shared-55 Percona-Server-client-55 Percona-Server-server-55

3) Installera Percona 56-paket

yum install Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56

4) Se till att det inte finns några processer som lyssnar på port 3306 och avbryt processen om någon.

netstat -tulpn | grep 3306

5) Starta MySQL-tjänsten:

service mysql start

6) Uppgradera MySQL-tabeller:

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

Steg 4 – Uppgradera Percona 5.6 till 5.7

1) Stoppa MySQL-tjänsten:

service mysql stop

2) Ta bort Percona 56-paket utan beroenden:

rpm -e --nodeps Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56

3) Installera Percona 57-paket

yum install Percona-Server-shared-57 Percona-Server-client-57 Percona-Server-server-57

4) Se till att det inte finns några processer som lyssnar på port 3306 och avbryt processen om någon.

netstat -tulpn | grep 3306

5) Starta MySQL-tjänsten:

service mysql start

6) Uppgradera MySQL-tabeller:

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

Steg 5 – Slutför uppgradering

Systemet bör nu köra Percona 5.7 och vara fullt tillgängligt för applikationer. I detta skede bör alla webbplatser eller program som använder en databas testas och eventuella fel undersökas.


  1. MariaDB DAY() Förklarad

  2. Få den sista dagen i månaden i PostgreSQL

  3. Varför att använda enhetstester är en stor investering i högkvalitativ arkitektur

  4. Använda Substr med Instr för att extrahera en sträng i Oracle