Compare commits

...

30 Commits

Author SHA1 Message Date
8d878d2416 Merge branch '2.7.0/unstable' into dist/eole/2.7.0/unstable 2021-09-28 11:55:20 +02:00
03ce27c7f2 Fix schedule backup script 2020-11-19 10:16:05 +01:00
d0284ccbe4 Adding variables to create databases 2020-07-02 19:07:19 +02:00
38de7274ba Passage en 2.7.1 2020-07-02 17:02:17 +02:00
cf632ec6e6 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-06-07 15:08:26 +02:00
aec567045d extract backup with mariabackup 2019-06-07 14:49:03 +02:00
44629b4587 extract backup with mariabackup 2019-06-07 14:47:57 +02:00
558482e860 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-06-06 14:41:28 +02:00
b1bcd05792 afficher les erreurs en cas d'erreur de sauvegarde de la base de donnée 2019-06-06 14:38:48 +02:00
51811c96db Merge branch 'develop' into dist/eole/2.7.0/develop 2019-05-20 10:44:58 +02:00
efc3f5848c mariadbBackup.cnf > debian.cnf 2019-05-20 10:25:25 +02:00
b9fb5ff6ad Merge branch 'develop' into dist/eole/2.7.0/develop 2019-05-16 10:29:55 +02:00
d19bfdebf9 fait fonctionner la sauvegarde mariadb 2019-04-18 17:00:07 +02:00
b609ee9761 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-04-18 15:01:21 +02:00
a199b9182d sauvegarde plutot dans /home/backup 2019-04-18 14:58:05 +02:00
3f214856a4 XMerge branch 'dist/eole/2.7.0/develop' of ssh://forge.cadoles.com:4242/Cadoles/eole-mariadb into dist/eole/2.7.0/develop 2019-04-18 14:56:37 +02:00
cbc84bd841 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-04-18 14:53:36 +02:00
d87c9ee307 ajout des extras dans le paquet 2019-04-18 14:52:17 +02:00
0c455115c8 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-03-13 15:20:06 +01:00
0327098015 Correction boucle de définitions des droits utilisateurs 2019-03-13 15:19:02 +01:00
a0684dab2f Merge branch 'dist/eole/2.7.0/develop' of ssh://forge.cadoles.com:4242/Cadoles/eole-mariadb into dist/eole/2.7.0/develop 2019-03-11 09:47:34 +01:00
997e33daf2 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-03-11 09:45:26 +01:00
79785b4b60 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-03-04 12:08:27 +01:00
4ee18114f4 erreur template 2019-03-04 12:07:36 +01:00
c3040e3762 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-03-04 10:29:23 +01:00
796b71a992 simplication déclaration des noeuds + ajustement règle de firewall + démarrer mariadb en postservice 2019-03-04 09:54:28 +01:00
2ba4b56d51 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-03-01 15:36:10 +01:00
921e6b01a1 coorection script création user maria 2019-03-01 15:35:42 +01:00
065308a921 Merge branch 'develop' into dist/eole/2.7.0/develop 2019-02-19 17:26:31 +01:00
94fc8c2411 multi 2019-02-19 17:21:46 +01:00
13 changed files with 94 additions and 148 deletions

View File

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

View File

@ -1,5 +1,31 @@
# eole-mariadb # 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. 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 La version utilisé est mariadb 10.3

2
debian/control vendored
View File

@ -10,7 +10,7 @@ Vcs-Browser: https://forge.cadoles.com/Cadoles/eole-mariadb
Package: eole-mariadb Package: eole-mariadb
Architecture: all Architecture: all
Depends: ${misc:Depends}, mariadb-server Depends: ${misc:Depends}, mariadb-server, mariadb-backup
Conflicts: eole-mysql Conflicts: eole-mysql
Provides: eole-mysql Provides: eole-mysql
Description: Dictionnaires et templates pour la configuration d'un serveur MariaDB, testée uniquement avec eolebase Description: Dictionnaires et templates pour la configuration d'un serveur MariaDB, testée uniquement avec eolebase

View File

@ -2,25 +2,24 @@
<files> <files>
<file filelist='dbMariaDB' name='/etc/mysql/conf.d/mariadb.cnf' rm='True' mkdir='True'/> <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='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'/> <file filelist='dbTunning' name='/etc/mysql/conf.d/tunning.cnf' rm='True' mkdir='True'/>
<service servicelist='bdd'>mariadb</service> <service servicelist='bdd'>mariadb</service>
<service_access service='mariadb'> <service_access service='mariadb'>
<port service_accesslist='mariadb' protocol='tcp'>3306</port> <port protocol='tcp'>3306</port>
<tcpwrapper service_accesslist='mariadb'>mariadb</tcpwrapper> <tcpwrapper>mariadb</tcpwrapper>
</service_access> </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_restriction service='mariadb'> <service_restriction service='mariadb'>
<ip interface='ifMariaDBLimit' interface_type="SymLinkOption" netmask='maskMariaDBLimit' netmask_type='SymLinkOption' ip_type='SymLinkOption'>ipMariaDBLimit</ip> <ip interface='ifMariaDBLimit' interface_type="SymLinkOption" netmask='maskMariaDBLimit' netmask_type='SymLinkOption' ip_type='SymLinkOption'>ipMariaDBLimit</ip>
</service_restriction> </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'> <service_restriction service='galera'>
<ip interface='ifDBCluster' interface_type="SymLinkOption" netmask='255.255.255.255' ip_type='SymLinkOption'>dbClusterMember</ip> <ip interface='ifDBCluster' interface_type="SymLinkOption" netmask='255.255.255.255' ip_type='SymLinkOption'>dbClusterMember</ip>
</service_restriction> </service_restriction>
@ -50,7 +49,13 @@
<value>Default</value> <value>Default</value>
</variable> </variable>
<variable name="accLimitTarget" type="string" description="Restriction d'accès à ces IP/noms d'hôtes (liste séparateur séparateur ',')" /> <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> </family>
<!-- Tunning --> <!-- Tunning -->
@ -116,10 +121,9 @@
<variable name='dbClusterName' type='string' description='Nom de la grappe'> <variable name='dbClusterName' type='string' description='Nom de la grappe'>
<value>galera_cluster</value> <value>galera_cluster</value>
</variable> </variable>
<variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD"/> <variable name='ifDBCluster' type='string' description="Interface réseau dédiée à la grappe BDD" mandatory='True'/>
<variable name='nodeName' type='domain' description="Nom de domaine du noeud"/> <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"/>
<variable name='dbClusterMember' type='domain' description="Nom de domaine des membres de la grappe" multi="True"/>
<!-- Expert Variables --> <!-- Expert Variables -->
<variable name='dbBinLogFormat' type='string' mode='expert' description='Format du binlog'> <variable name='dbBinLogFormat' type='string' mode='expert' description='Format du binlog'>
<value>ROW</value> <value>ROW</value>
@ -137,10 +141,11 @@
</family> </family>
<separators> <separators>
<separator name='dbCreateFixAdmin'>Comptes d'administration supplémentaires</separator> <separator name='dbCreateFixAdmin'>Comptes d'administration supplémentaires</separator>
<separator name='create_db'>Ajouter des bases de données</separator>
</separators> </separators>
</variables> </variables>
<constraints> <constraints>
<check name="valid_ipnetmask" target="maskMariaDBLimit" level="warning"> <check name="valid_ipnetmask" target="maskMariaDBLimit" level="warning">
<param type='eole'>ipMariaDBLimit</param> <param type='eole'>ipMariaDBLimit</param>
</check> </check>
@ -169,9 +174,10 @@
<slave>ifMariaDBLimit</slave> <slave>ifMariaDBLimit</slave>
</group> </group>
<fill name='calc_val' target='nodeName'> <group master='db_name'>
<param type='eole'>nom_domaine_machine</param> <slave>db_admin_user</slave>
</fill> </group>
<fill name='calc_multi_condition' target='accLimitTarget'> <fill name='calc_multi_condition' target='accLimitTarget'>
<param>Default</param> <param>Default</param>
<param type='eole' name='condition_1'>accLimits</param> <param type='eole' name='condition_1'>accLimits</param>
@ -184,13 +190,17 @@
<target type='family'>MariaDB</target> <target type='family'>MariaDB</target>
<!--target type='family'>Grappe MariaDB</target--> <!--target type='family'>Grappe MariaDB</target-->
<target type='family'>MariaDB Tunning</target> <target type='family'>MariaDB Tunning</target>
<!--target type='service_accesslist'>dbCluster</target-->
<target type='filelist'>dbTunning</target> <target type='filelist'>dbTunning</target>
<target type='filelist'>dbMariaDB</target> <target type='filelist'>dbMariaDB</target>
<!--target type='filelist'>dbCluster</target--> <!--target type='filelist'>dbCluster</target-->
<target type='servicelist'>bdd</target> <target type='servicelist'>bdd</target>
</condition> </condition>
<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"> <condition name='disabled_if_in' source="dbCreateFixAdmin">
<param>non</param> <param>non</param>
<target type='variable'>accName</target> <target type='variable'>accName</target>

11
postservice/00-bdd-cluster Executable file
View File

@ -0,0 +1,11 @@
#!/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

@ -28,6 +28,8 @@ then
previousUsers=($(awk -F ':' '{print $1}' ${readerfile} )) previousUsers=($(awk -F ':' '{print $1}' ${readerfile} ))
index=0
for user in ${accounts[@]} for user in ${accounts[@]}
do do
PASS=$(awk -F ':' "/${user}:/ {print \$2}" ${readerfile}) PASS=$(awk -F ':' "/${user}:/ {print \$2}" ${readerfile})
@ -54,7 +56,6 @@ then
done done
fi fi
index=0
for hst in ${hostsList[@]} for hst in ${hostsList[@]}
do do
SQL="DROP USER IF EXISTS '${user}'@'${hst}';" SQL="DROP USER IF EXISTS '${user}'@'${hst}';"
@ -86,4 +87,3 @@ then
fi fi
exit 0 exit 0

View File

@ -1,20 +0,0 @@
#!/bin/bash
db=$(CreoleGet dbEnable non)
cluster=$(CreoleGet dbEnableCluster non)
role=$(CreoleGet dbClusterPosition 'Node')
gstateFile="/var/lib/mysql/grastate.dat"
if [[ ${db} == "oui" ]]
then
if [[ ${cluster} == "oui" ]]
then
if [[ ${role} == "Leader" ]]
then
service mariadb stop
galera_new_cluster
fi
fi
fi
exit 0

View File

@ -1,66 +0,0 @@
#!/bin/bash
systemctl stop mariadb
mariadb_cfdir=/etc/mysql/
dc=$mysql_cfgdir/mariadbBackup.cnf
mariadb_rundir=/var/run/mysqld/
mariadb_statedir=/var/lib/mysql
if [ -e "$dc" -a -n "`fgrep mysql_upgrade $dc 2>/dev/null`" ]; then
pass="`sed -n 's/^[ ]*password *= *// p' $dc | head -n 1`"
# Basedir is deprecated. Remove the option if it's in an existing mariadbBackup.cnf
sed -i '/basedir/d' "$dc"
else
pass=`perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..16)'`;
if [ ! -d "$mariadb_cfdir" ]; then
then install -o 0 -g 0 -m 0755 -d $mariadb_cfdir
fi
umask 066
cat /dev/null > $dc
umask 022
echo "# Automatically generated DONT'T TOUCH !!!!!!" >>$dc
echo "[client]" >>$dc
echo "host = localhost" >>$dc
echo "user = maria-sys-maint" >>$dc
echo "password = $pass" >>$dc
echo "socket = $mariadb_rundir/mysqld.sock" >>$dc
echo "[mysql_upgrade]" >>$dc
echo "host = localhost" >>$dc
echo "user = maria-sys-maint" >>$dc
echo "password = $pass" >>$dc
echo "socket = $mariadb_rundir/mysqld.sock" >>$dc
fi
# If this dir chmod go+w then the admin did it. But this file should not.
chown 0:0 $dc
chmod 0600 $dc
# If database doesn't exist we create it.
mkdir /var/lib/mariadb-files
mariadb_filesdir=/var/lib/mariadb-files
if [ ! "$(ls -A "${mariadb_statedir}")" ] && [ -d "${mariadb_filesdir}" ]; then
existingdatabase=0
initfile=`mktemp --tmpdir=/var/lib/mariadb-files/`
touch "$initfile"
chmod 600 "$initfile"
chown mysql:mysql "$initfile"
echo "USE mysql; " >> "$initfile"
db_get mysql-server/root_password && rootpw="$RET"
if [ ! -z "$rootpw" ]; then
rootpw=$(printf %q "${rootpw}")
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY '$rootpw';" >> "$initfile"
fi
echo "CREATE USER IF NOT EXISTS 'maria-sys-maint'@'localhost' IDENTIFIED BY '$pass';" >> "$initfile"
echo "GRANT ALL ON *.* TO 'maria-sys-maint'@'localhost' WITH GRANT OPTION;" >> "$initfile"
echo "SHUTDOWN;" >> "$initfile"
mysqld --initialize-insecure --user=mysql --init-file="$initfile"> /dev/null 2>&1 || true
rm "$initfile"
else
existingdatabase=1
fi
systemctl start mariadb
exit 0

19
schedule/scripts/mariadb Normal file
View File

@ -0,0 +1,19 @@
#!/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,7 +0,0 @@
# 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

@ -1,27 +0,0 @@
#!/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

@ -8,7 +8,7 @@ wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so wsrep_provider=/usr/lib/galera/libgalera_smm.so
# Galera Cluster Configuration # Galera Cluster Configuration
wsrep_cluster_name="%%dbClusterName" wsrep_cluster_name="%%dbClusterName"
wsrep_cluster_address="gcomm://%%nodeName,%%custom_join(%%dbClusterMember, ',')" wsrep_cluster_address="gcomm://%%custom_join(%%dbClusterMember, ',')"
# Tunning # Tunning
wsrep_provider_options="gcache.size=%%dbClusterGcacheSizeMb" wsrep_provider_options="gcache.size=%%dbClusterGcacheSizeMb"
@ -18,4 +18,4 @@ wsrep_sst_method=%%dbSSTMethod
# Galera Node Configuration # Galera Node Configuration
wsrep_node_address="%%getVar('adresse_ip_' + %%ifDBCluster)" wsrep_node_address="%%getVar('adresse_ip_' + %%ifDBCluster)"
wsrep_node_name="%%nodeName" wsrep_node_name="%%dbClusterMember[%%dbClusterMemberIndex]