...
| Sv translation | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Funktionelle Komponenten der RolleDie 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:
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 InstallationsschritteUnabhä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 DatenbereichesDatenbereich anbinden, wie auf der Seite Linking STORE (All Linux except STORE) beschrieben. Installation der SoftwareDas Einbinden der offiziellen MySQL Software Repositores und die Installation des MySQL-Servers erfolgt mit folgenden Befehlen: MySQL 8.x
MySQL 5.6
Beide VariantenDer MySQL Server Dienst wird mit folgendem Befehl in die Liste der automatisch startenden Dienste aufgenommen und gestartet.
Als nächstes müssen in der Firewall die Port-Freigaben für den MySQL Server Dienst eingetragen und persistent gespeichert werden:
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:
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
Die Datei MySQL 5.6
Die Datei Beide VariantenNun muss der MySQL Server neu gestartet werden:
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.xMySQL 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.
Anschließend wird folgende Befehlskette eingegeben um den weiteren User zu erstellen: ACHTUNG: <password> mit den entsprechenden Passwort ersetzen.
MySQL 5.6ACHTUNG: <password> mit den entsprechenden Passwort ersetzen.
Beide VariantenAls 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:
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):
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.
MySQL NeustartAls letztes wird der MySQL Server neu gestartet, damit alle Einstellungen übernommen werden:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Sv translation | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| Table of Contents | ||||
|---|---|---|---|---|
|
Composantes fonctionnelles du rôle
Le rôle de DONNÉES peut être réparti sur un ou plusieurs serveurs. Une installation avec un seul serveur DONNÉES n'est recommandée que pour les très petites installations. La division correspond aux éléments fonctionnels suivants :
Statistiques en temps réel
Du point de vue de l'installation, ces composants fonctionnels n'ont aucun effet car une version locale (synchronisée) complète de la base de données est stockée sur chaque serveur du réseau. La répartition des fonctions résulte davantage du point de vue des "consommateurs", dans lequel il est possible de configurer quel serveur est accessible pour quelles tâches. Dans le serveur d'application Web, par exemple, il est possible de spécifier séparément la connexion à la base de données pour les zones primaire, de rapport et en temps réel, de sorte qu'il est possible de répartir ces rôles entre différents serveurs.
Le seul aspect de l'installation qui est affecté par la distribution des fonctions est que si vous distribuez les fonctions à différents serveurs, vous devrez construire et configurer une installation de réplication MySQL appropriée. Cela signifie que la fonction "Primary" est forcée de s'exécuter sur un maître de réplication, tandis que toutes les autres fonctions peuvent s'exécuter sur des esclaves de réplication.
Un autre type de configuration très particulier est une configuration spéciale dans laquelle deux serveurs sont connectés dans une réplication maître-maître (qui à son tour peut être utilisée comme maître pour d'autres esclaves). Dans une telle configuration hautement disponible, un seul des maîtres est utilisé comme "primaire". L'autre servirait normalement de réserve passive du cluster HA. Cependant, il est conseillé d'utiliser cette ressource de manière plus judicieuse en demandant au maître passif d'effectuer soit la fonction "reporting", soit la fonction "statistiques". Les adresses IP liées à la fonction sont gérées par le responsable de l'HA. Une telle configuration a l'avantage d'offrir un haut degré de disponibilité sans trop de gaspillage de ressources.
Common installation steps
Indépendamment de la fonction qu'un serveur DONNÉES doit prendre en charge, les étapes d'installation suivantes doivent d'abord être effectuées à la fois sur le maître et l'esclave.
Relier le zones de données
Installation du logiciel
Pour inclure les dépôts officiels de logiciels MySQL et installer le serveur MySQL, utilisez les commandes suivantes :
MySQL 8.x
| Code Block | ||||
|---|---|---|---|---|
| ||||
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
| Code Block | ||||
|---|---|---|---|---|
| ||||
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm yum -y install mysql-community-server |
Les deux variantes
Le service MySQL Server est ajouté à la liste des services à démarrage automatique et démarré avec la commande suivante :
| Code Block | ||||
|---|---|---|---|---|
| ||||
chkconfig mysqld on service mysqld start |
Ensuite, les parts de port pour le service de serveur MySQL doivent être saisies et stockées de façon permanente dans le pare-feu :
| Code Block | ||||
|---|---|---|---|---|
| ||||
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload |
Pour simplifier la configuration du serveur MySQL, un répertoire est maintenant créé où les fichiers de configuration modulaire peuvent être stockés. Pour que ceux-ci puissent être chargés à partir du serveur MySQL, une entrée doit être faite dans le fichier de configuration principal. Pour ce faire, il faut entrer les commandes suivantes :
| Code Block | ||||
|---|---|---|---|---|
| ||||
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 |
Ces commandes créent le répertoire, ajoutent l'instruction de chargement des fichiers de configuration modulaire au fichier de configuration principal, créent une part de sécurité SELINUX pour le nouveau répertoire de configuration et génèrent les étiquettes de sécurité correspondantes.
Ensuite, un fichier de configuration modulaire avec quelques paramètres d'optimisation pertinents commentés est importé.
MySQL 8.x
| Code Block | ||||
|---|---|---|---|---|
| ||||
wget -P /etc/my.cnf.d http://cdn.jtel.de/downloads/configs/jtel-enhanced-8.cnf |
Le fichier/etc/mycnf.d/jtel-enhanced-8.cnf contient un certain nombre d'instructions de configuration bien commentées qui peuvent être utilisées pour optimiser la fonctionnalité du serveur MySQL. La plupart de ces instructions sont commentées. Si nécessaire, ces paramètres doivent être ajustés avec prudence. Cependant, les valeurs par défaut devraient être correctes pour la plupart des installations.
MySQL 5.6
| Code Block | ||||
|---|---|---|---|---|
| ||||
wget -P /etc/my.cnf.d http://cdn.jtel.de/downloads/configs/jtel-enhanced.cnf |
Le fichier/etc/mycnf.d/jtel-enhanced.cnf contient un certain nombre d'instructions de configuration bien commentées qui peuvent être utilisées pour optimiser la fonctionnalité du serveur MySQL. La plupart de ces instructions sont commentées. Si nécessaire, ces paramètres doivent être ajustés avec prudence. Cependant, les valeurs par défaut devraient être correctes pour la plupart des installations.
Les deux variantes
Maintenant, le serveur MySQL doit être redémarré :
| Code Block | ||||
|---|---|---|---|---|
| ||||
service mysqld restart |
Après le premier démarrage du serveur MySQL, les données d'accès pour l'utilisateur root doivent maintenant être définies.
Comme dans MySQL, un compte utilisateur ne se compose pas seulement d'un nom d'utilisateur mais aussi d'une adresse d'origine de la connexion, un autre utilisateur root doit être créé pour se connecter à partir de n'importe quelle adresse d'origine.
MySQL 8.x
MySQL 8.x stocke un mot de passe généré pour l'utilisateur root dans le fichier /var/log/mysqld.log
Ce mot de passe doit d'abord être extrait. Comme il contient souvent des caractères spéciaux qui ne peuvent pas être facilement saisis dans la ligne de commande, le premier ajustement est effectué en saisissant le mot de passe manuellement.
| Code Block | ||||
|---|---|---|---|---|
| ||||
mysqladmin -u root -p password '<password>' |
Ensuite, la chaîne de commande suivante est saisie pour créer l'utilisateur supplémentaire :
ATTENTION : remplacer <password> par le mot de passe correspondant.
| Code Block | ||||
|---|---|---|---|---|
| ||||
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
ATTENTION : remplacer <password> par le mot de passe correspondant.
| Code Block | ||||
|---|---|---|---|---|
| ||||
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" |
Les deux variantes
Ensuite, un module de plugin supplémentaire est ajouté au serveur MySQL. Ce module est nécessaire à partir de la version 3.06 du logiciel jtel pour la communication avec d'autres composants logiciels. Pour les nouvelles installations, il doit également être installé s'il est prévu d'installer d'anciennes révisions du logiciel, afin que rien n'entrave une mise à jour ultérieure. Pour ce faire, il faut utiliser les commandes suivantes :
| Code Block | ||||
|---|---|---|---|---|
| ||||
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 |
| Code Block | ||||
|---|---|---|---|---|
| ||||
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 |
Pour mettre la fonction supplémentaire à la disposition des procédures SQL, la commande suivante doit être exécutée (remplacer <password> par le mot de passe correspondant) :
| Code Block | ||||
|---|---|---|---|---|
| ||||
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 | ||
|---|---|---|
| ||
Les commandes SQL énumérées ci-dessus doivent être exécutées sur un serveur de base de données avant qu'elle fait partie d'un groupe de réplication. Si le plugin UDP doit être installé ultérieurement sur des serveurs de données existants, une procédure différente doit être choisie :
ATTENTION: Si la commande est exécutée sansque le plugin UDP soit présent sur tous les serveurs du réseau, la réplication est interrompue et ne peut être réparée que par une intervention manuelle. |
Adaptation de mon .cnf à la RAM du serveur
Pour que le serveur puisse utiliser pleinement la mémoire vive fournie, une configuration doit être ajustée avec vi.
Ce réglage devrait représenter environ 3/4 de la mémoire vive du serveur, mais laisse 3-4 Go pour mysql et d'autres processus.
| Code Block | ||||
|---|---|---|---|---|
| ||||
# 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 |
Redémarrer MYSQL
Enfin, le serveur MySQL est redémarré afin que tous les paramètres soient appliqués :
| Code Block | ||||
|---|---|---|---|---|
| ||||
service mysqld restart |