Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Content imported from a Scroll Translations translation file.

Aus Sicht der Installation haben diese funktionelle Komponenten keine Auswirkungen da eine vollständige lokale (synchronisierte) Fassung der Datenbank auf jedem Server des Verbundes lagert. Die Aufteilung der Funktionen ergibt sich mehr aus Sicht der "Verbraucher" in denen Konfiguriert werden kann, auf welchem Server gegebenenfalls für welche Aufgaben zugegriffen werden kann. So ist es z.B. im Web-Application-Server möglich, die Datenbankanbindung für die Bereiche Primary, Reporting und Realtime separat anzugeben, so dass es möglich ist, diese Rollen auf verschiedene Server aufzuteilen.

Der einzige Aspekt der Installation der durch die Funktionsaufteilung betroffen ist, ergibt sich aus der Tatsache, dass bei einem Verteilen der Funktionen auf verschiedene Server ein entsprechendes MySQL-Replikations-Setup aufgebaut und konfiguriert werden muss. Dadurch ergibt sich, dass die Funktion "Primary" erzwungenermaßen auf einem Replikations-Master läuft, während alle anderen Funktionen auf Replikations-Slaves laufen können.

Eine sehr besondere Art der Konfiguration ist des weiteren ein spezielles Setup in dem zwei Server in einer Master-Master-Replikation zusammengeschlossen werden (die wiederrum beide als Master für weitere Slaves diesenen können). In einer solchen hoch verfügbaren Konfiguration wird nur einer der Master als "Primary" verwendet. Der andere würde üblicherweise als passive Reserve des HA-Clusters dienen. Es bietet sich allerdings an, diese Ressource sinnvoller zu nutzen, in dem der passive Master entweder die "Reporting" oder die "Statistik" Funktion übernimmt. Die Funktionsbezogenen IP-Adressen werden soweit vom HA-Manager verwaltet. Eine solche Konfiguration hat den Vorteil ein hohes Maß an Verfügbarkeit zu bieten, ohne allzu verschwenderisch mit den Ressourcen umzugehen.

Gemeinsame Installationsschritte

Unabhängig von der Funktion die ein DATA Server übernehmen soll, sind erst mal folgende Installationsschritte zu tätigen auf sowohl Master als auch Slave.

Anbinden des Datenbereiches

Datenbereich anbinden, wie auf der Seite Anbindung STORE (Alle Linux ausser STORE) beschrieben.

Installation der Software

Das Einbinden der offiziellen MySQL Software Repositores und die Installation des MySQL-Servers erfolgt mit folgenden Befehlen:

MySQL 8.x 

Sv translation
languageen

Common Installation Tasks

These tasks are performed on all DB servers, no matter what role (master or slave) they are to perform.

Attach STORE

First of all, the STORE is connected to the machine, as described here: Mounting STORE - All Linux except for STORE (CentOS8/Win2019)

Install MySQL

Configure Repositories and Install mysql-community-server

CentOS 8.x comes with some default repositories, which we do not want. These are disabled, and the MySQL repository is installed. Then the MySQL Server is installed.

Translations Ignore


Code Block
languagebash
# Make sure liibaio is on
dnf -y install libaio

# Disable some default stuff
dnf config-manager --disable mysql-connectors-community
dnf config-manager --disable mysql-tools-community
dnf -y module disable mysql

# Install the Oracle MySQL repo and the client
dnf -y install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
dnf -y install mysql-community-server


Start MySQL

Next, the MySQL server is configured to autostart on boot, and started up:

Translations Ignore


Code Block
languagebash
systemctl enable mysqld.service
systemctl start mysqld.service


Configure Firewall

Access to the MySQL Server is configured in the firewall:

Translations Ignore


Code Block
languagebash
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload


Configure MySQL

Configuration Files

MySQL 8.x creates a configuration directory /etc/my.cnf.d when it installs. The jtel configuration files are stored here, but a reference must be added to this directory so that mysql loads the configuration files.

This is added with the following command:

Translations Ignore


Code Block
languagebash
cat <<EOFF >> /etc/my.cnf
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/my.cnf.d/
EOFF


The next command downloads the main configuration file for the mysql server. This file contains a lot of well commented settings which can be tweaked if required. The main parameter to be changed is the RAM usage of the sever. See below.

translations

Table of Contents
maxLevel3
printablefalse

Functional Components of the Role

The role DATA can be installed on one or more database servers. A setup with only one DATA server is only recommended for installations with a low agent count (< 30) and little or no reporting requirements.

FunctionDescriptionAccessCountRedundancy Strategy
PrimaryAlle Schreibzugriffe erfolgen hier. Des weiteren wird hier immer alle funktionellen Routinen ausgeführt, die Daten verändern. Insbesondere die Anrufverteilung erfolgt hier.Schreiben und Lesen1Kann durch eine Active/Passive Konfiguration redundant ausgelegt werden
ReportingErstellung komplexer Datenauswertungen. Diese Vorgänge erfordern mitunter ein hohes Maß an Speicher-, Berechnungs- und I/O Ressourcen.Lesen0 - nIn sehr großen Systemen können verschiedene Gruppen Web-Server auf verschiedene Reporting-Slaves aufgeteilt werden. Des weiteren können mehrere Reporting-Slaves als Active/Active Cluster zusammengefasst werden
Realtime StatistikBerechnung der Echtzeitstatistiken in kurzen Intervallen für die angemeldeten Benutzer bzw. Supervisoren und Wallboards.Lesen0 - nIn sehr großen Systemen können verschiedene Gruppen Web-Server auf verschiedene Statistik-Slaves aufgeteilt werden. Des weiteren können mehrere Statistik-Slaves als Active/Active Cluster zusammengefasst werden
Kunden AbfragenErstellung kundenspezifischer Datenauswertungen. Die Auslagerung dieser Funktion in einem separaten System dient vor allen der Absicherung des KernsystemsLesen0 - n
Translations Ignore
Code Block
languagebash
titleMySQL 8.x
yum -y install libaio
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server

 MySQL 5.6

translations-ignore


Code Block
languagebash
titleMySQL 5.6
yumwget -y installP /etc/my.cnf.d http://devcdn.mysqljtel.comde/downloads/getconfigs/mysqljtel-community-release-el6-5.noarch.rpm
yum -y install mysql-community-server

Beide Varianten

enhanced-8.cnf


Restart Server

Now, the MySQL must be restarted:Der MySQL Server Dienst wird mit folgendem Befehl in die Liste der automatisch startenden Dienste aufgenommen und gestartet.

Translations Ignore


Code Block
languagebash
titleMySQL service autostart
chkconfigsystemctl restart mysqld on
service mysqld start

Als nächstes müssen in der Firewall die Port-Freigaben für den MySQL Server Dienst eingetragen und persistent gespeichert werden:

Translations Ignore
Code Block
languagebash
titleConfigure firewall
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
.service


Configure Users

After the first restart, user access must be setup.

MySQL 8.x saves a generated random password for the root user in the file /var/log/mysqld.log

This password must be extracted. Often, it contains special characters which cannot be input on the command line within a script. For the following command the password is input manually. Note, that <password> refers to the NEW password you want to assign to the root account.

Status
colourRed
titleCaution Password

Translations Ignore


Code Block
languagebash
mysqladmin -u root -p password '<password>'


The following commands configure the further users required:

Status
colourRed
titleCaution Password

Translations Ignore


Code Block
languagebash
mysql -u root -p<password> -v -e"CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>'"
mysql -u root -p<password> -v -e"GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION"
mysql -u root -p<password> -v -e"FLUSH PRIVILEGES"


Install UDP Plugin

Next, the UDP plugin is installed. This is required for the communication with further software modules in the system, when certain DB changes are made.

The installation is slightly different for master and slave servers.

Installation

Master Server

Translations Ignore


Code Block
languagebash
cp /home/jtel/shared/JTELCarrierPortal/Libraries/jtel_udf_udpsend/jtel_udf_udpsend.so /usr/lib64/mysql/plugin/
chown root:root /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chmod 755 /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chcon system_u:object_r:lib_t:s0  /usr/lib64/mysql/plugin/jtel_udf_udpsend.so


Slave Server


Translations Ignore


Code Block
languagebash
cp /home/jtel/shared/JTELCarrierPortal/Libraries/jtel_udf_udpsend/dummy/jtel_udf_udpsend.so /usr/lib64/mysql/plugin/
chown root:root /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chmod 755 /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chcon system_u:object_r:lib_t:s0  /usr/lib64/mysql/plugin/jtel_udf_udpsend.so


Configuration

To configure the plugin, the following commands are executed:

Status
colourRed
titleCaution Password

Um die Konfiguration des MySQL Servers zu vereinfachen, wird nun ein Verzeichnis angelegt, in dem modulare Konfigurationsdateien abgelegt werden können. Damit diese auch vom MySQL Server geladen werden, muss in der Hauptkonfigurationsdatei noch ein Eintrag erfolgenden. Dies erfolgt durch die Eingabe folgender Befehle:

Translations Ignore
Code Block
languagebash
titleConfigure MySQL Server
mkdir /etc/my.cnf.d
cat <<EOFF >> /etc/my.cnf
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/my.cnf.d/
EOFF
semanage fcontext -a -t mysqld_etc_t "/etc/my\.cnf\.d(/.*)?"
restorecon -R -v /etc/my.cnf.d

Diese Befehle erzeugen das Verzeichnis, fügen der Hauptkonfigurationsdatei die Ladeanweisung für die modularen Konfigurationsdateien hinzu, erstellen eine SELINUX-Sicherheitsfreigabe für das neue Konfigurationsverzeichnis und erzeugen die entsprechenden Security-Labels.

Als nächstes wird eine modulare Konfigurationsdatei mit einigen kommentierten relevanten Optimierungseinstellungen eingespielt.

MySQL 8.x

Translations Ignore
Code Block
languagebash
titleLoad the basic settings
wget -P /etc/my.cnf.d http://cdn.jtel.de/downloads/configs/jtel-enhanced-8.cnf

Die Datei /etc/mycnf.d/jtel-enhanced-8.cnf enthält eine Reihe gut kommentierter Konfigurationsanweisungen mit denen die Funktion des MySQL Server optimiert werden kann. Die meisten dieser Anweisungen sind auskommentiert. Je nach Bedarf sollten diese Parameter mit Vorsicht angepasst werden. Die Standardwerte sollten aber für die meisten Installationen in Ordnung sein.

MySQL 5.6

Translations Ignore


Code Block
languagebash
titleLoad the basic settings
wgetmysql -P /etc/my.cnf.d http://cdn.jtel.de/downloads/configs/jtel-enhanced.cnf

Die Datei /etc/mycnf.d/jtel-enhanced.cnf enthält eine Reihe gut kommentierter Konfigurationsanweisungen mit denen die Funktion des MySQL Server optimiert werden kann. Die meisten dieser Anweisungen sind auskommentiert. Je nach Bedarf sollten diese Parameter mit Vorsicht angepasst werden. Die Standardwerte sollten aber für die meisten Installationen in Ordnung sein.

Beide Varianten

Nun muss der MySQL Server neu gestartet werden:

Translations Ignore
Code Block
languagebash
titleStart MySQL Server
service mysqld restart

Nach dem ersten Start des MySQL Servers müssen nun die Zugangsdaten für den root-Benutzer festgelegt werden.

Da in MySQL ein Benutzerkonto nicht nur aus einem Benutzernamen sondern auch aus eine Herkunftsadresse der Verbindung besteht, muss noch ein weiterer root-Benutzer erzeugt werden, der sich von beliebigen Herkunftsadressen verbinden darf. 

MySQL 8.x

MySQL 8.x speichert ein generiertes Passwort für den root Benutzer in der Datei /var/log/mysqld.log

Dieses Passwort muss als erstes extrahiert werden. Da es oft Sonderzeichen enthält, die nicht ohne Weiteres in die Kommandozeile eingegeben werden können, erfolgt die erste Anpassung durch manuelle Eingabe des Passwortes.

Translations Ignore
Code Block
languagebash
titleMySQL 8.x - Create and configure server users
mysqladmin -u root -p password '<password>'

Anschließend wird folgende Befehlskette eingegeben um den weiteren User zu erstellen:

ACHTUNG: <password> mit den entsprechenden Passwort ersetzen.

Translations Ignore
Code Block
languagebash
titleMySQL 8.x - Create and configure server users
mysql -u root -p<password> -v -e"CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>'"
mysql -u root -p<password> -v -e"GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION"
mysql -u root -p<password> -v -e"FLUSH PRIVILEGES"
u root -p<password> -v -e"DROP FUNCTION IF EXISTS udpsend"
mysql -u root -p<password> -v -e"CREATE FUNCTION udpsend RETURNS STRING SONAME 'jtel_udf_udpsend.so'"




Note
titleImportant

The configuration of the UDP plugin must be performed before the server is included in any replication between servers, otherwise replication will fail. The UDP plugin must be installed on all servers.

Configure Server RAM

In order that the server makes the best use of the RAM available, the configuration file /etc/my.cnf.d/jtel-enhanced-8.cnf must be adapted.

The setting innodb_buffer_pool_size should be adapted to about 3/4 of the available RAM, but a minimum of 3-4 GB should remain for the use of other processes. For Servers with 4 GB RAM, this should not exceed 2 GB. 

Translations Ignore


Code Block
languagebash
# For 4 GB RAM
innodb_buffer_pool_size = 2048M

# For 8 GB RAM
innodb_buffer_pool_size = 5120M
 
# For 12 GB RAM
innodb_buffer_pool_size = 8192M
 
# For 16 GB RAM
innodb_buffer_pool_size = 12288M

...
# From 16 GB simply take 3/4 of the RAM


Restart MySQL

Finally, the MySQL server is restarted for the last time, to load all configuration settings

MySQL 5.6

ACHTUNG: <password> mit den entsprechenden Passwort ersetzen.

Translations Ignore


Code Block
languagebash
titleMySQL 5.6 - Create and configure server users
mysqladmin -u root password '<password>'
mysql -u root -p<password> -v -e"CREATE USER 'root'@'%' IDENTIFIED BY '<password>'"
mysql -u root -p<password> -v -e"GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION"
mysql -u root -p<password> -v -e"FLUSH PRIVILEGES"

Beide Varianten

Als nächstes wird noch ein zusätzliches Plugin-Modul dem MySQL Server hinzugefügt. Dieses Modul wird ab jtel Software Version 3.06 für die Kommunikation mit weiteren Softwarekomponenten benötigt. Bei Neuinstallationen soll es aber auch dann installiert werden, wenn geplant ist, ältere Revisionen der Software einzuspielen, damit einem späteren Update nichts im Wege steht. Dies erfolgt durch folgende Befehle:

Translations Ignore
Restart the MySQL server
systemctl restart mysqld.service




Sv translation
languagede

Status
colourRed
titleTHIS PAGE IS ONLY AVAILABLE IN ENGLISH

Sv translation
languagefr

Tâches d'installation communes

Ces tâches sont effectuées sur tous les serveurs de la base de données, quel que soit le rôle (maître ou esclave) qu'ils doivent jouer.

Joindre MAGASIN

Tout d'abord, le STORE est connecté à la machine, comme décrit ici : Mounting STORE - All Linux except for STORE (CentOS8/Win2019)

Installer MySQL

Configuration des dépôts et installation de mysql-community-server

CentOS 8.x est livré avec quelques dépôts par défaut, dont nous ne voulons pas. Ceux-ci sont désactivés et le dépôt MySQL est installé. Ensuite, le serveur MySQL est installé.

Translations Ignore


Code Block
languagebash
# Assurez-vous que liibaio est sur dnf -y install libaio # Désactivez certains trucs par défaut dnf config-manager --disable mysql-connector-community dnf config-manager --disable mysql-tools-community dnf -y module disable mysql # Install the Oracle MySQL repo et le client dnf -y install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm dnf -y install mysql-community-server


Démarrer MySQL

Ensuite, le serveur MySQL est configuré pour démarrer automatiquement au démarrage, et démarré

Code Block
languagebash
titleInstall UDP Send Plugin - MASTER
cp /home/jtel/shared/JTELCarrierPortal/Libraries/jtel_udf_udpsend/jtel_udf_udpsend.so /usr/lib64/mysql/plugin/
chown root:root /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chmod 755 /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chcon system_u:object_r:lib_t:s0  /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
Translations Ignore
Code Block
languagebash
titleInstall UDP Send Plugin - SLAVE
cp /home/jtel/shared/JTELCarrierPortal/Libraries/jtel_udf_udpsend/dummy/jtel_udf_udpsend.so /usr/lib64/mysql/plugin/
chown root:root /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chmod 755 /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
chcon system_u:object_r:lib_t:s0  /usr/lib64/mysql/plugin/jtel_udf_udpsend.so

Um die zusätzliche Funktion den SQL Prozeduren verfügbar zu machen, muss noch folgender Befehl ausgeführt werden (<password> mit den entsprechenden Passwort ersetzen) :

Translations Ignore


Code Block
languagebash
titleRegister the UDP send command
mysql -u root -p<password> -v -e"DROP FUNCTION IF EXISTS udpsend"
mysql -u root -p<password> -v -e"CREATE FUNCTION udpsend RETURNS STRING SONAME 'jtel_udf_udpsend.so'"
Note
titleWichtiger Hinweis

Die oben aufgelisteten SQL Befehle müssen auf einem Datenbankserver ausgeführt werden, bevor er Teil eines Replikationsverbundes wird. Soll das UDP Plugin auf bestehenden DATA-Server nachgerüstet werden, so muss eine andere Vorgehensweise gewählt werden:

  1. Das Modul muss auf allen Server des Verbunden (Sowohl Master als auch Slaves) in das Plugin-Verzeichnis kopiert werden (Siehe Code Block "UDP Send Plugin installieren").
  2. Die Registrierung des Plugins dar nur auf dem Master Server erfolgen. Da der Befehl durch Replikation auch auf den Slaves ausgeführt wird, ist es nicht erforderlich, den Befehl auch dort auszuführen.

ACHTUNG: Wird der Befehl ausgeführt ohne dass das UDP Plugin auf allen Servern des Verbundes vorhanden ist, verursacht dies einen Abbruch der Replikation, der nur durch einen händischen Eingriff repariert werden kann.

Anpassung my.cnf auf RAM des Servers

Damit der Server den zur Verfügung gestellten RAM vollständig nutzt, muss eine Konfiguration angepasst werden mit vi.

Diese Einstellung sollte ca. 3/4 des RAMs des Servers entsprechen, wobei 3-4 GB für mysql und andere Prozesse übrig bleiben sollten.

systemctl enable mysqld.service systemctl start mysqld.service


Configurer le pare-feu

L'accès au serveur MySQL est configuré dans le pare-feu :

Translations Ignore


Code Block
languagebash
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload


Configurer MySQL

Fichiers de configuration

MySQL 8.x crée un répertoire de configuration /etc/my.cnf.d lorsqu'il s'installe. Les fichiers de configuration de jtel sont stockés ici, mais une référence doit être ajoutée à ce répertoire pour que mysql charge les fichiers de configuration.

Il est ajouté avec la commande suivante :

Translations Ignore


Code Block
languagebash
cat << EOFF >> /etc/my.cnf # # * IMPORTANT: paramètres supplémentaires pouvant remplacer ceux de ce fichier! # Les fichiers doivent se terminer par '.cnf', sinon ils seront ignorés. #! includedir /etc/my.cnf.d/ EOFF 


La commande suivante télécharge le fichier de configuration principal pour le serveur mysql. Ce fichier contient de nombreux paramètres bien commentés qui peuvent être modifiés si nécessaire. Le principal paramètre à modifier est l'utilisation de la RAM du serveur. Voir ci-dessous.

Translations Ignore


Code Block
languagebash
wget -P 
Translations Ignore
vi
Code Block
languagebash
title
/etc/my.cnf.d http://cdn.jtel.de/downloads/configs/jtel-enhanced-8.cnf
# For 8 GB RAM
innodb_buffer_pool_size = 5120M
 
# For 12 GB RAM
innodb_buffer_pool_size = 8192M
 
# For 16 GB RAM
innodb_buffer_pool_size = 12288M


...
# From 16 GB simply take 3/4 of the RAM

MySQL Neustart

Als letztes wird der MySQL Server neu gestartet, damit alle Einstellungen übernommen werden:

Translations Ignore
Code Block
languagebash
titleRestart the MySQL server
service mysqld restart
Sv translation
languagede


Redémarrer le serveur

Maintenant, le serveur MySQL doit être redémarré :

Translations Ignore


Code Block
languagebash
systemctl restart mysqld.service


Configurer les utilisateurs

Après le premier redémarrage, l'accès de l'utilisateur doit être configuré.

MySQL 8.x enregistre dans le fichier un mot de passe aléatoire généré pour l'utilisateur root /var/log/mysqld.log

Ce mot de passe doit être extrait. Souvent, il contient des caractères spéciaux qui ne peuvent pas être saisis sur la ligne de commande dans un script. Pour la commande suivante, le mot de passe est saisi manuellement. Notez que <mot de passe> fait référence au NOUVEAU mot de passe que vous souhaitez attribuer au compte root.

Status
colourRed
titleMot de passe de précaution

Translations Ignore


Code Block
languagebash
mysqladmin -u root -p password '<password>'


Les commandes suivantes permettent de configurer les autres utilisateurs requis :

Status
colourRed
titleMot de passe de précaution

Translations Ignore


Code Block
languagebash

Table of Contents
maxLevel3
printablefalse

Funktionelle Komponenten der Rolle

Die Rolle DATA kann auf einem oder mehrere Server aufgeteilt werden, wobei ein Setup mit nur einem DATA server nur bei sehr kleinen Installationen zu empfehlen ist. Die Aufteilung entspricht dabei folgenden funktionellen Komponenten:

FunktionBeschreibungZugriffMengeRedundanzstrategiePrimaryAlle Schreibzugriffe erfolgen hier. Des weiteren wird hier immer alle funktionellen Routinen ausgeführt, die Daten verändern. Insbesondere die Anrufverteilung erfolgt hier.Schreiben und Lesen1Kann durch eine Active/Passive Konfiguration redundant ausgelegt werdenReportingErstellung komplexer Datenauswertungen. Diese Vorgänge erfordern mitunter ein hohes Maß an Speicher-, Berechnungs- und I/O Ressourcen.Lesen0 - nIn sehr großen Systemen können verschiedene Gruppen Web-Server auf verschiedene Reporting-Slaves aufgeteilt werden. Des weiteren können mehrere Reporting-Slaves als Active/Active Cluster zusammengefasst werdenRealtime StatistikBerechnung der Echtzeitstatistiken in kurzen Intervallen für die angemeldeten Benutzer bzw. Supervisoren und Wallboards.Lesen0 - nIn sehr großen Systemen können verschiedene Gruppen Web-Server auf verschiedene Statistik-Slaves aufgeteilt werden. Des weiteren können mehrere Statistik-Slaves als Active/Active Cluster zusammengefasst werdenKunden AbfragenErstellung kundenspezifischer Datenauswertungen. Die Auslagerung dieser Funktion in einem separaten System dient vor allen der Absicherung des KernsystemsLesen0 - n

Aus Sicht der Installation haben diese funktionelle Komponenten keine Auswirkungen da eine vollständige lokale (synchronisierte) Fassung der Datenbank auf jedem Server des Verbundes lagert. Die Aufteilung der Funktionen ergibt sich mehr aus Sicht der "Verbraucher" in denen Konfiguriert werden kann, auf welchem Server gegebenenfalls für welche Aufgaben zugegriffen werden kann. So ist es z.B. im Web-Application-Server möglich, die Datenbankanbindung für die Bereiche Primary, Reporting und Realtime separat anzugeben, so dass es möglich ist, diese Rollen auf verschiedene Server aufzuteilen.

Der einzige Aspekt der Installation der durch die Funktionsaufteilung betroffen ist, ergibt sich aus der Tatsache, dass bei einem Verteilen der Funktionen auf verschiedene Server ein entsprechendes MySQL-Replikations-Setup aufgebaut und konfiguriert werden muss. Dadurch ergibt sich, dass die Funktion "Primary" erzwungenermaßen auf einem Replikations-Master läuft, während alle anderen Funktionen auf Replikations-Slaves laufen können.

Eine sehr besondere Art der Konfiguration ist des weiteren ein spezielles Setup in dem zwei Server in einer Master-Master-Replikation zusammengeschlossen werden (die wiederrum beide als Master für weitere Slaves diesenen können). In einer solchen hoch verfügbaren Konfiguration wird nur einer der Master als "Primary" verwendet. Der andere würde üblicherweise als passive Reserve des HA-Clusters dienen. Es bietet sich allerdings an, diese Ressource sinnvoller zu nutzen, in dem der passive Master entweder die "Reporting" oder die "Statistik" Funktion übernimmt. Die Funktionsbezogenen IP-Adressen werden soweit vom HA-Manager verwaltet. Eine solche Konfiguration hat den Vorteil ein hohes Maß an Verfügbarkeit zu bieten, ohne allzu verschwenderisch mit den Ressourcen umzugehen.

Gemeinsame Installationsschritte

Unabhängig von der Funktion die ein DATA Server übernehmen soll, sind erst mal folgende Installationsschritte zu tätigen auf sowohl Master als auch Slave.

Anbinden des Datenbereiches

Datenbereich anbinden, wie auf der Seite Anbindung STORE (Alle Linux ausser STORE) beschrieben.

Installation der Software

Das Einbinden der offiziellen MySQL Software Repositores und die Installation des MySQL-Servers erfolgt mit folgenden Befehlen:

MySQL 8.x 

Translations Ignore
Code Block
languagebash
titleMySQL 8.x
yum -y install libaio
yum -y install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server

 MySQL 5.6

Translations Ignore
Code Block
languagebash
titleMySQL 5.6
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum -y install mysql-community-server

Beide Varianten

Der MySQL Server Dienst wird mit folgendem Befehl in die Liste der automatisch startenden Dienste aufgenommen und gestartet.

Translations Ignore
Code Block
languagebash
titleMySQL service autostart
chkconfig mysqld on
service mysqld start

Als nächstes müssen in der Firewall die Port-Freigaben für den MySQL Server Dienst eingetragen und persistent gespeichert werden:

Translations Ignore
Code Block
languagebash
titleConfigure firewall
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

Um die Konfiguration des MySQL Servers zu vereinfachen, wird nun ein Verzeichnis angelegt, in dem modulare Konfigurationsdateien abgelegt werden können. Damit diese auch vom MySQL Server geladen werden, muss in der Hauptkonfigurationsdatei noch ein Eintrag erfolgenden. Dies erfolgt durch die Eingabe folgender Befehle:

Translations Ignore
Code Block
languagebash
titleConfigure MySQL Server
mkdir /etc/my.cnf.d
cat <<EOFF >> /etc/my.cnf
#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#
!includedir /etc/my.cnf.d/
EOFF
semanage fcontext -a -t mysqld_etc_t "/etc/my\.cnf\.d(/.*)?"
restorecon -R -v /etc/my.cnf.d

Diese Befehle erzeugen das Verzeichnis, fügen der Hauptkonfigurationsdatei die Ladeanweisung für die modularen Konfigurationsdateien hinzu, erstellen eine SELINUX-Sicherheitsfreigabe für das neue Konfigurationsverzeichnis und erzeugen die entsprechenden Security-Labels.

Als nächstes wird eine modulare Konfigurationsdatei mit einigen kommentierten relevanten Optimierungseinstellungen eingespielt.

MySQL 8.x

Translations Ignore
Code Block
languagebash
titleLoad the basic settings
wget -P /etc/my.cnf.d http://cdn.jtel.de/downloads/configs/jtel-enhanced-8.cnf

Die Datei /etc/mycnf.d/jtel-enhanced-8.cnf enthält eine Reihe gut kommentierter Konfigurationsanweisungen mit denen die Funktion des MySQL Server optimiert werden kann. Die meisten dieser Anweisungen sind auskommentiert. Je nach Bedarf sollten diese Parameter mit Vorsicht angepasst werden. Die Standardwerte sollten aber für die meisten Installationen in Ordnung sein.

MySQL 5.6

Translations Ignore
Code Block
languagebash
titleLoad the basic settings
wget -P /etc/my.cnf.d http://cdn.jtel.de/downloads/configs/jtel-enhanced.cnf

Die Datei /etc/mycnf.d/jtel-enhanced.cnf enthält eine Reihe gut kommentierter Konfigurationsanweisungen mit denen die Funktion des MySQL Server optimiert werden kann. Die meisten dieser Anweisungen sind auskommentiert. Je nach Bedarf sollten diese Parameter mit Vorsicht angepasst werden. Die Standardwerte sollten aber für die meisten Installationen in Ordnung sein.

Beide Varianten

Nun muss der MySQL Server neu gestartet werden:

Translations Ignore
Code Block
languagebash
titleStart MySQL Server
service mysqld restart

Nach dem ersten Start des MySQL Servers müssen nun die Zugangsdaten für den root-Benutzer festgelegt werden.

Da in MySQL ein Benutzerkonto nicht nur aus einem Benutzernamen sondern auch aus eine Herkunftsadresse der Verbindung besteht, muss noch ein weiterer root-Benutzer erzeugt werden, der sich von beliebigen Herkunftsadressen verbinden darf. 

MySQL 8.x

MySQL 8.x speichert ein generiertes Passwort für den root Benutzer in der Datei /var/log/mysqld.log

Dieses Passwort muss als erstes extrahiert werden. Da es oft Sonderzeichen enthält, die nicht ohne Weiteres in die Kommandozeile eingegeben werden können, erfolgt die erste Anpassung durch manuelle Eingabe des Passwortes.

Translations Ignore
Code Block
languagebash
titleMySQL 8.x - Create and configure server users
mysqladmin -u root -p password '<password>'

Anschließend wird folgende Befehlskette eingegeben um den weiteren User zu erstellen:

ACHTUNG: <password> mit den entsprechenden Passwort ersetzen.

Translations Ignore
Code Block
languagebash
titleMySQL 8.x - Create and configure server users
mysql -u root -p<password> -v -e"CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>'"
mysql -u root -p<password> -v -e"GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION"
mysql -u root -p<password> -v -e"FLUSH PRIVILEGES"

MySQL 5.6

ACHTUNG: <password> mit den entsprechenden Passwort ersetzen.

Translations Ignore
Code Block
languagebash
titleMySQL 5.6 - Create and configure server users
mysqladmin -u root password '<password>'
mysql -u root -p<password> -v -e"CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '<password>'"
 mysql -u root -p<password> -v -e"GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION"
 mysql -u root -p<password> -v -e"FLUSH PRIVILEGES"

Beide Varianten

Als nächstes wird noch ein zusätzliches Plugin-Modul dem MySQL Server hinzugefügt. Dieses Modul wird ab jtel Software Version 3.06 für die Kommunikation mit weiteren Softwarekomponenten benötigt. Bei Neuinstallationen soll es aber auch dann installiert werden, wenn geplant ist, ältere Revisionen der Software einzuspielen, damit einem späteren Update nichts im Wege steht. Dies erfolgt durch folgende Befehle:


Installer le plug-in UDP

Ensuite, le plugin UDP est installé. Il est nécessaire pour la communication avec d'autres modules logiciels du système, lorsque certaines modifications sont apportées à la base de données.

L'installation est légèrement différente pour les serveurs maître et esclave.

Installation

Serveur maître

Translations Ignore


Code Block
languagebashtitleInstall UDP Send Plugin - MASTER
cp /home/jtel/shared/JTELCarrierPortal/Libraries/jtel_udf_udpsend/jtel_udf_udpsend.so /usr/lib64/mysql/plugin/
 chown root:root /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
 chmod 755 /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
 chcon system_u:object_r:lib_t:s0  /usr/lib64/mysql/plugin/jtel_udf_udpsend.so


Serveur esclave


Translations Ignore


Code Block
languagebash
titleInstall UDP Send Plugin - SLAVE
cp /home/jtel/shared/JTELCarrierPortal/Libraries/jtel_udf_udpsend/dummy/jtel_udf_udpsend.so /usr/lib64/mysql/plugin/
 chown root:root /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
 chmod 755 /usr/lib64/mysql/plugin/jtel_udf_udpsend.so
 chcon system_u:object_r:lib_t:s0  /usr/lib64/mysql/plugin/jtel_udf_udpsend.so

Um die zusätzliche Funktion den SQL Prozeduren verfügbar zu machen, muss noch folgender Befehl ausgeführt werden (<password> mit den entsprechenden Passwort ersetzen):


Configuration

Pour configurer le plugin, les commandes suivantes sont exécutées :

Status
colourRed
titleMot de passe de précaution

Translations Ignore


Code Block
languagebash
Translations Ignore
Code Block
languagebash
titleRegister the UDP send command
mysql -u root -p<password> -v -e"DROP FUNCTION IF EXISTS udpsend"
mysql -u root -p<password> -v -e"CREATE FUNCTION udpsend RETURNS STRING SONAME 'jtel_udf_udpsend.so'"
Note
titleWichtiger Hinweis

Die oben aufgelisteten SQL Befehle müssen auf einem Datenbankserver ausgeführt werden, bevor er Teil eines Replikationsverbundes wird. Soll das UDP Plugin auf bestehenden DATA-Server nachgerüstet werden, so muss eine andere Vorgehensweise gewählt werden:

  1. Das Modul muss auf allen Server des Verbunden (Sowohl Master als auch Slaves) in das Plugin-Verzeichnis kopiert werden (Siehe Code Block "UDP Send Plugin installieren").
  2. Die Registrierung des Plugins dar nur auf dem Master Server erfolgen. Da der Befehl durch Replikation auch auf den Slaves ausgeführt wird, ist es nicht erforderlich, den Befehl auch dort auszuführen.

ACHTUNG: Wird der Befehl ausgeführt ohne dass das UDP Plugin auf allen Servern des Verbundes vorhanden ist, verursacht dies einen Abbruch der Replikation, der nur durch einen händischen Eingriff repariert werden kann.

Anpassung my.cnf auf RAM des Servers

Damit der Server den zur Verfügung gestellten RAM vollständig nutzt, muss eine Konfiguration angepasst werden mit vi.

DROP FUNCTION IF EXISTS udpsend" mysql -u root -p<password> -v -e"CREATE FUNCTION udpsend RETURNS STRING SONAME 'jtel_udf_udpsend.so'"




Note
titleImportant

La configuration du plugin UDP doit être effectuée avant que le serveur ne soit inclus dans toute réplication entre serveurs, sinon la réplication échouera. Le plugin UDP doit être installé sur tous les serveurs.

Configurer la mémoire vive du serveur

Afin que le serveur utilise au mieux la mémoire vive disponible, le fichier de configuration /etc/my.cnf.d/jtel-enhanced-8.cnf doit être adapté.

Le réglage innodb_buffer_pool_size devrait être adaptée à environ 3/4 de la mémoire vive disponible, mais il devrait rester au moins 3-4 Go pour l'utilisation d'autres processus. Pour les serveurs disposant de 4 Go de RAM, cela ne devrait pas dépasser 2 Go. Diese Einstellung sollte ca. 3/4 des RAMs des Servers entsprechen, wobei 3-4 GB für mysql und andere Prozesse übrig bleiben sollten.

Translations Ignore


Code Block
languagebash
titlevi /etc/my.cnf.d/jtel-enhanced.cnf
# For 4 GB RAM innodb_buffer_pool_size = 2048M # For 8 GB RAM
 innodb_buffer_pool_size = 5120M
  
 # For 12 GB RAM
 innodb_buffer_pool_size = 8192M
  
 # For 16 GB RAM
 innodb_buffer_pool_size = 12288M


 ...
 # From 16 GB simply take 3/4 of the RAM


Démarrer MySQL

Neustart

Enfin, le serveur MySQL est redémarré pour la dernière fois, afin de charger tous les paramètres de configuration.Als letztes wird der MySQL Server neu gestartet, damit alle Einstellungen übernommen werden:

Translations Ignore


Code Block
languagebash
titleRestart the Redémarrer le serveur MySQL server
servicesystemctl restart mysqld restart.service