Das jtel-Portalsystem geht dazu über, MySQL 8.x anstelle des älteren MySQL 5.6 zu verwenden. Derzeit unterstützt die neueste Version des Portals 3.15 beide Versionen von MySQL, dies ist jedoch nur eine Übergangsmaßnahme, und dies wird sich in einer kommenden Version bald ändern, so dass MySQL 8.x erforderlich ist. Diese Prozedur beschreibt, wie Sie das System auf MySQL 8.x aktualisieren. Warning |
---|
| Dies ist eine non trivial Operation. Fahren Sie nur fort, wenn Sie über geeignete Rollback-Mechanismen verfügen, wie z.B. Snapshots Ihrer virtuellen Maschinen und ein Backup der Datenbank. ALLE INSTALLATIONEN - PORTAL VERSION
- Stellen Sie sicher, dass die jtel Portal Version mindestens 3.15 ist, bevor Sie beginnen.
- Betriebssystem
- Stellen Sie sicher, dass das Betriebssystem mit allen Aktualisierungen auf allen mysql-Servern auf dem neuesten Stand ist.
INSTALLATIONEN MIT REPLIKATION - Replication Slaves
- Stellen Sie sicher, dass die Replikation funktioniert, bevor Sie beginnen
- Replication Masters
- Stellen Sie sicher, dass das binäre Protokollformat ROW und nicht MIXED oder STATEMENT ist
- PHASE 1
- Schließen Sie Phase 1 zunächst für alle Server ab, zuerst für die Slaves, dann für die Masters.
- Master-Master Konfigurationen
- Halten Sie den anderen Master vor der Aktualisierung an.
- Stellen Sie sicher, dass beide Master 8.x sind, bevor Sie neu starten.
|
VoraussetzungenEinführungDies ist eine mehrstufige Operation, da das MySQL-System nicht unterstützt, dass Aktualisierungen von Versionen ausgelassen werden - um von 5.6 auf 8.0 zu wechseln, ist es erforderlich, zuerst auf 5.7 zu aktualisieren. Warning |
---|
| Fahren Sie erst fort, wenn die Voraussetzungen erfüllt sind. Das Verfahren WIRD NICHT FUNKTIONIEREN, wenn eine frühere Version des jtel-Portals installiert ist. |
Phase 1 - Sicherstellen, dass die bestehende Konfiguration gut istEs gibt mehrere Konfigurationselemente, die in der Slave-Konfiguration eingestellt werden müssen, bevor Sie fortfahren können Leider wird mysql 5.7 während des Upgrade-Prozesses einen anderen Standard-Binär-Log- und Relay-Log-Dateinamen verwenden (dies ist wahrscheinlich ein Bug), es sei denn, diese Schritte werden befolgt. Führen Sie dieses Verfahren für alle Slaves durch (auch für beide Master bei der Master-Master-Replikation). Translations Ignore |
---|
Code Block |
---|
# Master or slave?
if [ -e /etc/my.cnf.d/jtel-slave.cnf ]
then
MY_CNF_FILE=/etc/my.cnf.d/jtel-slave.cnf
MASTER_UPDATE=FALSE
fi
if [ -e /etc/my.cnf.d/jtel-master.cnf ]
then
MY_CNF_FILE=/etc/my.cnf.d/jtel-master.cnf
MASTER_UPDATE=TRUE
fi
if [ ! -z MY_CNF_FILE ]
then
cat <<EOFF >> $MY_CNF_FILE
relay_log = mysqld-relay-bin
relay_log_index = mysqld-relay-bin.index
relay_log_info_file = relay-log.info
EOFF
if [ "$MASTER_UPDATE" == "FALSE" ]
then
cat <<EOFF >> $MY_CNF_FILE
skip-log-bin
EOFF
fi
fi
MY_CNF_FILE=
# Restart mysql
systemctl restart mysqld.service |
|
Phase 2 - Update MySQL auf 5.7Denken Sie daran - beginnen Sie bei replizierten Installationen zuerst mit den Slaves. Aktualisieren Sie dann die Master, einen nach dem anderen. Durchführen eines sauberen Shutdowns von MySQL mit innodb_fast_shutdown auf 0 Translations Ignore |
---|
Code Block |
---|
mysql -u root -p<password> --execute="SET GLOBAL innodb_fast_shutdown=0"
mysqladmin -u root -p<password> shutdown |
|
Altes yum-Repository entfernen und neues yum-Repository installierenEntfernen Sie das alte MySQL yum-Repository. Translations Ignore |
---|
Code Block |
---|
yum remove mysql-community-release.noarch |
|
Als nächstes installieren Sie das neue MySQL yum-Repository mit dem Befehl, der für die verwendete Betriebssystemversion relevant ist. Mit dem folgenden Befehl können Sie das verwendete Betriebssystem bestimmen: Translations Ignore |
---|
Code Block |
---|
cat /etc/centos-release |
|
Für CentOS 7: Translations Ignore |
---|
Code Block |
---|
yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm |
|
Für CentOS 6: Translations Ignore |
---|
Code Block |
---|
yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el6-3.noarch.rpm |
|
Update MySQL Server auf 5.7Dazu gehört das Bereinigen der Versionlock-Tabelle und das Aktivieren des 5.7 Update-Pfades. Beachten Sie, dass der Befehl yum ohne die Option -y ausgeführt wird. Sie sollten prüfen, was das System vorhat, bevor Sie diesen Schritt bestätigen. Translations Ignore |
---|
Code Block |
---|
# Versionlock-Tabelle bereinigen
yum versionlock clear
# Enable 5.7
yum-config-manager --disable mysql56-community
yum-config-manager --enable mysql57-community
yum-config-manager --disable mysql80-community
# Update
yum update |
|
Starten Sie den MySQL-Server (OHNE REPLIKATION FÜR SLAVES und MASTER-MASTER)Starten Sie den mysql Server ohne Replikation. Translations Ignore |
---|
Code Block |
---|
| # Start - IMPORTANT - WITHOUT REPLICATION
systemctl set-environment MYSQLD_OPTS="--skip-slave-start"
systemctl start mysqld.service |
|
Translations Ignore |
---|
Code Block |
---|
| # Start - IMPORTANT - WITHOUT REPLICATION
mysqld_safe --skip-slave-start & |
|
mysql_upgrade ausführenEntweder ändern Sie das Passwort im folgenden Befehl, oder Sie verwenden einfach die Option -p, ohne ein Passwort anzugeben, und geben es an der Eingabeaufforderung ein. Translations Ignore |
---|
Code Block |
---|
mysql_upgrade -u root -p<password> |
|
Überprüfen Sie die Ausgabe aus dieser Phase, bevor Sie fortfahren - wenn dieses Verfahren nicht behebbare Fehlermeldungen anzeigt, dann ist das Verfahren schief gelaufen, und Sie müssen hier ein Rollback durchführen. Starten Sie als nächstes den MySQL-Server neu. Translations Ignore |
---|
Code Block |
---|
| systemctl stop mysqld.service
systemctl set-environment MYSQLD_OPTS=
systemctl start mysqld.service |
|
Translations Ignore |
---|
Code Block |
---|
| service mysqld stop
service mysqld start |
|
Prüfen, ob Datenbank und Replikation und Version in Ordnung sind Translations Ignore |
---|
Code Block |
---|
mysql -u root -p<password> -e "SHOW SLAVE STATUS\G SELECT VERSION();" |
|
Fahren Sie nur fort, wenn keine Fehler gefunden werden. Warning |
---|
| Das jtel-Portal ist NICHT mit MySQL 5.7 kompatibel. - Sie müssen den Upgrade-Pfad auf 8.x an dieser Stelle fortsetzen. Aktualisieren Sie ALLE Server auf 5.7, bevor Sie fortfahren. |
Phase 3 - Update MySQL auf 8.0 Warning |
---|
| Wenn Sie nach diesem Punkt fortfahren, ohne dass Version 3.15 oder später des jtel-Portals installiert ist, zerstört die Datenbank, und ein Rollback ist erforderlich. Denken Sie daran - erst die Slaves, dann die Master. Einer nach dem anderen. |
Durchführen eines sauberen Shutdowns von MySQL mit innodb_fast_shutdown auf 0 Translations Ignore |
---|
Code Block |
---|
mysql -u root -p<password> --execute="SET GLOBAL innodb_fast_shutdown=0"
mysqladmin -u root -p<password> shutdown |
|
8.0-Repositorys aktivieren und den Server aktualisierenBeachten Sie, dass der Befehl yum ohne die Option -y ausgführt wird. Sie sollten prüfen, was das System vorhat, bevor Sie diesen Schritt bestätigen. Translations Ignore |
---|
Code Block |
---|
# Enable 8.x
yum-config-manager --disable mysql56-community
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql80-community
# Update to 8.x
yum update |
|
Starten Sie den MySQL-ServerStarten Sie den mysql Server. Translations Ignore |
---|
Code Block |
---|
| systemctl start mysqld.service |
|
Translations Ignore |
---|
Code Block |
---|
| service mysqld start |
|
Beachten Sie, dass das Starten des mysql-Servers einige Zeit dauern kann. Es mag sogar so aussehen, als sei es aufgehangen, aber warten Sie ein paar Minuten und lassen Sie es fertigstellen. Warning |
---|
| mysql_upgrade wird automatisch von allen aktuellen 8.x-Versionen von MySQL Server ausgeführt. Der Output von mysql_upgrade befindet sich in /var/log/mysqld.log und Fehler werden in /var/log/messages gefunden Überprüfen Sie diese Dateien auf Fehler. |
Prüfen, ob Datenbank und Replikation und Version in Ordnung sind Translations Ignore |
---|
Code Block |
---|
mysql -u root -p<password> -e "SHOW SLAVE STATUS\G SELECT VERSION();" |
|
Phase 4 - Andere Komponenten konfigurierenPortalFühren Sie das Portal-Aktualisierungsskript erneut aus. Dadurch werden die Skripte für MySQL 8.x optimiert. Translations Ignore |
---|
Code Block |
---|
sudo /home/jtel/shared/JTELCarrierPortal/Update/update_release.sh |
|
JBOSS ServerEntweder: Neue Version von JBOSS Server installierenSie können einfach die neue Version des JBOSS-Servers installieren, mindestens jboss-as-7.1.1.FINAL.14.tar.gz von cdn.jtel.de. Diese enthält die erforderlichen Komponenten, erfordert jedoch, dass die Dateien hazelcast.xml und standalone-full.xml aktualisiert werden, wie bei der Installation des Webservers beschrieben, siehe hier: Role WEB Oder: Updaten des JBOSS-ServersDer JBOSS-Server benötigt einen neuen Konnektor, um sich mit MySQL 8.x zu verbinden. Diese kann mit dem folgenden Befehl (z.B. von /home/jtel/shared/JTELCarrierPortal/Update aus ausführen) als jtel-Benutzer auf die JBOSS-Serverinstanz kopiert werden: Translations Ignore |
---|
Code Block |
---|
./update_jboss.sh |
|
Standalone-full.xml ändernDie Konfigurationsdatei standalone-full.xml erfordert einige Änderungen. Eine neue Verbindungseigenschaft muss zu den Datasource-Konfigurationen für MySQL hinzugefügt werden. Dies muss zu den Datasource-Konfigurationen für JTELWeb, JTELWebSlave, JTELStats, JTELLog und JTELReports hinzugefügt werden. Siehe das folgende Beispiel: Translations Ignore |
---|
Code Block |
---|
...
<datasource jndi-name="java:jboss/datasources/JTELLog" pool-name="JTELLog" enabled="true">
<connection-url>jdbc:mysql://testdb2:3306/JTELLog</connection-url>
#
# THIS SECTION NEEDS TO BE ADDED
#
<connection-property name="useSSL">
false
</connection-property>
... |
|
Stellen Sie im Abschnitt drivers sicher, dass die Zeile driver class für den mysql-Treiber enthalten ist. Dies wird nur bei sehr alten jboss-Installationen fehlen. Wenn dies der Fall ist, ist es vielleicht besser, den jboss-Server komplett auf eine neue Version zu aktualisieren.. Translations Ignore |
---|
Code Block |
---|
...
<drivers>
<driver name="com.mysql" module="com.mysql">
#
# MAKE SURE THIS NEXT LINE IS PRESENT.
#
<driver-class>com.mysql.jdbc.Driver</driver-class>
... |
|
8-Server-ODBC-Verbindungen rekonfigurierenDer Rollback-String für MySQL-Versionen 8.x (eigentlich MySQL 5.7) und höher hat sich geändert und muss in 8-Server neu konfiguriert werden. Die neue Rollback-String ist: Translations Ignore |
---|
Code Block |
---|
DO RELEASE_ALL_LOCKS(); ROLLBACK; |
|
8-Server sollte nach dieser Änderung neu gestartet werden:
Fehlerbehebungjtel Portal DB-Skript schlägt fehl mit "Failed to load caching_sha2_password authentication plugin"Die DB-Skripte werden von einem anderen Server als dem/den aktualisierten MySQL-Server(n) ausgeführt. Das ist gut! Sie sollten sie von der Rolle STORE aus ausführen. Allerdings müssen Sie auch auf diesen Maschinen den mysql-Client aktualisieren. Tun Sie dies (ändern Sie die zweite Zeile für CentOS 6.x - siehe oben für die erforderliche RPM): Translations Ignore |
---|
Code Block |
---|
yum remove mysql-community-release.noarch
yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum update mysql* |
|
Führen Sie nun die Skripte erneut aus. jtel Portal DB-Skript schlägt fehl mit "Duplicate Entry"Versuchen Sie, das DB-Skript erneut auszuführen. Beispielsweise schlagen frühere Versionen von DB Forge beim Verbinden mit MySQL 8.x fehl. Aktualisieren Sie das Tool. Sklave startet nicht mit Fehler "ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository"Die folgende Reihe von Befehlen, die in mysql ausgeführt werden, kann manchmal helfen, den Slave neu zu starten, ohne die Replikation von Grund auf neu aufzubauen: Translations Ignore |
---|
Code Block |
---|
RESET SLAVE;
START SLAVE IO_THREAD;
STOP SLAVE IO_THREAD;
RESET SLAVE;
START SLAVE; |
|
Upgrade auf MySQL 8.x schlägt fehlWenn das Upgrade auf 8.x fehlschlägt, versuchen Sie, wie folgt auf 5.7 zurückzusetzen und das Problem in 5.7 zu lösen, bevor Sie fortfahren. Translations Ignore |
---|
Code Block |
---|
# Enable 5.7
yum-config-manager --disable mysql56-community
yum-config-manager --enable mysql57-community
yum-config-manager --disable mysql80-community
# Uninstall
yum -y remove mysql-community-server
yum -y remove mysql-community-client
yum -y remove mysql-community-libs
yum -y remove mysql-community-common
# Install
yum -y install mysql-community-server |
|
|