Zoals we hebben onderzocht in ons vorige artikel van onze MySQL Performance Series:MySQL vs. MariaDB, zijn er weinig nadelen aan het gebruik van MariaDB boven standaard MySQL. Onze MariaDB's met hoge beschikbaarheid hebben zichzelf bewezen als een waardige opvolger met gemakkelijk te verhelpen nadelen. Als laatste artikel in onze serie zullen we ons concentreren op het upgraden naar verschillende MySQL- en MariaDB-versies op de volgende servers:
CentOS 6/7
- MySQL naar MariaDB op CentOS 6/7 met cPanel
- MySQL naar MariaDB op CentOS 7 met Plesk Onyx 17
- MySQL 5.1-5.5 naar MariaDB 5.5 op CentOS 6
- MariaDB 5.5 naar MariaDB 10.0 op CentOS 6
Ubuntu 14.04/16.04
- MySQL 5.1-5.5 naar MariaDB 5.5 op Ubuntu 14.04
- MySQL 5.7 naar MariaDB 10.2 op Ubuntu 16.04
Een MariaDB-upgradeplan kiezen
Om het juiste upgradeplan te selecteren, moet u bepalen welke versie van MySQL op het beoogde systeem draait. Een universele methode om te bepalen welke versie van MySQL de server momenteel draait, is door de server zelf op te vragen om de versie te rapporteren. Dit werkt hetzelfde ondanks dat de Linux-distributie op de server draait:
mysql -h localhost -e 'SHOW VARIABLES LIKE "version"\G'
Voorbeeld uitvoer:
~ $ mysql -h localhost -p -e 'SHOW VARIABLES LIKE "version"\G'
*************************** 1. row ***************************
Variable_name: version
Value: 5.5.61-MariaDB
Nadat u uw MySQL-versie hebt geïdentificeerd, gebruikt u de onderstaande sleutel om de juiste upgradeprocedure voor uw specifieke server te vinden. Sommige versies van MySQL moeten worden geüpgraded naar MariaDB 5.5 voordat wordt geüpgraded naar MariaDB 10.x-versies.
Upgraden van MySQL naar MariaDB
Het upgradeproces is vergelijkbaar voor de meeste servertypen. Er zijn verschillen met de specifieke opdrachten die worden uitgevoerd, maar de algemene procedure volgt deze Algemene upgradeprocedure:
- Plan nauwkeurige uitvaltijd.
- Zorg voor voldoende back-ups.
- Verwijder de bestaande MySQL-binaire bestanden/pakketten.
- Installeer de juiste MariaDB-repository.
- Wis repository-caches om oude pakketgegevens te wissen.
- Installeer MariaDB-pakketten via de pakketbeheerder van het systeem.
- Start MariaDB door de MySQL-service te starten.
- Voer MySQL-upgradescript uit.
- Bevestig dat MySQL-databases toegankelijk zijn en dat de gegevens correct zijn
We hebben hieronder specifieke procedures opgenomen voor verschillende Liquid Web-systemen. Voordat we uw toepasselijke upgradeprocedure kiezen, laten we de eerste twee stappen in de bovenstaande Algemene upgradeprocedure . doornemen . Deze stappen zijn over het algemeen universeel en cruciaal voor het succes van elk onderhoudsplan.
Nauwkeurige uitvaltijd plannen
Het plannen van de juiste onderhoudsperiodes om wijzigingen door te voeren die van invloed zijn op productieomgevingen kan lastig zijn. Het onderhoudsgebeurtenisvenster moet voldoende tijd bevatten om alle noodzakelijke taken in het onderhoudsplan uit te voeren, plus eventuele probleemoplossing en extra tijd om het Reversion Plan indien nodig te voltooien.
Zorg voor voldoende back-ups
Een back-upplan voor onderhoud is meer dan alleen het maken van back-ups van bestanden en databases. Het is ook nodig om een Reversion Plan op te stellen, waarin het proces wordt beschreven om de omgeving in de oorspronkelijke staat te herstellen voordat het onderhoud begint.
Onderhoudsgebeurtenissen kunnen soms leiden tot onvoorziene problemen met het alternatief om back-ups te maken. Het hebben van zowel een geldig back-upplan als een geldig herstelplan om services te herstellen, is een essentieel onderdeel van succesvol onderhoud. Hieronder vindt u een overzicht van zowel een Voorbeeld back-upplan en een Voorbeeld Reversion Plan die kan worden gebruikt met de upgradeprocedure van dit artikel die wordt beschreven.
Voorbeeld back-upplan
+Voorbeeld van een reversieplan
+MySQL naar MariaDB op CentOS 6/7 met cPanel
Alle Liquid Web cPanel-serverimages bevatten MariaDB 5.5 die al is geïnstalleerd. Dit omvat zowel CentOS 6- als CentOS 7-serverimages. Het is niet nodig om te upgraden, tenzij de MariaDB 10.x-serie vereist is. Voor een handmatige upgrade, procedures zoals verstrekt door MariaDB hier:Upgraden van MariaDB 5.5 naar MariaDB 10.0, anders biedt cPanel een eenvoudige point-&-click-interface die al het zware werk voor u doet. Volg een van de onderstaande procedures in de vorm 'Alleen tekst' of Grafisch.
cPanel MariaDB upgrade-instructies:
Stap A) Controleer of er back-ups aanwezig zijn voordat u op de geplande tijd verdergaat.
Stap B) Log in op WHM en laad de MySQL/MariaDB-upgrades pagina:
① Gebruik het snelzoekvak aan de linkerkant en typ: mysql upgrade
② Zoek en klik op de MySQL/MariaDB-upgrades link.
③ Uw gewenste versie van MariaDB geselecteerd.
④ Klik op de knop Volgende.
Stap C) Wacht op de 'Upgrade-waarschuwingen ” pagina om het laden te voltooien.
① Lees en bevestig elk waarschuwingsbericht door elk selectievakje in te schakelen.
② Klik op de knop Doorgaan.
Stap D) Wacht op het 'Upgradetype ” pagina om het laden te voltooien.
① Selecteer Upgrade zonder toezicht voor een naadloze upgrade-ervaring.
② Klik op de knop Doorgaan.
Stap E) Wacht tot het upgradeproces is voltooid.
MySQL naar MariaDB op CentOS 7 met Plesk Onyx 17
Alle Liquid Web CentOS 7-serverimages bevatten MariaDB 5.5 die al is geïnstalleerd, inclusief onze CentOS 7 Plesk Onyx 17-servers. Het is niet nodig om te upgraden, tenzij de MariaDB 10.x-serie vereist is. Volg in deze gevallen de standaard MariaDB Plesk Upgrade Procedures hier:MySQL 5.5 upgraden naar 5.6/5.7 of MariaDB 5.5 naar 10.0/10.1/10.2 op Linux
MySQL 5.1-5.5 naar MariaDB 5.5 op CentOS 6
Vanwege compatibiliteitsbeperkingen moeten MySQL 5.1, 5.2, 5.3 en 5.5.x worden geüpgraded naar MariaDB 5.5 en kunnen ze niet rechtstreeks naar MariaDB 10.0 worden geüpgraded. Dit upgradeplan zorgt ervoor dat een van deze verouderde MySQL-versies wordt geüpgraded naar MariaDB 5.5. Zodra de upgrade naar MariaDB 5.5 is voltooid, volgt u de Hoe u MariaDB 5.5 upgradet naar MariaDB 10.0 op CentOS 6 instructies om door te gaan met het upgradeproces naar MariaDB 10.
Stap 1: Controleer of er back-ups aanwezig zijn voordat u op de geplande tijd verdergaat.
Stap 2: Stop de MySQL-service.
service mysqld stop
Voorbeelduitvoer:
~ $ service mysqld restart
Stopping mysqld: [ OK ]
Stap 3: Installeer de MariaDB 5.5-repository voor CentOS 6
cat < /etc/yum.repos.d/MariaDB.repo
Deze opdracht heeft geen zichtbare uitvoer, tenzij er fouten optreden.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Stap 4: Maak de cache van de yum-repository schoon
yum clean all
Voorbeelduitvoer:
~ $ yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras mariadb updates
Cleaning up Everything
Cleaning up list of fastest mirrors
Stap 5: MySQL-pakketten verwijderen
yum remove mysql-server mysql
Voorbeeld uitvoer:
Running Transaction Test
Voor de beknoptheid afgekapt.
Transaction Test Succeeded
Running Transaction
Erasing : mysql-server-5.1.73-8.el6_8.x86_64 1/1
warning: /var/log/mysqld.log saved as /var/log/mysqld.log.rpmsave
Verifying : mysql-server-5.1.73-8.el6_8.x86_64 1/1
Removed:
mysql-server.x86_64 0:5.1.73-8.el6_8
Complete!
Stap 6: Installeer de MariaDB-server enMariaDB-client pakketten via yum.
yum install MariaDB-server MariaDB-client -y
Voorbeelduitvoer:Installed:
Voor de beknoptheid afgekapt.
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
Dependency Installed:
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
Replaced:
mysql-libs.x86_64 0:5.1.73-8.el6_8
Complete!
Stap 7: Start de MySQL-service opnieuw
service mysql start
Voorbeeld uitvoer:
~ $ service mysql start
Stap 8: Voer de MySQL-upgradetool uit
Starting MariaDB.180808 18:21:13 mysqld_safe Logging to '/var/lib/mysql/cent6.hostname.err'.
180808 18:21:13 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
SUCCESS!
mysql_upgrade
Voorbeeld uitvoer:
~ $ mysql_upgrade
Voor de beknoptheid afgekapt.
MySQL upgrade detected
Phase 1/4: Fixing views from 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
mysql.user OK
Phase 4/4: Running 'mysql_fix_privilege_tables'
OK
Stap 9: Controleer of de MariaDB-server werkt zoals verwacht
mysql -e 'SHOW VARIABLES LIKE "version"\G'
Voorbeeld uitvoer:
~ $ mysql -e 'SHOW VARIABLES LIKE "version"\G'
*************************** 1. row ***************************
Variable_name: version
Value: 5.5.61-MariaDB
Stap 10: De upgrade is voltooid, controleer of uw databases bestaan en werken.
[ Optioneel ] volg de instructies voor het upgraden van MariaDB 5.5 naar MariaDB 10.0 op CentOS 6.
MariaDB 5.5 naar MariaDB 10.0 op CentOS 6
Stap 1: Controleer of er back-ups aanwezig zijn voordat u op de geplande tijd verdergaat.
Stap 2: Verwijder alle MariaDB-pakketten.
yum remove MariaDB-*
Voorbeelduitvoer:Running Transaction Test
Voor de beknoptheid afgekapt.
Transaction Test Succeeded
Running Transaction
Erasing : MariaDB-server-5.5.61-1.el6.x86_64 1/2
Erasing : MariaDB-client-5.5.61-1.el6.x86_64 2/2
Verifying : MariaDB-server-5.5.61-1.el6.x86_64 1/2
Verifying : MariaDB-client-5.5.61-1.el6.x86_64 2/2
Removed:
MariaDB-client.x86_64 0:5.5.61-1.el6 MariaDB-server.x86_64 0:5.5.61-1.el6
Complete!
Stap 3: Verwijder bestaande MariaDB-repository.
rm -f /etc/yum.repos.d/MariaDB*.repo
Deze opdracht heeft geen zichtbare uitvoer, tenzij er fouten optreden.
Stap 4: Maak een MariaDB 10.O Yum-repositorybestand.
cat < /etc/yum.repos.d/MariaDB.repo
Deze opdracht heeft geen zichtbare uitvoer, tenzij er fouten optreden.
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
Stap 5: Maak de Yum-cache schoon.
yum clean all
Voorbeeld uitvoer:
~ $ yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras mariadb updates
Cleaning up Everything
Cleaning up list of fastest mirrors
Stap 6: Installeer MariaDB-server en MariaDB-client pakket via Yum.
yum install MariaDB-server MariaDB-client
Voorbeelduitvoer:
Voor de beknoptheid afgekapt.
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : MariaDB-client-10.0.36-1.el6.x86_64 1/2
Installing : MariaDB-server-10.0.36-1.el6.x86_64 2/2
Verifying : MariaDB-server-10.0.36-1.el6.x86_64 1/2
Verifying : MariaDB-client-10.0.36-1.el6.x86_64 2/2
Installed:
MariaDB-client.x86_64 0:10.0.36-1.el6 MariaDB-server.x86_64 0:10.0.36-1.el6
Complete!
Stap 7: Start de MySQL-service.
service mysql start
Stap 8: Voer het MySQL Upgrade-script uit.
mysql_upgrade
Stap 9: De upgrade is voltooid, controleer of uw databases bestaan en werken.
MySQL 5.1-5.5 naar MariaDB 5.5 op Ubuntu 14.04
Stap 1: Controleer of er back-ups aanwezig zijn voordat u op de geplande tijd verdergaat.
Stap 2: Installeer de MariaDB 5.5-repository met deze one-liner, het installeert de nodige vereiste tools (indien ontbreken), de Ubuntu 14.04 GPG-sleutel en de MariaDB 5.5-repository terwijl de apt-pakketcaches worden bijgewerkt.
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
Voorbeelduitvoer:~ $ sudo apt-get install software-properties-common -y > /dev/null
Voor de beknoptheid afgekapt.
~ $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
Executing: 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: requesting key 1BB943DB from hkp server keyserver.ubuntu.com
gpg: key 1BB943DB: public key "MariaDB Package Signing Key <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 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
Stap 3: Stop mysql-service.
sudo service mysql stop
Voorbeelduitvoer:~ $ sudo service mysql stop
mysql stop/waiting
Stap 4: Hernoem het MySQL-configuratiebestand /etc/mysql/my.cnf naar /etc/mysql/my.cnf.bak. Deze stap is nodig om ervoor te zorgen dat alle incompatibele richtlijnen/variabelen uit de configuratie zijn verwijderd om problemen met de installatie te voorkomen.
sudo mv /etc/mysql/my.cnf{,.bak}
Stap 5: Installeer de mariadb-server pakket. Hiermee worden tegelijkertijd de bestaande MySQL-binaire bestanden verwijderd en vervolgens de nieuwe MariaDB-binaire bestanden geïnstalleerd. sudo apt-get install mariadb-server -y
Voorbeelduitvoer:
+Stap 6: Tijdens de installatie verschijnt er een dialoogvenster op het scherm waarin wordt gevraagd om het MySQL-rootwachtwoord twee keer te wijzigen. Volg de instructies om het wachtwoord te wijzigen of de wijziging over te slaan door een leeg wachtwoord op te geven.
Stap 7: Als het succesvol is voltooid, zou de mysql-service automatisch moeten starten en wordt het mysql_upgrade-script automatisch voltooid tijdens het installatieproces.
A) Controleer of de mysql-service actief is.sudo service mysql status
Voorbeelduitvoer:~ $ sudo service mysql status
mysql start/running, process 4745
B) Controleer of de mysql_upgrade is gelukt.sudo mysql_upgrade
Voorbeelduitvoer:~ $ sudo mysql_upgrade
This installation of MySQL is already upgraded to 5.5.61-MariaDB, use --force if you still need to run mysql_upgrade
Stap 8: De upgrade is voltooid, controleer of uw databases bestaan en werken.
MySQL 5.7 naar MariaDB 10.2 op Ubuntu 16.04
Stap 1: Controleer of er back-ups aanwezig zijn voordat u op de geplande tijd verdergaat.
Stap 2: Controleer of het lokale root-account een juist wachtwoord heeft. Voordat u een upgrade naar MariaDB 10.2 uitvoert, controleert u de ‘root’ @ ’localhost’ gebruiker om ervoor te zorgen dat er anders een wachtwoord wordt toegewezen, de auth_socket plug-in gebruikt een leeg wachtwoord. Dit is gebruikelijk in oudere setups en veroorzaakt problemen met het upgradeproces vanwege de standaardmodus van MariaDB 10.2 in Strict SQL.
Het volgende script drukt de lokale root-gebruikersgegevens af.
mysql -e 'select User,Host,Plugin,authentication_string from user where authentication_string = "" and plugin = "auth_socket";' mysql
Voorbeelduitvoer:~ $ mysql -e 'select User,Host,Plugin,authentication_string from user where authentication_string = "" and plugin = "auth_socket";' mysql
+------+-----------+-------------+-----------------------+
| User | Host | Plugin | authentication_string |
+------+-----------+-------------+-----------------------+
| root | localhost | auth_socket | |
+------+-----------+-------------+-----------------------+
Hieronder staan twee voorbeelden van hoe u deze items kunt bijwerken.
Automagische methode :De volgende one-liner leest het wachtwoord van /root/.my.cnf en gebruikt dat wachtwoord om de MySQL-gebruikersinvoer bij te werken, als het bestand bestaat.
sudo test -e /root/.my.cnf && sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$(awk -F"[=']" 'tolower($1)~/password/{print $(NF-1)}' /root/.my.cnf)'; select User,Host,Plugin,authentication_string from user where user = 'root' and host = 'localhost';" mysql || echo “ERROR: /root/.my.cnf does not exist, are you root?”
Voorbeelduitvoer:~ $ sudo test -e /root/.my.cnf && sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$(awk -F"[=']" 'tolower($1)~/password/{print $(NF-1)}' /root/.my.cnf)'; select User,Host,Plugin,authentication_string from user where user = 'root' and host = 'localhost';" mysql || echo “ERROR: /root/.my.cnf does not exist, are you root?”
+------+-----------+-----------------------+-------------------------------------------+
| User | Host | Plugin | authentication_string |
+------+-----------+-----------------------+-------------------------------------------+
| root | localhost | mysql_native_password | *40C5E49F0CC7BDC637FEEDFBF14FF100C37619D7 |
+------+-----------+-----------------------+-------------------------------------------+
Handmatige methode: De volgende syntaxis is nodig om een juist wachtwoord toe te voegen aan het root-gebruikersaccount. Vergeet niet het bestand /root/.my.cnf bij te werken met het juiste wachtwoord, anders kunnen er fouten optreden bij uw update. Zorg ervoor dat u het juiste wachtwoord voor SuperSecretPass gebruikt.
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘SuperSecretPass’;
Stap 3: Installeer de MariaDB 10.2-repository. Dit is een strofe met meerdere opdrachten die de benodigde tools, GPG-sleutel en repository installeert en de pakketcaches bijwerkt.
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
Voorbeelduitvoer:~ $ sudo apt-get install software-properties-common -y
Voor de beknoptheid afgekapt.
~ $ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Executing: /tmp/tmp.J8PdET9w5B/gpg.1.sh --recv-keys
--keyserver
hkp://keyserver.ubuntu.com:80
0xF1656F24C74CD1D8
gpg: requesting key C74CD1D8 from hkp server keyserver.ubuntu.com
gpg: key C74CD1D8: public key "MariaDB Signing Key <[email protected]>" imported
gpg: Total number processed: 1
gpg: imported: 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
Stap 4: Stop mysql-service.
sudo service mysql stop
Voorbeelduitvoer:~ $ sudo service mysql stop
mysql stop/waiting
Stap 5: Hernoem het MySQL-configuratiebestand /etc/mysql/my.cnf naar /etc/mysql/my.cnf.bak. Deze stap is nodig om ervoor te zorgen dat alle incompatibele richtlijnen/variabelen uit de configuratie zijn verwijderd om problemen met de installatie te voorkomen.sudo mv /etc/mysql/my.cnf{,.bak}
Stap 6: Installeer het pakket mariadb-server. Hiermee worden tegelijkertijd de bestaande MySQL-binaire bestanden verwijderd en vervolgens de nieuwe MariaDB-binaire bestanden geïnstalleerd.
sudo apt-get install mariadb-server -y
Voorbeelduitvoer:~ $ sudo apt install mariadb-server -y</code?
Stap 7: Tijdens de installatie verschijnt er een dialoogvenster op het scherm met de vraag dat het root-wachtwoord niet kan worden gewijzigd omdat er al een is. Druk op enter om verder te gaan.
Stap 8: Als het succesvol is voltooid, zou de mysql-service automatisch moeten starten.sudo service mysql status
Voorbeelduitvoer:~ $ sudo service mysql status
mysql start/running, process 4745
Stap 9: Voer tot slot mysql_upgrade uit om de upgrade te voltooien.sudo mysql_upgrade
De uitvoer illustreert normale fouten bij het upgraden.
Voorbeelduitvoer:
+Stap 10: De upgrade is voltooid, controleer of uw databases bestaan en werken.