Aller au contenu

Et automysqlbackup ?


excalibur

Messages recommandés

Bonjour à tous ! En farfouillant divers forums je suis tombé sur automysqlbackup utilitaire qui semble très pratique pour exécuter automatiquement des sauvegardes de ses bases mysql à un rythme périodique. Quelqu'un a t il essayé de l'installer sur un Syno ? J'ai tenté ma chance mais je bloque a l'étape ou il fait exécuter l'installation en lançant le script "install.sh" qui semble bloquer sur le Syno. Quelqu'un saurait il ce qu'il fait faire pour que ça marche ? Merci

Lien vers le commentaire
Partager sur d’autres sites

Je viens de jeter un coup d'oeil sur l'executable automysqlbackup contenu dans le fichier tar.gz ... malheureusement il est fait pour tourner sous bash et le bash a été supprimé par Synology récemment sur les dernier DSM pour des raisons de sécurité.

 

Je doute donc que tu puisses te servir de cet utilitaire sur un NAS synology

Lien vers le commentaire
Partager sur d’autres sites

Il existe effectivement un post sur ce forum avec un script qui fait très bien la sauvegarde de toutes les bases Mysql.

Comme je ne retrouve plus le post, je mets ici le script que j'utilise régulièrement

#!/bin/sh
# *******************************************
# Script de sauvegarde automatique des bases
# de données d'un serveur MySQL
# *******************************************
# Par F. Maurel
# Suivi des mises à  jours sur nas-forum :
#
# *******************************************
# v1.0 - 10/02/12 - Version initiale
# v1.1 - 11/02/12 - Ajout path binaire mysql
# *******************************************
# *******************************************
# Renseigner les variables de connexion au serveur
# *******************************************
# Adresse IP / nom du serveur de bases de données
mysql_server=localhost
# Nom d'utilisateur ayant les droits adéquats, cf forum
mysql_user=<NOM D UTILISATEUR>
# Mot de passe de l'utilisateur
mysql_pass="<MOT DE PASSE>"
# Chemin du dossier où vont être sauvegardées les bases de données, chemin sans le / en fin
dossier_sauvegarde=/volume1/sauvegarde/mysql
# Chemin des binaires mysql
dossier_bin=/usr/syno/mysql/bin
# *******************************************
# Ne pas modifier la suite du fichier
# *******************************************
bases=`$dossier_bin/mysql --host=$mysql_server --user=$mysql_user --password=$mysql_pass -e "show databases;" -B -s 2> /dev/null`
if [ -z "$bases" ];then
        echo "Erreur d'acces ou pas de bases."
        exit 1
fi
echo "***************************************************"
echo "* Debut d'optimisation et de sauvegarde des bases *"
echo "***************************************************"
mkdir ${dossier_sauvegarde}/$(date -I)
chmod 750 ${dossier_sauvegarde}/$(date -I)
for base in $bases
do
        echo "------- Traitement de la base $base -------"
        echo "-- Debut d'optimisation --"
        $dossier_bin/mysqlcheck --optimize --host=$mysql_server --user=$mysql_user --password=$mysql_pass --databases "$base"
        wait
        echo ">> Optimisation terminee"
        echo "-- Debut de sauvegarde --"
        $dossier_bin/mysqldump --opt --verbose --single-transaction --host=$mysql_server --user=$mysql_user --password=$mysql_pass --databases "$base" | gzip
        echo "------- Sauvegarde de la base $base terminee -------"
done
echo "*********************************"
echo "* Sauvegarde des bases terminee *"
echo "*********************************"

Il suffit ensuite de schéduler ce script dans le planificateur du DSM et le jours est joué.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous, je n'avais pas vu vos réponses....en tous cas merci. Il est dit que bash à été supprimé de Synology et le script proposé plus haut je l'utilise au quotidien (il est pas écrit en bash ? Je me trompe peut-être....). Quoiqu'il en soit je cherchais au départ un script contenant une instruction pour supprimer automatiquement les vieilles sauvegardés et n'en conserver que 3 ou 4....ce script permet de sauvegarder via mysqldump mais pas d'éliminer les vieilles sauvegardes.

Lien vers le commentaire
Partager sur d’autres sites

Il est dit que bash à été supprimé de Synology et le script proposé plus haut je l'utilise au quotidien (il est pas écrit en bash ? Je me trompe peut-être....)

​Non, ce script est écrit en "sh" et non en "bash", les Synology savent interpréter le "sh" sans problème ;-)

Quoiqu'il en soit je cherchais au départ un script contenant une instruction pour supprimer automatiquement les vieilles sauvegardés et n'en conserver que 3 ou 4....ce script permet de sauvegarder via mysqldump mais pas d'éliminer les vieilles sauvegardes.

​Ce script créé un répertoire sous forme de date "2015-05-29" à chaque sauvegarde, il te suffit donc d'ajouter dans le script les commandes qui suppriment les répertoires plus anciens à ta guise. Comme les répertoires sont classés naturellement grâce au format de la date, il te suffit de rajouter quelque chose comme cela à la fin du script :

MAXBackup=4

NBbackup=`ls -1 /volume1/sauvegarde/mysql/ | wc -l`
if [ "$NBbackup" -ge "$MAXBackup" ]
then
    first=$(ls -1  /volume1/sauvegarde/mysql/ | head -1 )
    echo "Suppression /volume1/sauvegarde/mysql/${first}"
    rm -rf /volume1/sauvegarde/mysql/${first}
fi

 

Lien vers le commentaire
Partager sur d’autres sites

Merci pour cette réponse détaillée. En fait le script dont nous parlons génère chez moi des fichiers et non des répertoires par dates. J'obtiens par exemple Backup-nom de la base sauvegardée-Date avec l'extension .gz. Je dois donc adapter tes commandes à ma situation propre. Je vais essayer et me creuser un peu la tête. Je tente un retour des que possible. Merci.

Lien vers le commentaire
Partager sur d’autres sites

NBbackup=`ls -1 /volume1/sauvegarde/mysql/ | wc -l`

Désolé je suis nul en codage....mais ça tu t'en étais aperçu !!  pour la fin de cette ligne c'est bien la lettre l comme "laurent" qu'il faut écrire ?

 Autre chose : 

first=$(ls -1  /volume1/sauvegarde/mysql/ | head -1 )

A la fin de cette ligne c'est bien le chiffre 1 qu'il faut écrire et non la lettre "l" comme "laurent" ?. Pour le chemin, mes sauvegardes sont sous forme de fichiers portant l'extension ".gz" dans mon repertoire unique /volume1/web/mysql.......il faudrait donc que j'écrive /volume1/web/mysql/*.gz c'est bien ça.....???.

je sens que je suis en train de me fourrer dans de beaux draps......:-((((((((((

Lien vers le commentaire
Partager sur d’autres sites

Alors oui et oui, la premiere ligne c'est bien "L" minuscule et la deuxième ligne, c'est bien le chiffre un.

Si tu utilises le script que je t'ai donné, alors les fichiers sont bien sous la forme *.gz, mais ils doivent être dans un répertoire portant comme nom la date de la sauvegarde :

/volume1/sauvegarde/mysql/2015-05-28/*.gz
/volume1/sauvegarde/mysql/2015-05-29/*.gz

Donc les lignes de commande suppriment le répertoire (et son contenu) le plus ancien s'il y en a plus de 3

Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...
Le 29/05/2015 at 18:04, loli71 a dit :

Il existe effectivement un post sur ce forum avec un script qui fait très bien la sauvegarde de toutes les bases Mysql.

Comme je ne retrouve plus le post, je mets ici le script que j'utilise régulièrement


#!/bin/sh
# *******************************************
# Script de sauvegarde automatique des bases
# de données d'un serveur MySQL
# *******************************************
# Par F. Maurel
# Suivi des mises à  jours sur nas-forum :
#
# *******************************************
# v1.0 - 10/02/12 - Version initiale
# v1.1 - 11/02/12 - Ajout path binaire mysql
# *******************************************
# *******************************************
# Renseigner les variables de connexion au serveur
# *******************************************
# Adresse IP / nom du serveur de bases de données
mysql_server=localhost
# Nom d'utilisateur ayant les droits adéquats, cf forum
mysql_user=<NOM D UTILISATEUR>
# Mot de passe de l'utilisateur
mysql_pass="<MOT DE PASSE>"
# Chemin du dossier où vont être sauvegardées les bases de données, chemin sans le / en fin
dossier_sauvegarde=/volume1/sauvegarde/mysql
# Chemin des binaires mysql
dossier_bin=/usr/syno/mysql/bin
# *******************************************
# Ne pas modifier la suite du fichier
# *******************************************
bases=`$dossier_bin/mysql --host=$mysql_server --user=$mysql_user --password=$mysql_pass -e "show databases;" -B -s 2> /dev/null`
if [ -z "$bases" ];then
        echo "Erreur d'acces ou pas de bases."
        exit 1
fi
echo "***************************************************"
echo "* Debut d'optimisation et de sauvegarde des bases *"
echo "***************************************************"
mkdir ${dossier_sauvegarde}/$(date -I)
chmod 750 ${dossier_sauvegarde}/$(date -I)
for base in $bases
do
        echo "------- Traitement de la base $base -------"
        echo "-- Debut d'optimisation --"
        $dossier_bin/mysqlcheck --optimize --host=$mysql_server --user=$mysql_user --password=$mysql_pass --databases "$base"
        wait
        echo ">> Optimisation terminee"
        echo "-- Debut de sauvegarde --"
        $dossier_bin/mysqldump --opt --verbose --single-transaction --host=$mysql_server --user=$mysql_user --password=$mysql_pass --databases "$base" | gzip
        echo "------- Sauvegarde de la base $base terminee -------"
done
echo "*********************************"
echo "* Sauvegarde des bases terminee *"
echo "*********************************"

Il suffit ensuite de schéduler ce script dans le planificateur du DSM et le jours est joué.

Bonjour,

j'ai un NAS DS216 sous DSM6 et j'essaie de planifier le backup de mes BDD myqsl avec ce script.

Cependant, lorsque je lance ce script j'ai 2 comportements différents selon le mode de fonctionnement :

- quand je lance le script précédé d'un ./, j'ai le message d'erreur : -sh: ./Save_bdd_myqsl.sh: /bin/sh^M: bad interpreter: No such file or directory

- quand je le lance précédé d'un . ./, j'ai le message d'erreur suivant : 

-sh: ./Save_bdd_myqsl.sh: line 40: syntax error near unexpected token `$'do\r''
'sh: ./Save_bdd_myqsl.sh: line 40: `do

Pourtant j'ai bien des bases de données dans mysql.

Est-ce que quelqu'un a déjà rencontré ce genre de problème ?

Florian Manchette

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

il y a 31 minutes, billout9 a dit :

-sh: ./Save_bdd_myqsl.sh: /bin/sh^M: bad interpreter: No such file or directory

Ca ressemble à un problème de retour a la ligne au format windows dans le script plutôt que Linux.

Je ne sais pas comment tu as écrit/transféré ton script sur le nas, si c'est avec SCP, il faut choisir le transfert en mode "texte" de préférence.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.