sql >> Databasteknik >  >> RDS >> Mysql

MySQL-prestanda:Konvertera MySQL till MariaDB

Som vi undersökte i vår tidigare artikel i vår MySQL Performance Series:MySQL vs MariaDB finns det väldigt få nackdelar med att använda MariaDB över standard MySQL. Våra MariaDB:s med hög tillgänglighet har visat sig vara en värdig efterträdare med lätt mildrade nackdelar. Som den sista artikeln i vår serie kommer vi att fokusera på att uppgradera till olika MySQL- och MariaDB-versioner på följande servrar:

CentOS 6/7

  • MySQL till MariaDB på CentOS 6/7 med cPanel
  • MySQL till MariaDB på CentOS 7 med Plesk Onyx 17
  • MySQL 5.1-5.5 till MariaDB 5.5 på CentOS 6
  • MariaDB 5.5 till MariaDB 10.0 på CentOS 6

Ubuntu 14.04/16.04

  • MySQL 5.1-5.5 till MariaDB 5.5 på Ubuntu 14.04
  • MySQL 5.7 till MariaDB 10.2 på Ubuntu 16.04

Välja en MariaDB-uppgraderingsplan

Att välja rätt uppgraderingsplan kräver att man avgör vilken version av MySQL som körs på det avsedda systemet. En universell metod för att avgöra vilken version av MySQL servern kör för närvarande är att fråga servern själv att rapportera versionen. Detta fungerar på samma sätt trots att Linux-distributionen körs på servern:

mysql -h localhost -e 'VISA VARIABLER SOM "version"\G'

Exempel på utdata:

~ $ mysql -h localhost -p -e 'VISA VARIABLER SOM "version"\G'
*********************** **** 1. rad ***************************
Variable_name:version
Värde:5.5.61 -MariaDB

När du har identifierat din MySQL-version, använd nyckeln nedan för att hitta rätt uppgraderingsprocedur för just din server. Vissa versioner av MySQL kräver uppgradering till MariaDB 5.5 innan du uppgraderar till MariaDB 10.x-versioner.

Uppgraderar från MySQL  till MariaDB

Uppgraderingsprocessen är liknande för de flesta servertyper. Det finns skillnader med de specifika kommandon som körs, men den övergripande proceduren följer denna Allmänna uppgraderingsprocedur:

  1. Schemalägg exakt driftstopp.
  2. Se till att det finns tillräckliga säkerhetskopior.
  3. Ta bort befintliga MySQL-binärer/paket.
  4. Installera rätt MariaDB-förråd.
  5. Rensa lagringscacheminne för att radera gamla paketdata.
  6. Installera MariaDB-paket via systemets pakethanterare.
  7. Starta MariaDB genom att starta MySQL-tjänsten.
  8. Kör MySQL-uppgraderingsskript.
  9. Bekräfta att MySQL-databaser är tillgängliga och att data är korrekta

Vi har inkluderat specifika procedurer nedan för olika Liquid Web-system. Innan du väljer din tillämpliga uppgraderingsprocedur, låt oss gå igenom de två första stegen i ovanstående Allmänna uppgraderingsprocedur . Dessa steg är i allmänhet universella och är avgörande för att alla underhållsplaner ska lyckas.

Schemalägg exakt driftstopp

Det kan vara svårt att schemalägga korrekta underhållsfönster för att utföra ändringar som påverkar produktionsmiljöer. Underhållshändelsefönstret måste innehålla tillräckligt med tid för att utföra alla nödvändiga uppgifter i underhållsplanen, plus eventuell felsökning och extra tid för att slutföra återgångsplanen vid behov.

Se till att det finns tillräckliga säkerhetskopior

Det finns mer med en backupplan för underhåll än att bara säkerhetskopiera filer och databaser. Det är också nödvändigt att skapa en återställningsplan, som beskriver processen för att återställa miljön till dess ursprungliga tillstånd innan underhållet påbörjas.
Underhållshändelser kan ibland leda till oförutsedda problem med alternativet att återgå till säkerhetskopior. Att ha både en giltig backupplan och en giltig återställningsplan för att återställa tjänster är en kritisk komponent för framgångsrikt underhåll. Nedan finns översikter av både en exempel på backupplan och en exempel på återgångsplan som kan användas med den här artikelns uppgraderingsprocedur som beskrivs.

Exempel på reservplan

+

Exempel på återgångsplan

+

MySQL till MariaDB på CentOS 6/7 med cPanel

Alla Liquid Web cPanel-serverbilder inkluderar MariaDB 5.5 som redan är installerat. Detta inkluderar både CentOS 6- och CentOS 7-serverbilder. Det finns inget behov av att uppgradera om inte MariaDB 10.x-serien krävs. För en manuell uppgradering, procedurer som tillhandahålls av MariaDB här:Uppgradering från MariaDB 5.5 till MariaDB 10.0, annars ger cPanel ett enkelt peka-och-klicka-gränssnitt som gör allt det tunga lyftet åt dig. Följ en av procedurerna nedan i antingen "Endast text"-form eller grafisk form.

Uppgraderingsinstruktioner för cPanel MariaDB:

Steg A) Bekräfta att säkerhetskopior finns innan du fortsätter vid den schemalagda tiden.

Steg B) Logga in på WHM och ladda MySQL/MariaDB-uppgraderingarna sida:

① Använd snabbsökningsrutan till vänster och skriv in: mysql upgrade

② Leta upp och klicka på MySQL/MariaDB-uppgraderingarna länk.

③ Valde önskad version av MariaDB.

④ Klicka på knappen Nästa .

Steg C) Vänta på “Uppgraderingsvarningar sidan för att slutföra inläsningen.

① Läs &bekräfta varje varningsmeddelande genom att markera varje kryssruta.

② Klicka på knappen Fortsätt.

Steg D) Vänta på “Uppgraderingstyp sidan för att slutföra inläsningen.

① Välj Unattended Upgrade för en sömlös uppgraderingsupplevelse.

② Klicka på knappen Fortsätt.

Steg E)  Vänta tills uppgraderingsprocessen är klar.

MySQL till MariaDB på CentOS 7 med Plesk Onyx 17

Alla Liquid Web CentOS 7-serverbilder inkluderar MariaDB 5.5 som redan är installerad, inklusive våra CentOS 7 Plesk Onyx 17-servrar. Det finns inget behov av att uppgradera om inte MariaDB 10.x-serien krävs. I dessa fall, följ MariaDB Plesks standarduppgraderingsprocedurer här:Hur man uppgraderar MySQL 5.5 till 5.6/5.7 eller MariaDB 5.5 till 10.0/10.1/10.2 på Linux

MySQL 5.1-5.5 till MariaDB 5.5 på CentOS 6

På grund av kompatibilitetsbegränsningar måste MySQL 5.1, 5.2, 5.3 och 5.5.x uppgraderas till MariaDB 5.5 och kan inte uppgraderas till MariaDB 10.0 direkt. Denna uppgraderingsplan kommer att gå igenom att få någon av dessa föråldrade MySQL-versioner uppgraderad till MariaDB 5.5. När uppgraderingen till MariaDB 5.5 är klar, följ Hur man uppgraderar MariaDB 5.5 till MariaDB 10.0 på CentOS 6 instruktioner för att fortsätta uppgraderingsprocessen till MariaDB 10.

Steg 1: Bekräfta att säkerhetskopior finns innan du fortsätter vid den schemalagda tiden.

Steg 2: Stoppa MySQL-tjänsten.

service mysqld stop

Exempelutgång:
~ $ service mysqld omstart
Stoppar mysqld:[ OK ]

Steg 3: Installera MariaDB 5.5-förvaret för CentOS 6

katt [mariadb]
namn =MariaDB
baseurl =http://yum.mariadb.org/5.5/centos6 -amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Det här kommandot har ingen synlig utdata om inte fel uppstår.

Steg 4: Rengör yum-förvarets cache

yum rengör allt
Exempel på utdata:

~ $ yum rensa alla
Inlästa plugins:fastestmirror
Rengöringsrepos:basextras mariadb-uppdateringar
Rengör allt
Rengör listan över snabbaste speglarna

Steg 5:  Ta bort MySQL-paket

yum ta bort mysql-server mysql Exempel på utdata:

Köra transaktionstest
Transaktionstestet lyckades
Körning av transaktionen
Radera:mysql-server-5.1.73-8.el6_8.x86_64 1/1
varning:/var/ log/mysqld.log sparad som /var/log/mysqld.log.rpmsave
Verifierar:mysql-server-5.1.73-8.el6_8.x86_64 1/1
Borttaget:
mysql -server.x86_64 0:5.1.73-8.el6_8
Klar!
Trunkerad för korthetens skull.

Steg 6: Installera MariaDB-servern och MariaDB-klient paket via yum.

yum installera MariaDB-server MariaDB-client -y

Exempelutgång:Installerad:
MariaDB-client.x86_64 0:10.1.35-1.el6 MariaDB-compat.x86_64 0:10.1.35-1.el6 MariaDB-server.x86_64 0:10.1.35 -1.el6
Beroende installerat:
MariaDB-common.x86_64 0:10.1.35-1.el6 boost-program-options.x86_64 0:1.41.0-28.el6
galera .x86_64 0:25.3.23-1.rhel6.el6 jemalloc.x86_64 0:3.6.0-1.el6
Ersatt:
mysql-libs.x86_64 0:5.1.73-8.el6_8
Slutför!
Trunkerad för korthetens skull.

Steg 7: Starta om MySQL-tjänsten

tjänst mysql start Exempel på utdata:

~ $ service mysql start
Startar MariaDB.180808 18:21:13 mysqld_safe Loggar till '/var/lib/mysql/cent6.hostname.err'.
180808 18:21:13 mysqld_safe Startar mysqld-demonen med databaser från /var/lib/mysql
FRAMGÅNG!
Steg 8: Kör MySQL-uppgraderingsverktyget

mysql_upgrade Exempel på utdata:

~ $ mysql_upgrade
MySQL-uppgradering upptäcktes
Fas 1/4:Fixar vyer från mysql
mysql
mysql.columns_priv OK
mysql.db OK
mysql.event OK
mysql.func OK
mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysq .user OK
Fas 4/4:Kör 'mysql_fix_privilege_tables'
OK
Trunkerad för korthetens skull.

Steg 9: Bekräfta att MariaDB-servern körs som förväntat

mysql -e 'VISA VARIABLER SOM "version"\G' Exempel på utdata:

~ $ mysql -e 'VISA VARIABLER SOM "version"\G'
**************************** 1 . rad ***************************
Variabelnamn:version
Värde:5.5.61-MariaDB

Steg 10: Uppgraderingen är klar, kontrollera att dina databaser finns och fungerar.

[ Valfritt ] följ instruktionerna för hur du uppgraderar MariaDB 5.5 till MariaDB 10.0 på CentOS 6.

MariaDB 5.5 till MariaDB 10.0 på CentOS 6

Steg 1:  Bekräfta att säkerhetskopior finns innan du fortsätter vid den schemalagda tiden.

Steg 2: Ta bort alla MariaDB-paket.

yum ta bort MariaDB-* Exempelutdata:
Köra transaktionstest
Transaktionstestet lyckades
Köra transaktionen
Radera :MariaDB-server-5.5.61-1.el6.x86_64 1/2
Raderar :MariaDB-client-5.5.61-1.el6.x86_64 2/2
Verifierar :MariaDB-server-5.5.61-1.el6.x86_64 1/2
Verifierar :MariaDB- client-5.5.61-1.el6.x86_64 2/2
Borttaget:
MariaDB-client.x86_64 0:5.5.61-1.el6 MariaDB-server.x86_64 0:5.5.61-1 .el6
Slutför!
Trunkerad för korthetens skull.

Steg 3: Ta bort befintligt MariaDB-förråd.

rm -f /etc/yum.repos.d/MariaDB*.repo Det här kommandot har ingen synlig utdata om inte fel uppstår.

Steg 4: Skapa MariaDB 10.O Yum repository-fil.

katt [mariadb]
namn =MariaDB
baseurl =http://yum.mariadb.org/10.0/centos6 -amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Det här kommandot har ingen synlig utdata om inte fel uppstår.

Steg 5: Rengör Yum-cachen.

yum rengör allt

Exempel på utdata:

~ $ yum rensa alla
Inlästa plugins:fastestmirror
Rengöringsrepos:basextras mariadb-uppdateringar
Rengör allt
Rensar upp listan över snabbaste speglarna

Steg 6: Installera MariaDB-server och MariaDB-klient paket via Yum.

yum installera MariaDB-server MariaDB-klient Exempelutdata:

Köra transaktionstest
Transaktionstestet lyckades
Köra transaktionen
Installation :MariaDB-client-10.0.36-1.el6.x86_64 1 /2
Installerar :MariaDB-server-10.0.36-1.el6.x86_64 2/2
Verifierar :MariaDB-server-10.0.36-1.el6.x86_64 1/2
Verifierar :MariaDB-client-10.0.36-1.el6.x86_64 2/2
Installerad:
MariaDB-client.x86_64 0:10.0.36-1.el6 MariaDB-server.x86_64 0:10.0 .36-1.el6
Fullständig!
Trunkerad för korthetens skull.

Steg 7: Starta MySQL-tjänsten.

tjänst mysql start

Steg 8: Kör MySQL Upgrade-skriptet.

mysql_upgrade

Steg 9: Uppgraderingen är klar, kontrollera att dina databaser finns och fungerar.

MySQL 5.1-5.5 till MariaDB 5.5 på Ubuntu 14.04

Steg 1:  Bekräfta att säkerhetskopior finns innan du fortsätter vid den schemalagda tiden.

Steg 2: Installera MariaDB 5.5-förvaret med denna enliner, det kommer att installera de nödvändiga nödvändiga verktygen (om det saknas), Ubuntu 14.04 GPG-nyckeln och MariaDB 5.5-förvaret samtidigt som apt-paketcachen uppdateras.

sudo apt-get install software-properties-common -y
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add -apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu trusty main'
sudo apt-get update

Exempel utdata:
~ $ sudo apt-get install software-properties-common -y> /dev/null
~ $ sudo apt-key adv --recv-keys - -keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
Kör:gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.PtpHIXMNvY - -no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --recv-keys --keyserver hkp:// keyserver.ubuntu.com:80 0xcbcb082a1bb943db
gpg:begär nyckel 1BB943DB från hkp-server keyserver.ubuntu.com
gpg:nyckel 1BB943DB:offentlig nyckel "MariaDB Package Signing Key " importerad
gpg:Totalt antal behandlat:1
gpg:importerat:1
~ $ sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http:/ /ftp.osuosl.org/pub/mariadb/repo/5.5/ubuntu trusty main'
~ $ sudo apt-get update> /dev/null
Trunkerad för korthetens skull.

Steg 3: Stoppa mysql-tjänsten.

sudo service mysql stop
Exempel utdata:
~ $ sudo service mysql stop
mysql stop/waiting

Steg 4: Byt namn på MySQL-konfigurationsfilen /etc/mysql/my.cnf till /etc/mysql/my.cnf.bak. Detta steg är nödvändigt för att säkerställa att alla inkompatibla direktiv/variabler har tagits bort från konfigurationen för att förhindra problem med installationen.

sudo mv /etc/mysql/my.cnf{,.bak}

Steg 5: Installera mariadb-servern paket. Detta kommer samtidigt att ta bort de befintliga MySQL-binärerna och sedan installera de nya MariaDB-binärerna.
sudo apt-get install mariadb-server -y

Exempel på utdata:

+

Steg 6: Under installationen visas en dialogruta på skärmen som uppmanar dig att ändra MySQL root-lösenordet två gånger. Följ instruktionerna för att antingen ändra lösenordet eller hoppa över ändringen genom att ange ett tomt lösenord.


Steg 7: När den är klar ska mysql-tjänsten starta automatiskt och mysql_upgrade-skriptet slutförs automatiskt under installationsprocessen.

A) Kontrollera att mysql-tjänsten körs.sudo-tjänsten mysql-status
Exempel utdata:
~ $ sudo tjänst mysql status
mysql start/kör, process 4745

B) Kontrollera att mysql_upgrade lyckades.sudo mysql_upgrade

Exempelutgång:
~ $ sudo mysql_upgrade
Denna installation av MySQL är redan uppgraderad till 5.5.61-MariaDB, använd --force om du fortfarande behöver köra mysql_upgrade

Steg 8: Uppgraderingen är klar, kontrollera att dina databaser finns och fungerar.

MySQL 5.7 till MariaDB 10.2 på Ubuntu 16.04

Steg 1:  Bekräfta att säkerhetskopior finns innan du fortsätter vid den schemalagda tiden.

Steg 2: Kontrollera att det lokala root-kontot har ett korrekt lösenord. Innan du uppgraderar till MariaDB 10.2, kontrollera 'root' @ 'localhost' användaren för att säkerställa att ett lösenord tilldelas annars, auth_socket plugin använder ett tomt lösenord. Detta är vanligt i äldre inställningar och orsakar problem med uppgraderingsprocessen på grund av standardläget för MariaDB 10.2 i Strict SQL.

Följande skript kommer att skriva ut den lokala rotanvändarinformationen.

mysql -e 'välj User,Host,Plugin,authentication_string från användare där authentication_string ="" och plugin ="auth_socket";' mysql
Exempelutgång:
~ $ mysql -e 'välj User,Host,Plugin,authentication_string från användare där authentication_string ="" och plugin ="auth_socket";' mysql
+------+---------------------+----- ------------+
| Användare | Värd | Plugin | authentication_string |
+------+------------+------------+-------- -------------+
| rot | lokalvärd | auth_socket | |
+------+------------+-------------+----- ------------+

Nedan finns två exempel på hur du uppdaterar dessa poster.

Automagisk metod :Följande one-liner läser lösenordet från /root/.my.cnf och använder det lösenordet för att uppdatera MySQL-användarposten, om filen finns.

sudo test -e /root/.my.cnf &&sudo mysql -e "ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED mysql_native_password AV '$(awk -F"[=']" 'tolower($1) ~/lösenord/{print $(NF-1)}' /root/.my.cnf)'; välj User,Host,Plugin,authentication_string från användare där user ='root' och host ='localhost';" mysql || echo "FEL:/root/.my.cnf existerar inte, är du root?"
Exempel på utdata:
~ $ sudo test -e /root/.my.cnf &&sudo mysql -e "ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED mysql_native_password AV '$(awk) -F"[=']" 'tolower($1)~/lösenord/{print $(NF-1)}' /root/.my.cnf)'; välj User,Host,Plugin,authentication_string från användare där användare ='root' och host ='localhost';" mysql || echo “FEL:/root/.my.cnf existerar inte, är du root?”
+------+-----------+------ ------------------+-------------------------------- -----------+
| Användare | Värd | Plugin | authentication_string |
+------+-----------+-----------------------------+ ------------------------------------------+
| rot | lokalvärd | mysql_native_password | *40C5E49F0CC7BDC637FEEDFBF14FF100C37619D7 |
+------+-----------+----------------------------- +---------------------------------------------------+

Manuell metod: Följande syntax är nödvändig för att lägga till ett korrekt lösenord till root-användarkontot. Glöm inte att uppdatera filen /root/.my.cnf med rätt lösenord, annars kan din uppdatering stöta på fel. Se till att ersätta SuperSecretPass med rätt lösenord.

ÄNDRA ANVÄNDARE 'root'@'localhost' IDENTIFIERAD MED mysql_native_password AV 'SuperSecretPass';

Steg 3: Installera MariaDB 10.2-förvaret. Detta är en strof med flera kommandon som kommer att installera de nödvändiga nödvändiga verktygen, GPG-nyckeln, arkivet och uppdatera paketcachen.

sudo apt-get install software-properties-common -y> /dev/null
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.2/ubuntu xenial main'
sudo apt -get update> /dev/null

Exempelutgång:
~ $ sudo apt-get install software-properties-common -y
~ $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu .com:80 0xF1656F24C74CD1D8
Kör:/tmp/tmp.J8PdET9w5B/gpg.1.sh --recv-keys
--keyserver
hkp://keyserver.ubuntu.com:80
0xF1656F24C74CD1D8
gpg:begär nyckel C74CD1D8 från hkp-server keyserver.ubuntu.com
gpg:nyckel C74CD1D8:offentlig nyckel "MariaDB Signing Key " importerad
gpg:Totalt antal behandlat:1
gpg:importerat:1 (RSA:1)
~ $ sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] http://ftp.osuosl.org/pub/mariadb/repo/10.2/ubuntu xenial main'
~ $ sudo apt-get update> /dev/null
Trunkerad för korthetens skull.

Steg 4: Stoppa mysql-tjänsten.

sudo service mysql stop
Exempel utdata:
~ $ sudo service mysql stop
mysql stop/waiting

Steg 5: Byt namn på MySQL-konfigurationsfilen /etc/mysql/my.cnf till /etc/mysql/my.cnf.bak. Detta steg är nödvändigt för att säkerställa att alla inkompatibla direktiv/variabler har tagits bort från konfigurationen för att förhindra problem med installationen.
sudo mv /etc/mysql/my.cnf{,.bak}
Steg 6: Installera paketet mariadb-server. Detta kommer samtidigt att ta bort de befintliga MySQL-binärerna och sedan installera de nya MariaDB-binärerna.

sudo apt-get install mariadb-server -y Exempelutgång:
~ $ sudo apt installera mariadb-server -y

Steg 7: Under installationen visas en dialogruta på skärmen som uppmanar till att root-lösenordet inte kunde ändras eftersom ett redan finns på plats. Tryck på enter för att fortsätta.

Steg 8: När den är klar ska mysql-tjänsten starta automatiskt.
sudo-tjänsten mysql-status Exempelutgång:
~ $ sudo tjänst mysql status
mysql start/kör, process 4745

Steg 9: Slutligen, kör mysql_upgrade för att slutföra uppgraderingen.
sudo mysql_upgrade Utdata illustrerar normala fel vid uppgradering.

Exempel på utdata:

+

Steg 10: Uppgraderingen är klar, kontrollera att dina databaser finns och fungerar.

Serienavigering<>

  1. Vad är en "flerdelad identifierare" och varför kan den inte bindas?

  2. Bygga en enkel webbapp med Bottle, SQLAlchemy och Twitter API

  3. Pivotera flera kolumner baserat på en kolumn i SQL Server

  4. Laddar ner MySQL-dump från kommandoraden