Compare commits

..

39 Commits

Author SHA1 Message Date
5e9eae5c13 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-02-15 11:07:15 +01:00
d84efbfaa4 retour au sauvegarde Bareos pour incompatibilité Xtrabackup, personnalisation des sauvegardes pour MaraiDB 2019-02-15 11:04:05 +01:00
4dd7e78f7c MAJ du README pour la 2.7.0 2019-02-14 10:04:09 +01:00
b4cccc5e12 Merge branch 'master' into dist/eole/2.6.2/master 2018-09-03 14:02:59 +02:00
7a99473352 Merge branch 'master' of https://forge.cadoles.com/Cadoles/eole-mariadb 2018-09-03 14:01:45 +02:00
29aca663dd Ajout de la possibilité de spécifier "innodb_lock_wait_timeout" 2018-09-03 12:05:07 +02:00
f832feeae3 ajout d'une condition pour pouvoir activer ou non la sauveagrde de mariadb 2018-06-22 16:44:19 +02:00
196a4b41f2 Prise en charge du dump des bases mariadb par schedule et bareos + copier des dump sur le partage nfs 2018-06-22 16:33:59 +02:00
cb7954fb66 Make cache query really disabled 2018-06-21 18:32:58 +02:00
68eaa03db2 Merge branch 'master' into dist/eole/2.6.2/master 2018-06-21 15:59:22 +02:00
24552b6ccc Adding tunning options for InnoDBLogBufferSize and InnoDBLogFileSize 2018-06-21 15:57:17 +02:00
5c7bbbde79 Merge branch 'master' into dist/eole/2.6.2/master 2018-06-21 15:28:02 +02:00
e80180bd04 Fixing double definition of dbWaitTimeout 2018-06-21 15:27:37 +02:00
ed910e72ee Merge branch 'master' into dist/eole/2.6.2/master 2018-06-21 13:46:21 +02:00
de695a0aff Adding tunning options for wait_timeout and interactive_timeout 2018-06-21 13:32:37 +02:00
142d73afad Merge branch 'master' into dist/eole/2.6.2/master 2018-06-21 11:04:20 +02:00
afa791cd21 Fixing typo in template 2018-06-21 11:04:14 +02:00
08d7ed927c Merge branch 'master' into dist/eole/2.6.2/master 2018-06-21 10:48:13 +02:00
ff2d131d63 Adding tunning variable dbMaxAllowedPacket 2018-06-21 10:47:27 +02:00
f375a121ae Merge branch 'master' into dist/eole/2.6.2/master 2018-05-28 16:14:08 +02:00
8f5aaff1de Manage multiple clients 2018-05-28 16:13:45 +02:00
4709c28223 Merge branch 'master' into dist/eole/2.6.2/master 2018-05-22 16:39:58 +02:00
b385b1e091 Fixing Bad variable name 2018-05-22 16:39:20 +02:00
98bfcc1416 Merge branch 'master' into dist/eole/2.6.2/master 2018-05-17 10:17:21 +02:00
7b3f1905d9 Removing problematic condition 2018-05-17 10:15:50 +02:00
ae696769ed Merge branch 'master' into dist/eole/2.6.2/master 2018-05-17 10:14:19 +02:00
a6ebd2748f Cleaning dico 2018-05-17 10:14:01 +02:00
6780b527d8 Fixing family name 2018-05-17 10:10:47 +02:00
93fa1bde8f Updating documentation 2018-05-11 08:49:14 +02:00
534e04671a Merge branch 'master' into dist/eole/2.6.2/master 2018-05-09 18:32:49 +02:00
3674f62d19 Fixing variable name in template 2018-05-09 18:32:26 +02:00
61383bb17a Merge branch 'master' into dist/eole/2.6.2/master 2018-05-09 17:07:35 +02:00
b0f9914eac Fixing init script 2018-05-09 17:07:19 +02:00
5aa0262331 Merge branch 'master' into dist/eole/2.6.2/master 2018-05-09 17:01:35 +02:00
3102fb5fdb Stoping service before bootstrap 2018-05-09 17:01:22 +02:00
b550833a25 Merge branch 'master' into dist/eole/2.6.2/master 2018-05-09 15:54:59 +02:00
35e941bf96 Fixing bad command name 2018-05-09 15:54:38 +02:00
517625cf66 Merge branch 'master' into dist/eole/2.6.2/master 2018-05-09 15:41:23 +02:00
c11f50f009 No need to start service here 2018-05-09 15:41:04 +02:00
10 changed files with 394 additions and 197 deletions

103
README.md
View File

@ -1,12 +1,113 @@
# eole-mariadb
Paquet porté pour la 2.7.0. Les tests n'ont été réalisé que sur un Eolebase.
La version utilisé est mariadb 10.3
Ajout de ce paquet sur une 2.7.0 :
## Add the Cadoles repository on all the nodes and the Leader
GenConfig [Mode Expert] -> Dépôts Tiers
* Libellé du dépôt : Cadoles dev
* Déclaration du dépôt : deb [ arch=all ] https://vulcain.cadoles.com 2.7.0-dev main
* Méthode de récupération de la clé publique du dépôt : URL de la clé
* URL de la clé : https://vulcain.cadoles.com/cadoles.gpg
## Add the MariaDB repository on all the nodes and the Leader
GenConfig (Mode Expert) -> Dépôt tiers :
* Libellé du dépôt : MariaDB
* Déclaration du dépôt : deb [ arch=amd64 ] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.3/ubuntu bionic main
* Méthode de récupération de la clé publique du dépôt : serveur de clés
* URL du serveur de clés : hkp://keyserver.ubuntu.com:80
* Empreinte de la clé : 0xF1656F24C74CD1D8
#######################################################################
Début des travaux pour l'utilisation de mariadb
dans Eole avec des fonctionalitées avancées du type
mise en clustter
# How-to for Eole 2.6.2 (using this repo dico and templates)
### FIXME
Start with 3 fresh eolebase 2.6.2 instancied.
One for the Clustter Leader, another for the cluster Node another for the Arbitrator, the arbitrator can be replaced by another node.
The order is very important, Never configure a Node before the Leader ! The Leader must be the first one.
## Add the Cadoles repository on all the nodes and the Leader
GenConfig [Mode Expert] -> Dépôts Tiers
* Libellé du dépôt : Cadoles dev
* Déclaration du dépôt : deb [ arch=all ] https://vulcain.cadoles.com 2.6.2-dev main
* Méthode de récupération de la clé publique du dépôt : URL de la clé
* URL de la clé : https://vulcain.cadoles.com/cadoles.gpg
## Add the MariaDB repository on all the nodes and the Leader
GenConfig (Mode Expert) -> Dépôt tiers :
* Libellé du dépôt : MariaDB
* Déclaration du dépôt : deb [arch=amd64] http://mariadb.mirrors.ovh.net/MariaDB/repo/10.2/ubuntu xenial main
* Méthode de récupération de la clé publique du dépôt : serveur de clés
* URL du serveur de clés : hkp://keyserver.ubuntu.com:80
* Empreinte de la clé : 0xF1656F24C74CD1D8
## Configure the Leader :
GenConfig (Mode Normal) -> Services :
* Activer le serveur de base de données MariaDB : oui
GenConfig (Mode Normal) -> Database :
* Activer la mise en grappe MariaDB Galera ? : oui
GenConfig (Mode Normal) -> Database cluster :
* Rôle dans la grappe : Leader
* Interface réseau dédiée à la grappe BDD : eth0
* Nom du noeud local : <THE NAME YOU WANT>
* Membre de la grappe BDD :
* Membre de la grappe BDD : <NAME OF THE LEADER>
* Adresse IP : <IP OF THE LEADER>
* Membre de la grappe BDD : <NAME OF THE ARBITRATOR OR NODE>
* Adresse IP : <IP OF THE NODE OR ARBITRATOR>
* *Nom de la grappe : <NAME OF THE CLUSTER>
## Reconfigure Leader !
Run reconfigure command !
## Configure the Nodes !
GenConfig (Mode Normal) -> Services :
* Activer le serveur de base de données MariaDB : oui
GenConfig (Mode Normal) -> Database :
* Activer la mise en grappe MariaDB Galera ? : oui
GenConfig (Mode Normal) -> Database cluster :
* Rôle dans la grappe : Node
* Interface réseau dédiée à la grappe BDD : eth0
* Nom du noeud local : <THE NAME YOU WANT>
* Membre de la grappe BDD :
* Membre de la grappe BDD : <NAME OF THE LEADER>
* Adresse IP : <IP OF THE LEADER>
* Membre de la grappe BDD : <NAME OF THE ARBITRATOR OR NODE>
* Adresse IP : <IP OF THE NODE OR ARBITRATOR>
* *Nom de la grappe : <NAME OF THE CLUSTER>
## Reconfigure the Nodes !
Run reconfigure command on each node one by one.
## Configure the Arbitrator if needed !
If you have only 2 nodes you need to setup an arbitrator, for this follow the tutorial in the eole-galera-arbitrator project page https://forge.cadoles.com/Cadoles/eole-galera-arbitrator
# How-to for Eole 2.6.2 (From scratch)

View File

@ -1,211 +1,221 @@
<creole>
<files>
<file filelist='dbMariaDB' name='/etc/mysql/conf.d/mariadb.cnf' rm='True' mkdir='True'/>
<file filelist='dbCluster' name='/etc/mysql/conf.d/galera.cnf' rm='True' mkdir='True'/>
<files>
<file filelist='dbMariaDB' name='/etc/mysql/conf.d/mariadb.cnf' rm='True' mkdir='True'/>
<file filelist='dbCluster' name='/etc/mysql/conf.d/galera.cnf' rm='True' mkdir='True'/>
<file filelist='dbTunning' name='/etc/mysql/conf.d/tunning.cnf' rm='True' mkdir='True'/>
<service servicelist='bdd'>mariadb</service>
<service_access service='mariadb'>
<port service_accesslist='mariadb' protocol='tcp'>3306</port>
<file filelist='dbTunning' name='/etc/mysql/conf.d/tunning.cnf' rm='True' mkdir='True'/>
<service servicelist='bdd'>mariadb</service>
<service_access service='mariadb'>
<port service_accesslist='mariadb' protocol='tcp'>3306</port>
<tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper>
</service_access>
<service_access service='galera'>
<port service_accesslist='dbCluster' protocol='tcp'>4444</port>
<port service_accesslist='dbCluster' protocol='tcp'>4567</port>
<port service_accesslist='dbCluster' protocol='tcp'>4568</port>
<port service_accesslist='dbCluster' protocol='udp'>4567</port>
</service_access>
<service_access service='galera'>
<port service_accesslist='dbCluster' protocol='tcp'>4444</port>
<port service_accesslist='dbCluster' protocol='tcp'>4567</port>
<port service_accesslist='dbCluster' protocol='tcp'>4568</port>
<port service_accesslist='dbCluster' protocol='udp'>4567</port>
<tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper>
</service_access>
</service_access>
<service_restriction service='mariadb'>
<service_restriction service='mariadb'>
<ip interface='ifMariaDBLimit' interface_type="SymLinkOption" netmask='maskMariaDBLimit' netmask_type='SymLinkOption' ip_type='SymLinkOption'>ipMariaDBLimit</ip>
</service_restriction>
<service_restriction service='galera'>
<service_restriction service='galera'>
<ip interface='ifDBCluster' interface_type="SymLinkOption" netmask='255.255.255.255' ip_type='SymLinkOption'>dbClusterMemberIP</ip>
</service_restriction>
</files>
<variables>
<family name="Services">
</files>
<variables>
<family name="Services">
<variable name="dbEnable" type='oui/non' description='Activer le serveur de base de données MariaDB'>
<value>non</value>
</variable>
</family>
<family name="DataBase">
<variable name='dbEnableCluster' type='oui/non' description="Activer la mise en grappe MariaDB Galera ?">
<value>non</value>
</variable>
<variable name='ipMariaDBLimit' type='network' description="Adresse IP réseau autorisée pour les connexions distantes au serveur MySQL" multi='True' mandatory='True'/>
<variable name='maskMariaDBLimit' type='netmask' description="Masque du sous réseau pour les connexions distantes au serveur MySQL" mandatory='True'/>
<variable name='ifMariaDBLimit' type='string' description="Interface pour les connexions distantes au serveur MySQL" mandatory='True'>
<value>auto</value>
<variable name="dbEnableBackup" type='oui/non' description='Activer la sauvegarde sur le serveur de base de données MariaDB'>
<value>non</value>
</variable>
</family>
<family name="Database">
<variable name='dbEnableCluster' type='oui/non' description="Activer la mise en grappe MariaDB Galera ?">
<value>non</value>
</variable>
<variable name='ipMariaDBLimit' type='network' description="Adresse IP réseau autorisée pour les connexions distantes au serveur MySQL" multi='True' mandatory='True'/>
<variable name='maskMariaDBLimit' type='netmask' description="Masque du sous réseau pour les connexions distantes au serveur MySQL" mandatory='True'/>
<variable name='ifMariaDBLimit' type='string' description="Interface pour les connexions distantes au serveur MySQL" mandatory='True'>
<value>auto</value>
</variable>
<variable name="dbCreateFixAdmin" type='oui/non' description="Créer des comptes admin MySQL avec un mot de passe fixe"/>
<variable name="accName" type='string' description="Nom du compte" multi="True"/>
<variable name="accLimits" type='string' description="Limiter les accès des comptes">
<value>Default</value>
</variable>
<variable name="accLimitTarget" type="string" description="Restriction d'accès à ces IP/noms d'hôtes (liste séparateur séparateur ',')" />
<variable name="dbCreateFixAdmin" type='oui/non' description="Créer des comptes admin MySQL avec un mot de passe fixe"/>
<variable name="accName" type='string' description="Nom du compte" multi="True"/>
<variable name="accLimits" type='string' description="Limiter les accès des comptes">
<value>Default</value>
</variable>
<variable name="accLimitTarget" type="string" description="Restriction d'accès à ces IP/noms d'hôtes (liste séparateur séparateur ',')" />
<variable name="dbClusterGcacheSizeMb" type="number" description="FIXME Gcachesize">
<value>128</value>
</variable>
</family>
<variable name="dbClusterGcacheSizeMb" type="number" description="FIXME Gcachesize">
<value>128</value>
</variable>
</family>
<!-- Tunning -->
<family name="DataBase Tunning" mode="expert">
<variable name="dbInnoDBBufferPoolPercentage" type="number" description="Pourcentage de mémoire à dédier à MariaDB">
<value>20</value>
</variable>
<variable name="dbMaxConnections" type="number" description="Nombre de connection maximum pour le serveur de bases de données (max_connections)">
<value>100</value>
</variable>
<variable name="dbThreadCacheSize" type="number" description="Nombre de threads mis en cache par le serveur MariaDB">
<value>16</value>
</variable>
<variable name="dbCacheQueryEnable" type="oui/non" description="Activer la mise en cache des requêtes">
<value>non</value>
</variable>
<variable name="dbQueryCacheLimit" type="string" description="Taille maximum des résultats de requêtes à mettre en cache">
<value>900K</value>
</variable>
<variable name="dbQueryCacheMinRestUnit" type="string" description="Taille des blocks du cache des requêtes">
<value>2K</value>
</variable>
<variable name="dbQueryCacheSize" type="string" description="Taille maximum du cache des requêtes">
<value>80M</value>
</variable>
<variable name="dbTmpTableSize" type="string" description="Taille maximum des tables internes stockées en mémoire">
<value>64M</value>
</variable>
<variable name="dbEnableSlowQueryLogs" type="oui/non" description="Journaliser les requêtes lentes (Slow Query)">
<value>non</value>
</variable>
<variable name="dbSlowQueryLogFile" type="string" description="Fichier de journalisation des requêtes lentes">
<value>/var/log/mysql/slow-query.log</value>
</variable>
<variable name="dbSlowQueryLogTime" type="number" description="Durée à partir de laquelle une requête est considérée comme lente (en secondes)">
<value>1</value>
</variable>
<variable name="dbWaitTimeout" type="number" description="Durée maximum d'inactivité d'une session (en secondes)">
<value>20</value>
</variable>
<variable name="dbAutoOptimizeAndRepare" type="oui/non" description="Activer l'autoréparation et optimisation de toutes les bases de données">
<value>non</value>
</variable>
</family>
<!-- Tunning -->
<family name="Database Tunning" mode="expert">
<variable name="dbInnoDBBufferPoolPercentage" type="number" description="Pourcentage de mémoire à dédier à MariaDB">
<value>20</value>
</variable>
<variable name="dbInnoDBLogBufferSize" type='number' description="Taille du tampon utilisé pour écrire les fichiers de transaction innodb sur le disque (en Mo)">
<value>8</value>
</variable>
<variable name='dbInnoDBLogFileSize' type='number' description="Taille des fichiers de transaction InnoDB">
<value>6</value>
</variable>
<variable name='dbInnoDBLockWaitTimeout' type='number' description="Nombre de millisecondes d'attente avant de fermer la connection en lock (innodb_lock_wait_timeout)">
<value>120</value>
</variable>
<variable name="dbMaxConnections" type="number" description="Nombre de connection maximum pour le serveur de bases de données (max_connections)">
<value>100</value>
</variable>
<variable name="dbThreadCacheSize" type="number" description="Nombre de threads mis en cache par le serveur MariaDB">
<value>16</value>
</variable>
<variable name="dbCacheQueryEnable" type="oui/non" description="Activer la mise en cache des requêtes">
<value>non</value>
</variable>
<variable name="dbQueryCacheLimit" type="string" description="Taille maximum des résultats de requêtes à mettre en cache">
<value>900K</value>
</variable>
<variable name="dbQueryCacheMinRestUnit" type="string" description="Taille des blocks du cache des requêtes">
<value>2K</value>
</variable>
<variable name="dbQueryCacheSize" type="string" description="Taille maximum du cache des requêtes">
<value>80M</value>
</variable>
<variable name="dbTmpTableSize" type="string" description="Taille maximum des tables internes stockées en mémoire">
<value>64M</value>
</variable>
<variable name="dbEnableSlowQueryLogs" type="oui/non" description="Journaliser les requêtes lentes (Slow Query)">
<value>non</value>
</variable>
<variable name="dbSlowQueryLogFile" type="string" description="Fichier de journalisation des requêtes lentes">
<value>/var/log/mysql/slow-query.log</value>
</variable>
<variable name="dbSlowQueryLogTime" type="number" description="Durée à partir de laquelle une requête est considérée comme lente (en secondes)">
<value>1</value>
</variable>
<variable name="dbWaitTimeout" type="number" description="Durée maximum d'inactivité d'une session (en secondes)">
<value>20</value>
</variable>
<variable name="dbAutoOptimizeAndRepare" type="oui/non" description="Activer l'autoréparation et optimisation de toutes les bases de données">
<value>non</value>
</variable>
<variable name="dbMaxAllowedPacket" type='number' description="Taille maximum d'un paquet (en Mo)">
<value>32</value>
</variable>
<variable name='dbInteractiveTimeout' type='number' description="Nombre de secondes d'attente avant de fermer la connection en mode interactif">
<value>28800</value>
</variable>
</family>
<family name="Database Cluster">
<variable name='dbClusterPosition' type='string' description="Rôle dans la grappe" mandatory='True'/>
<variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD"/>
<!-- FIXME : Fill this variable with nom_machine -->
<variable name='nodeName' type='string' description="Nom du noeud local"/>
<family name="Database Cluster">
<variable name='dbClusterPosition' type='string' description="Rôle dans la grappe" mandatory='True'/>
<variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD"/>
<!-- FIXME : Fill this variable with nom_machine -->
<variable name='nodeName' type='string' description="Nom du noeud local"/>
<variable name='dbClusterMember' type='string' description="Membre de la grappe BDD" multi='True'/>
<variable name='dbClusterMemberIP' type='ip' description="Adresse IP"/>
<!-- Expert Variables -->
<variable name='dbClusterName' type='string' description='Nom de la grappe'>
<value>galera_cluster</value>
</variable>
<variable name='dbBinLogFormat' type='string' mode='expert' description='Format du binlog'>
<value>ROW</value>
</variable>
<variable name='dbDefaultStorage' type='string' mode='expert' description='Default storage engine'>
<value>innodb</value>
</variable>
<variable name='dbSSTMethod' type='string' mode='expert' description='Méthode SST'>
<value>rsync</value>
</variable>
<variable name='dbClusterGcacheSize' type='number' mode='expert' description="Write-set Cache Size (gcache.size)">
<value>128</value>
</variable>
<!-- End -->
</family>
<separators>
<separator name='dbCreateFixAdmin'>Comptes d'administration supplémentaires</separator>
</separators>
</variables>
<constraints>
<check name='valid_enum' target='ifDBCluster'>
<param>['eth0', 'eth1', 'eth2', 'eth3', 'eth4']</param>
</check>
<variable name='dbClusterMember' type='string' description="Membre de la grappe BDD" multi='True'/>
<variable name='dbClusterMemberIP' type='ip' description="Adresse IP"/>
<!-- Expert Variables -->
<variable name='dbClusterName' type='string' description='Nom de la grappe'>
<value>galera_cluster</value>
</variable>
<variable name='dbBinLogFormat' type='string' mode='expert' description='Format du binlog'>
<value>ROW</value>
</variable>
<variable name='dbDefaultStorage' type='string' mode='expert' description='Default storage engine'>
<value>innodb</value>
</variable>
<variable name='dbSSTMethod' type='string' mode='expert' description='Méthode SST'>
<value>rsync</value>
</variable>
<variable name='dbClusterGcacheSize' type='number' mode='expert' description="Write-set Cache Size (gcache.size)">
<value>128</value>
</variable>
<!-- End -->
</family>
<separators>
<separator name='dbCreateFixAdmin'>Comptes d'administration supplémentaires</separator>
</separators>
</variables>
<constraints>
<check name='valid_enum' target='ifDBCluster'>
<param>['eth0', 'eth1', 'eth2', 'eth3', 'eth4']</param>
</check>
<group master='dbClusterMember'>
<slave>dbClusterMemberIP</slave>
</group>
<group master='dbClusterMember'>
<slave>dbClusterMemberIP</slave>
</group>
<check name='valid_enum' target='accLimits'>
<param>['Default','Custom']</param>
</check>
<check name='valid_enum' target='accLimits'>
<param>['Default','Custom']</param>
</check>
<check name='valid_enum' target='dbClusterPosition'>
<param>['Leader','Node']</param>
</check>
<check name='valid_enum' target='dbClusterPosition'>
<param>['Leader','Node']</param>
</check>
<group master='accName'>
<slave>accLimits</slave>
<slave>accLimitTarget</slave>
</group>
<group master='accName'>
<slave>accLimits</slave>
<slave>accLimitTarget</slave>
</group>
<group master='ipMariaDBLimit'>
<slave>maskMariaDBLimit</slave>
<slave>ifMariaDBLimit</slave>
</group>
<group master='ipMariaDBLimit'>
<slave>maskMariaDBLimit</slave>
<slave>ifMariaDBLimit</slave>
</group>
<fill name='calc_multi_condition' target='accLimitTarget'>
<param>Default</param>
<param type='eole' name='condition_1'>accLimits</param>
<param name='default_match'>Default</param>
<param name='mismatch'>""</param>
</fill>
<fill name='calc_multi_condition' target='accLimitTarget'>
<param>Default</param>
<param type='eole' name='condition_1'>accLimits</param>
<param name='default_match'>Default</param>
<param name='mismatch'>""</param>
</fill>
<condition name='disabled_if_in' source="dbEnable">
<param>non</param>
<target type='family'>Database</target>
<target type='family'>Database Cluster</target>
<target type='family'>DataBase Tunning</target>
<target type='service_accesslist'>dbCluster</target>
<target type='filelist'>dbTunning</target>
<target type='filelist'>dbMariaDB</target>
<target type='filelist'>dbCluster</target>
<target type='servicelist'>bdd</target>
</condition>
<condition name='disabled_if_in' source="dbEnable">
<param>non</param>
<target type='family'>Database</target>
<target type='family'>Database Cluster</target>
<target type='family'>Database Tunning</target>
<target type='service_accesslist'>dbCluster</target>
<target type='filelist'>dbTunning</target>
<target type='filelist'>dbMariaDB</target>
<target type='filelist'>dbCluster</target>
<target type='servicelist'>bdd</target>
</condition>
<condition name='disabled_if_in' source="dbCreateFixAdmin">
<param>non</param>
<target type='variable'>accName</target>
<target type='variable'>accLimits</target>
<target type='variable'>accLimitTarget</target>
</condition>
<condition name='disabled_if_in' source="dbCreateFixAdmin">
<param>non</param>
<target type='variable'>accName</target>
<target type='variable'>accLimits</target>
<target type='variable'>accLimitTarget</target>
</condition>
<condition name='disabled_if_in' source="dbEnableCluster">
<param>non</param>
<target type='family'>Database Cluster</target>
<target type='service_accesslist'>dbCluster</target>
<target type='filelist'>dbCluster</target>
</condition>
<condition name='disabled_if_in' source="dbEnableCluster">
<param>non</param>
<target type='family'>Database Cluster</target>
<target type='service_accesslist'>dbCluster</target>
<target type='filelist'>dbCluster</target>
</condition>
<condition name='disabled_if_in' source="dbCacheQueryEnable">
<param>non</param>
<target type='variable'>dbQueryCacheLimit</target>
<target type='variable'>dbQueryCacheMinRestUnit</target>
<target type='variable'>dbQueryCacheSize</target>
</condition>
<condition name='disabled_if_in' source="dbCacheQueryEnable">
<param>non</param>
<target type='variable'>dbQueryCacheLimit</target>
<target type='variable'>dbQueryCacheMinRestUnit</target>
<target type='variable'>dbQueryCacheSize</target>
</condition>
<condition name='disabled_if_in' source="dbEnableSlowQueryLogs">
<param>non</param>
<target type='variable'>dbSlowQueryLogTime</target>
<target type='variable'>dbSlowQueryLogFile</target>
</condition>
<condition name='disabled_if_in' source="dbClusterPosition">
<param>Node</param>
<target type='variable'>dbCreateFixAdmin</target>
<target type='variable'>accName</target>
<target type='variable'>accLimits</target>
<target type='variable'>accLimitTarget</target>
</condition>
</constraints>
<help/>
<condition name='disabled_if_in' source="dbEnableSlowQueryLogs">
<param>non</param>
<target type='variable'>dbSlowQueryLogTime</target>
<target type='variable'>dbSlowQueryLogFile</target>
</condition>
</constraints>
<help/>
</creole>

View File

@ -1 +1,3 @@
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs
schedule_extra_DATA_DIR := $(DESTDIR)/usr/share/eole/creole/extra/schedule/
schedule_config_DATA_DIR := $(DESTDIR)/usr/share/eole/schedule/

View File

@ -20,12 +20,11 @@ then
sqlFile=$(mktemp -p /root)
password=$(pwgen -1 10)
/usr/share/eole/sbin/mariaPwd ${password}
/usr/share/eole/sbin/mariadbPwd ${password}
accounts=($(CreoleGet accName))
limits="$(CreoleGet accLimitTarget '')"
accLimits=(${limits// /})
index=0
previousUsers=($(awk -F ':' '{print $1}' ${readerfile} ))
@ -40,15 +39,22 @@ then
then
hostsList+=(${accLimits[${index}]//,/ })
else
ipAddr=($(CreoleGet ip_my_dist))
ipMask=($(CreoleGet mask_my_dist))
if [[ ${ipMask} == "255.255.255.255" ]]
then
hostsList+=("${ipAddr}")
else
hostsList+=("${ipAddr}/${ipMask}")
fi
ipAddr=($(CreoleGet ipMariaDBLimit))
ipMask=($(CreoleGet maskMariaDBLimit))
ix=0
for ip in ${ipAddr[@]}
do
if [[ ${ipMask[${ix}]} == "255.255.255.255" ]]
then
hostsList+=("${ip}")
else
hostsList+=("${ip}/${ipMask[${ix}]}")
fi
ix=$((ix+1))
done
fi
index=0
for hst in ${hostsList[@]}
do
SQL="DROP USER IF EXISTS '${user}'@'${hst}';"

View File

@ -9,7 +9,11 @@ if [[ ${db} == "oui" ]]
then
if [[ ${cluster} == "oui" ]]
then
[[ ${role} == "Leader" ]] && galera_new_cluster
if [[ ${role} == "Leader" ]]
then
service mariadb stop
galera_new_cluster
fi
fi
fi

View File

@ -4,7 +4,10 @@
# and secure MariaDB installation
#
INITDONE="/etc/eole/.galera"
[[ "$(CreoleGet dbEnable)" == "non" ]] && exit 0
[[ -e ${INITDONE} ]] && exit 0
ROLE=$(CreoleGet dbClusterPosition 'Leader')
SECURE_CMD="mysql_secure_installation"
@ -17,7 +20,7 @@ logfile="${logdir}/maria-init.log"
if [[ ${ROLE} == "Leader" ]]
then
service mariadb start
service mysql start
${passwd} ${PASSWORD}
# Run secure installation script
@ -30,7 +33,15 @@ y
y
y
__EOF__
service mariadb stop
if [[ ${?} -eq 0 ]]
then
service mysql stop
touch ${INITDONE}
exit ${?}
else
service mysql stop
exit ${?}
fi
else
exit 0
fi

View File

@ -0,0 +1,7 @@
# Configuration commune aux scripts schedule
# Configuration de base modifiée pour copier dans le partage nfs plutôt que /home
SAVDIR=/mnt/sauvegardes/
# pour que l'affichage de [ ok ] soit ok
export TERM='dumb'
umask 0077

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<variables>
<family name="mariadb" description="Exportation des bases de données MariaDB">
<variable name="description" type="string" hidden="True"><value>Exportation des bases MariaDB</value></variable>
<variable name="day" type="schedule" description="Périodicité d'exécution"><value>daily</value></variable>
<variable name="mode" type="schedulemod" hidden="True"><value>pre</value></variable>
</family>
</variables>
<constraints>
<fill name='calc_multi_condition' target='schedule.mariadb.day'>
<param>non</param>
<param type='eole' name='condition_1'>dbEnableBackup</param>
<param name='match'>none</param>
<param name='mismatch'>daily</param>
</fill>
</constraints>
</creole>

27
schedule_scripts/mariadb Normal file
View File

@ -0,0 +1,27 @@
#!/bin/bash
set -e
DESC="Exportation des bases MariaDB"
. /usr/share/eole/schedule/config.sh
MYSQLSAVDIR=$SAVDIR/sql
OPTION="--lock-tables"
rm -f $MYSQLSAVDIR/*.sql
mkdir -p $MYSQLSAVDIR
CMD="mysql --defaults-file=/etc/mysql/mariadbBackup.cnf -e 'show databases' | grep -v '^Database$'"
DATABASES=$(CreoleRun "$CMD" mysql)
for databasename in $DATABASES; do
case "$databasename" in
information_schema|performance_schema|bareos)
continue
;;
*)
CMD="mysqldump --defaults-file=/etc/mysql/mariadbBackup.cnf --databases $databasename --flush-privileges --create-options -Q -c $OPTION 2>/dev/null"
CreoleRun "$CMD" mysql > $MYSQLSAVDIR/$databasename.sql
;;
esac
done

View File

@ -3,18 +3,29 @@ innodb_file_per_table=1
skip-name-resolve
innodb_buffer_pool_size=%%getMemoryPercentage(%%getVar('dbInnoDBBufferPoolPercentage', 10))
innodb_log_buffer_size=%%{dbInnoDBLogBufferSize}M
innodb_log_file_size=%%{dbInnoDBLogFileSize}M
innodb_lock_wait_timeout=%%{dbInnoDBLockWaitTimeout}
max_connections=%%dbMaxConnections
thread_cache_size=%%dbThreadCacheSize
%if %%dbCacheQueryEnable == 'oui'
query_cache_type = 1
query_cache_limit = %%getVar('dbQueryCacheLimit')
query_cache_min_res_unit = %%getVar('dbQueryCacheMinResUint')
query_cache_min_res_unit = %%getVar('dbQueryCacheMinRestUnit')
query_cache_size = %%getVar('dbQueryCacheSize')
%else
query_cache_type = 0
query_cache_size = 0
%end if
tmp_table_size = %%dbTmpTableSize
max_heap_table_size = %%dbTmpTableSize
max_allowed_packet = %%{dbMaxAllowedPacket}M
wait_timeout = %%dbWaitTimeout
interactive_timeout = %%{dbInteractiveTimeout}
%if %%dbEnableSlowQueryLogs == "oui"
slow-query-log = 1
@ -22,5 +33,4 @@ slow-query-log-file = %%getVar('dbSlowQueryLogFile')
long_query_time = %%getVar('dbSlowQueryLogTime')
%end if
wait_timeout = %%dbWaitTimeout