Initial commit.

This commit is contained in:
yohan 2019-06-25 18:08:17 +02:00
commit c955d5deca
4 changed files with 99 additions and 0 deletions

17
README Normal file
View File

@ -0,0 +1,17 @@
Why ?
pour centraliser la sauvegarde et l'administration des BDD
Si première utilisation :
docker network create mysqlnet
docker volume create --name mysql-server_data
docker volume create --name mysql-server_dumps
rsync -itrlpgovDHXP var_lib_mysql/* /var/lib/docker-latest/volumes/mysql-server_data/_data/
chcon -Rt svirt_sandbox_file_t /var/lib/docker-latest/volumes/mysql-server_data/_data/
chcon -Rt svirt_sandbox_file_t /var/lib/docker-latest/volumes/mysql-server_dumps/_data/
Utilisation :
Les droits des fichiers doivent être corrigés avant de lancer la stack avec docker-compose up -d :
chcon -u system_u -r object_r -t svirt_sandbox_file_t crontab
chcon -u system_u -r object_r -t svirt_sandbox_file_t nettoyer_quotas.sh

13
crontab-example Normal file
View File

@ -0,0 +1,13 @@
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m | h | day of month | month | day of week | user | command
3 0 * * * root docker -H tcp://127.0.0.1:2375 exec mysql-server /root/nettoyer_quotas.sh > /proc/1/fd/2 2>&1
3 1 * * * root docker -H tcp://127.0.0.1:2375 exec mysql-server sh -c "mysqldump --databases mysql -uroot -pXXXXXXXX > /mnt/dumps/mysql_dump-mysql_`date +\%d-\%m-\%Y`" > /proc/1/fd/2 2>&1
13 1 * * * root docker -H tcp://127.0.0.1:2375 exec mysql-server sh -c "mysqldump --databases gogs owncloud semanticscuttle -uroot -pXXXXXXXX > /mnt/dumps/mysql_dump_`date +\%d-\%m-\%Y`" > /proc/1/fd/2 2>&1

35
docker-compose.yml Normal file
View File

@ -0,0 +1,35 @@
version: "2.1"
services:
mysql-server:
image: mysql-server
container_name: mysql-server
restart: always
networks:
- mysqlnet
volumes:
- mysql-server_data:/var/lib/mysql:Z
- mysql-server_dumps:/mnt/dumps:Z
- ./nettoyer_quotas.sh:/root/nettoyer_quotas.sh:Z
cron:
image: cron
restart: always
network_mode: "host"
volumes:
- ./crontab:/etc/crontab:Z
networks:
mysqlnet:
external: true
volumes:
mysql-server_data:
external: true
mysql-server_dumps:
external: true

34
nettoyer_quotas.sh Executable file
View File

@ -0,0 +1,34 @@
#!/bin/bash
#find /mnt/dumps -mtime +30 -print
# ce scrip efface les vieux dumps de la base de données.
PURGEPATH=/mnt/dumps
cd $PURGEPATH
OLD_IFS="$IFS"
IFS=$(echo -en "\n\b")
for file in `ls -rt`
do
IFS="$OLD_IFS"
# en Ko
espace_libre=`df -P "$PURGEPATH" | grep "$PURGEPATH" | head -n 1 | awk 'BEGIN{FS=" "} {print $4}'`
# We want to keep 5 Go free
if [ "$espace_libre" -lt 5000000 ]
then
rm -rf -- "$file" && echo "Removed $file"
else
echo "Enough free space retrieved"
break
fi
# etc
# il faut faire attention, la valeur de l'IFS n'étant pas celle par défaut, certaines choses
# ne fonctionneront pas si tu fais des choses compliquées dans ta boucle, tu seras probablement
# obligé de restaurer/effacer la valeur d'IFS à chaque itération.
sleep 1
IFS=$(echo -en "\n\b")
done
echo "$espace_libre Ko free on $PURGEPATH"
IFS="$OLD_IFS"
#suite du script