Compare commits

..

1 Commits

Author SHA1 Message Date
Philippe Caseiro 6d4b75c679 Adding Debian packaging directory 2018-04-12 09:30:13 +02:00
21 changed files with 267 additions and 530 deletions

View File

@ -4,8 +4,8 @@
SOURCE=eole-mariadb
VERSION=0.0.1
EOLE_VERSION=2.7
EOLE_RELEASE=2.7.1
EOLE_VERSION=2.6
EOLE_RELEASE=2.6.2
PKGAPPS=non
#FLASK_MODULE=<APPLICATION>

129
README.md
View File

@ -1,139 +1,12 @@
# eole-mariadb
Paquet porté pour la 2.7.1. 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.1 :
## 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.1-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
#######################################################################
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)
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
### FIXME
# How-to for Eole 2.6.2 (From scratch)

View File

@ -6,8 +6,8 @@ def getMemoryPercentage(percent):
percent = int(percent)
totalMemory = os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')
memoryToUse = (totalMemory*percent)/100
memoryMb = int(memoryToUse/(1024.**2))
return "{0}M".format(memoryMb)
memoryMb = memoryToUse/(1024.**2)
return "{0}M".format(int(memoryMb))
except:
return "Error during memory percentage calculation"

1
debian/compat vendored Normal file
View File

@ -0,0 +1 @@
9

18
debian/control vendored Normal file
View File

@ -0,0 +1,18 @@
Source: eole-mariadb
Section: web
Priority: optional
Maintainer: Cadoles <eole@ac-dijon.fr>
Build-Depends: debhelper (>= 9)
Standards-Version: 3.9.3
Homepage: https://forge.cadoles.com/Cadoles/eole-mariadb
Vcs-Git: https://forge.cadoles.com/Cadoles/eole-mariadb.git
Vcs-Browser: https://forge.cadoles.com/Cadoles/eole-mariadb
Package: eole-mariadb
Architecture: all
Depends: ${misc:Depends}, mariadb-server
Conflicts: eole-mysql
Provides: eole-mysql
Description: Dictionnaires et templates pour la configuration d'un serveur MariaDB, testée uniquement avec eolebase
.
Pour toute information complémentaire, veuillez vous rendre sur la forge Cadoles.

44
debian/copyright vendored Normal file
View File

@ -0,0 +1,44 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: {PROJECT}
Source: {URL}
Files: *
Copyright: YEAR {UPSTREAM} {AUTHOR} <{MAIL}>
License: {UPSTREAM LICENSE}
Files: debian/*
Copyright: 2012 Équipe EOLE <eole@ac-dijon.fr>
License: CeCILL-2
License: {UPSTREAM LICENSE}
{TEXT OF THE LICENSE}
License: CeCILL-2
This software is governed by the CeCILL-2 license under French law and
abiding by the rules of distribution of free software. You can use,
modify and or redistribute the software under the terms of the CeCILL-2
license as circulated by CEA, CNRS and INRIA at the following URL
"http://www.cecill.info";.
.
As a counterpart to the access to the source code and rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty and the software's author, the holder of the
economic rights, and the successive licensors have only limited
liability.
.
In this respect, the user's attention is drawn to the risks associated
with loading, using, modifying and/or developing or reproducing the
software by the user in light of its specific status of free software,
that may mean that it is complicated to manipulate, and that also
therefore means that it is reserved for developers and experienced
professionals having in-depth computer knowledge. Users are therefore
encouraged to load and test the software's suitability as regards their
requirements in conditions enabling the security of their systems and/or
data to be ensured and, more generally, to use and operate it in the
same conditions as regards security.
.
The fact that you are presently reading this means that you have had
knowledge of the CeCILL-2 license and that you accept its terms.
.
On Eole systems, the complete text of the CeCILL-2 License can be found
in '/usr/share/common-licenses/CeCILL-2-en'.

3
debian/gbp.conf vendored Normal file
View File

@ -0,0 +1,3 @@
# Set per distribution debian tag
[DEFAULT]
debian-tag = debian/eole/%(version)s

8
debian/rules vendored Executable file
View File

@ -0,0 +1,8 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
%:
dh $@

BIN
debian/source/.format.un~ vendored Normal file

Binary file not shown.

1
debian/source/format vendored Normal file
View File

@ -0,0 +1 @@
3.0 (native)

View File

@ -1,232 +1,191 @@
<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'/>
<file filelist='dbTunning' name='/etc/mysql/conf.d/tunning.cnf' rm='True' mkdir='True'/>
<files>
<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_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>
<tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper>
</service_access>
<service servicelist='bdd'>mariadb</service>
<service_access service='mariadb'>
<port protocol='tcp'>3306</port>
<tcpwrapper>mariadb</tcpwrapper>
</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_access service='galera'>
<port service_accesslist='dbCluster' protocol='tcp'>3306</port>
<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_restriction service='galera'>
<ip interface='ifDBCluster' interface_type="SymLinkOption" netmask='255.255.255.255' ip_type='SymLinkOption'>dbClusterMember</ip>
<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>oui</value>
</variable>
<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="MariaDB" icon='mysql-alt'>
<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>
</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="create_db" type='oui/non' description="Créer des bases de données">
<value>non</value>
</variable>
</family>
<family name="MariaDB Databases">
<variable name="db_name" type='string' description='Nom de la base de donnée' multi="True"/>
<variable name="db_admin_user" type='string' description="Nom de l'utilisateur gestionnaire de la base de données"/>
</family>
<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 ',')" />
<!-- Tunning -->
<family name="MariaDB Tunning" mode="expert" icon='mysql-alt'>
<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>
<variable name="dbClusterGcacheSizeMb" type="number" description="FIXME Gcachesize">
<value>128</value>
</variable>
</family>
<family name="Grappe MariaDB" icon='mysql-alt'>
<variable name='dbClusterPosition' type='string' description="Rôle dans la grappe" mandatory='True'/>
<variable name='dbClusterName' type='string' description='Nom de la grappe'>
<value>galera_cluster</value>
</variable>
<variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD" mandatory='True'/>
<variable name='dbClusterMember' type='domain' description="Nom de domaine des membres de la grappe" multi="True" mandatory='True'/>
<variable name="dbClusterMemberIndex" description="Index du serveur dans la liste des membres de la grappe" type="number" mandatory="True"/>
<!-- Expert Variables -->
<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='dbClusterGcacheSizeMb' 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>
<separator name='create_db'>Ajouter des bases de données</separator>
</separators>
</variables>
<constraints>
<check name="valid_ipnetmask" target="maskMariaDBLimit" level="warning">
<param type='eole'>ipMariaDBLimit</param>
</check>
<!-- 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>
<check name='valid_enum' target='dbBinLogFormat'>
<param>['ROW', 'STATEMENT', 'MIXED', 'NONE']</param>
</check>
<check name='valid_enum' target='ifDBCluster'>
<param>['eth0', 'eth1', 'eth2', 'eth3', 'eth4']</param>
</check>
<family name="Database Cluster">
<variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD"/>
<check name='valid_enum' target='accLimits'>
<param>['Default','Custom']</param>
</check>
<!-- FIXME : Fill this variable with nom_machine -->
<variable name='nodeName' type='string' description="Nom du noeud local"/>
<check name='valid_enum' target='dbClusterPosition'>
<param>['Leader','Node']</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='accName'>
<slave>accLimits</slave>
<slave>accLimitTarget</slave>
</group>
<group master='dbClusterMember'>
<slave>dbClusterMemberIP</slave>
</group>
<group master='ipMariaDBLimit'>
<slave>maskMariaDBLimit</slave>
<slave>ifMariaDBLimit</slave>
</group>
<check name='valid_enum' target='accLimits'>
<param>['Default','Custom']</param>
</check>
<group master='db_name'>
<slave>db_admin_user</slave>
</group>
<group master='accName'>
<slave>accLimits</slave>
<slave>accLimitTarget</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>
<group master='ipMariaDBLimit'>
<slave>maskMariaDBLimit</slave>
<slave>ifMariaDBLimit</slave>
</group>
<condition name='disabled_if_in' source="dbEnable">
<param>non</param>
<target type='family'>MariaDB</target>
<!--target type='family'>Grappe MariaDB</target-->
<target type='family'>MariaDB Tunning</target>
<target type='filelist'>dbTunning</target>
<target type='filelist'>dbMariaDB</target>
<!--target type='filelist'>dbCluster</target-->
<target type='servicelist'>bdd</target>
</condition>
<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='create_db'>
<param>non</param>
<target type='family'>MariaDB Databases</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'>Grappe MariaDB</target>
<target type='service_accesslist'>dbCluster</target>
<target type='filelist'>dbCluster</target>
</condition>
<condition name='disabled_if_in' source="dbEnable">
<param>non</param>
<target type='family'>Database Cluster</target>
<target type='family'>Database</target>
<target type='service_accesslist'>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>
</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,3 +1 @@
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/
creolefuncs_DATA_DIR := $(DESTDIR)/usr/share/creole/funcs

View File

@ -1,11 +0,0 @@
#!/bin/bash
set -e
if [[ "$1" == "instance" ]] && [[ "$(CreoleGet dbEnable)" == "oui" ]] && [[ "$(CreoleGet dbEnableCluster)" == "oui" ]] && [[ "$(CreoleGet dbClusterPosition)" == "Leader" ]]
then
service mariadb stop
galera_new_cluster
fi
exit 0

View File

@ -2,12 +2,6 @@
todo=$(CreoleGet dbCreateFixAdmin 'non')
autoRepair=$(CreoleGet dbAutoOptimizeAndRepare 'non')
role=$(CreoleGet dbClusterPosition 'Leader')
if [[ ${role} == 'Node' ]]
then
exit 0
fi
if [[ ${todo} != 'non' ]]
then
@ -19,17 +13,13 @@ then
tempFile=$(mktemp -p /root)
sqlFile=$(mktemp -p /root)
password=$(pwgen -1 10)
/usr/share/eole/sbin/mariadbPwd ${password}
accounts=($(CreoleGet accName))
limits="$(CreoleGet accLimitTarget '')"
accLimits=(${limits// /})
index=0
previousUsers=($(awk -F ':' '{print $1}' ${readerfile} ))
index=0
for user in ${accounts[@]}
do
PASS=$(awk -F ':' "/${user}:/ {print \$2}" ${readerfile})
@ -41,21 +31,15 @@ then
then
hostsList+=(${accLimits[${index}]//,/ })
else
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
ipAddr=($(CreoleGet ip_my_dist))
ipMask=($(CreoleGet mask_my_dist))
if [[ ${ipMask} == "255.255.255.255" ]]
then
hostsList+=("${ipAddr}")
else
hostsList+=("${ipAddr}/${ipMask}")
fi
fi
for hst in ${hostsList[@]}
do
SQL="DROP USER IF EXISTS '${user}'@'${hst}';"
@ -71,7 +55,7 @@ then
index=$((index+1))
done
mysql -u root --password=${password} < ${sqlFile}
mysql < ${sqlFile}
mv ${tempFile} ${readerfile}
chmod 600 ${readerfile}
@ -80,10 +64,8 @@ fi
if [[ ${autoRepair} == "oui" ]]
then
mysqlcheck -u root -p ${password} --auto-repair --check --all-databases
mysqlcheck -u root -p ${password} --optimize --check --all-databases
mysqlcheck -u root --auto-repair --check --optimize --all-databases
fi
exit 0

View File

@ -1,47 +0,0 @@
#!/bin/bash
#
# Initialize root password
# 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"
PASSWORD=$(pwgen -1 10)
passwd="/usr/share/eole/sbin/mariadbPwd"
logdir="/var/log/eole"
logfile="${logdir}/maria-init.log"
[[ ! -d "${logdir}" ]] && mkdir -p ${logdir}
if [[ ${ROLE} == "Leader" ]]
then
service mysql start
${passwd} ${PASSWORD}
# Run secure installation script
${SECURE_CMD} > ${logfile} 2>&1 <<__EOF__
${PASSWORD}
y
n
y
y
y
y
__EOF__
if [[ ${?} -eq 0 ]]
then
service mysql stop
touch ${INITDONE}
exit ${?}
else
service mysql stop
exit ${?}
fi
else
exit 0
fi

View File

@ -1,19 +0,0 @@
<?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>

View File

@ -1,19 +0,0 @@
#!/bin/bash
set -e
DESC="Exportation des bases MariaDB"
. /usr/share/eole/schedule/config.sh
MYSQLSAVDIR=$SAVDIR/sql
OPTION="--lock-tables"
if [[ -d ${MYSQLSAVDIR} ]]
then
rm -rf ${MYSQLSAVDIR}
mkdir -p ${MYSQLSAVDIR}
fi
mariabackup --defaults-file=/etc/mysql/debian.cnf --backup --target-dir=$MYSQLSAVDIR
exit $?

View File

@ -1,28 +0,0 @@
#!/bin/bash
#
# Renew MariaDB root password
# Just like old (mysql_pwd.py)
#
cmd="mysql"
options='--defaults-file=/etc/mysql/debian.cnf'
role=$(CreoleGet dbClusterPosition 'Leader')
if [[ ${role} == "Leader" ]]
then
if [[ -z ${1} ]]
then
read -s -p "New Password : " password
echo
else
password="${1}"
fi
sql="FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '${password}';"
${cmd} ${options} -e "${sql}"
exit $?
else
echo "This command don't work in a MariaDB Cluster Node, try in the Leader"
exit 3
fi

View File

@ -8,7 +8,12 @@ wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration
wsrep_cluster_name="%%dbClusterName"
wsrep_cluster_address="gcomm://%%custom_join(%%dbClusterMember, ',')"
%set %%nodeIP = %%getVar('adresse_ip_' + %%ifDBCluster, '')
wsrep_cluster_address="gcomm://%%nodeIP%slurp
%for %%node in %%dbClusterMember
,%%node.dbClusterMemberIP%slurp
%end for
"
# Tunning
wsrep_provider_options="gcache.size=%%dbClusterGcacheSizeMb"
@ -17,5 +22,5 @@ wsrep_provider_options="gcache.size=%%dbClusterGcacheSizeMb"
wsrep_sst_method=%%dbSSTMethod
# Galera Node Configuration
wsrep_node_address="%%getVar('adresse_ip_' + %%ifDBCluster)"
wsrep_node_name="%%dbClusterMember[%%dbClusterMemberIndex]
wsrep_node_address="%%nodeIP"
wsrep_node_name="%%nodeName"

View File

@ -1,21 +0,0 @@
# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf
[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
#default-character-set = utf8
[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
#character-set-server = utf8
#collation-server = utf8_general_ci
#character_set_server = utf8
#collation_server = utf8_general_ci
# Import all .cnf files from configuration directory
plugin-load-add = auth_socket.so
!includedir /etc/mysql/mariadb.conf.d/

View File

@ -3,29 +3,18 @@ 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('dbQueryCacheMinRestUnit')
query_cache_min_res_unit = %%getVar('dbQueryCacheMinResUint')
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
@ -33,4 +22,5 @@ slow-query-log-file = %%getVar('dbSlowQueryLogFile')
long_query_time = %%getVar('dbSlowQueryLogTime')
%end if
wait_timeout = %%dbWaitTimeout