Script de sauvegarde serveur Debian + IspConfig3

Non non.
Mais je préfère la sauvegarde base par base, site web pas site web, puis /etc et les mails.
Ça fait vite du volume, et tout mettre dans un tar (si j’ai bien suivi ton script) pose des problèmes pour l’envoie sur le ftp et via ssh (poids de la sauvegarde).
Et il ne s’agit pas de tout sauvegarder; Seulement les sites web, les bases qui vont avec, la conf de ispconfig, le dossier /etc et les mails.
Le reste je m’en cogne un peu, c’est reproductible très facilement…

Tu verrais la structure du dossier /var/www dans ispconfig, tu comprendrais mieux, c’est particulier; Subdivisé en clients, sites…
Et pas question de tout prendre.

Une sauvegarde « basique » d’une base de données (une copie de tout ce qui se trouve sur le disque dur), ne garantie pas que la base soit cohérente. En effet tu peut sauvegarder la base en pleins milieux d’une transaction et avoir une copie invalide. En principe les outils de sauvegarde de base de données vont attendre que toutes les transactions soient terminées (avec pleins d’optimisation pour ne pas arrêter la base entre autre).

ok c’est noter ,effectivement c’est different 8)

Bonjour,

Je suis actuellement en train de migrer mes sites sur un nouveau serveur Debian Squeeze + Ispconfig 3.
J’ai vu que dans le gestionnaire ispconfig on peut activer un backup des sites depuis la configuration du site mais je ne suis pas sur que ça fonctionne et je ne sais pas où les fichier peuvent aller.

Je cherche donc une sauvegarde tout comme toi pour sauvegarder config ispconfig + sites + sql via ftp ovh.
Sur le serveur je vais avoir plusieurs boutiques de vente en ligne, donc il est impératif qu’une sauvegarde journalière soit effectuée afin de pouvoir relancer le site très rapidement en cas de crash ou piratage. Les boutiques fonctionnent sous prestashop et donc la base sql est en modification constamment. J’ai déjà essayer de créer une sauvegarde via un script de la base de données mais la sauvegarde se coupait à chaque fois comme la base était en écriture.

Je suis novice dans le milieu et je ne connait que très peu de commande sous linux, donc si il y avait une âme charitable pour me guider dans la mise en place d’une telle sauvegarde je ne saurais que vous être plus que reconnaissant.

Salut,

Dans le répertoire /var/backup (backups ?)
Il fait une seule sauvegarde journalière.

Mon script fonctionne bien (sauvegarde locale - sites, bases, et ispconfig + sauvegarde vers ftp ovh), pas de soucis.
Pas contre je n’ai pas pris en compte le problème de l’écriture permanente dans Mysql… Mes sites sont presque tous statiques pour l’instant.

Il devrait suffire de “verrouiller” les tables avant le backup:

LOCK TABLES tbl_list READ; FLUSH TABLES tbl_list;

Regarde les option de mysqldump avec lock et flush, et passe les commandes adéquats au moment du dump.
Si tu trouve une solution propre, un retour ici serait sympa, ça me permettrais de rectifier le script.

Désolé de ne pas avoir répondu plus tôt mais je n’avais pas eu de notification par mail du fait que je n’avais pas mis à jour mon profil :unamused:

Petite question certainement à la con mais bon:
Si je verrouille la base comme tu me le suggères, aucun enregistrement ne peut se faire pendant toute la période de la sauvegarde? ou bien cela n’affecte que la sauvegarde?
exemple si ma sauvegarde dure 15 min, et qu’un client souhaite passer une commande, quel sera le résultat?

PS: je n’ai encore rien tester pour le moment je vais m’y plonger ce week end entre deux biberons ^^

Salut,

[quote=“semor”]Désolé de ne pas avoir répondu plus tôt mais je n’avais pas eu de notification par mail du fait que je n’avais pas mis à jour mon profil :unamused:

Petite question certainement à la con mais bon:
Si je verrouille la base comme tu me le suggères, aucun enregistrement ne peut se faire pendant toute la période de la sauvegarde? ou bien cela n’affecte que la sauvegarde?
exemple si ma sauvegarde dure 15 min, et qu’un client souhaite passer une commande, quel sera le résultat?

PS: je n’ai encore rien tester pour le moment je vais m’y plonger ce week end entre deux biberons ^^[/quote]

La base est bloquée, personne ne peux y écrire quoi que ce soit.
15 minutes pour une base ? Elle est gigantesque la base…

Je viens de lire ça:[quote]PrestaShop do not use permanent connections.[/quote]http://www.prestashop.com/forums/topic/25476-prestashop-mysql-usage/

Je suppose que ça ne te posera donc pas de problèmes.

[quote=“lol”]Salut,
La base est bloquée, personne ne peux y écrire quoi que ce soit.
15 minutes pour une base ? Elle est gigantesque la base…

Je viens de lire ça:[quote]PrestaShop do not use permanent connections.[/quote]http://www.prestashop.com/forums/topic/25476-prestashop-mysql-usage/

Je suppose que ça ne te posera donc pas de problèmes.[/quote]

Ma base fait près de 550Mo pour la plus grosse, 150Mo, 110Mo et 90Mo pour mes boutiques et les autres font moins de 100Mo pour les forums et sites joomla.

Prestashop est très bien foutu et enregistre toutes les connexions, les pages visualisés, afin d’avoir un outil de stats très puissant et surtout très utile pour connaitre les produits qui intéressent le plus et donc pour un commerçant c’est très utile et on ne peut pas s’en passer. Mais du coup la base est en permanence en écriture du fait qu’une simple visite sur une page créé plusieurs entrées sur la base.

j’avais à l’époque il y a maintenant un petit bout de temps effectuer un script mais je ne pouvais pas sauvegarder, à chaque fois une erreur m’était retournée pour une table qui entre temps avait été modifié du coup la sauvegarde plantait

Re,
500 Mo ça commence effectivement à peser, mais ça reste tout a fait acceptable.

Je crois qu’il faut bloquer l’accès en écriture:

mysql> FLUSH TABLES WITH READ LOCK;
Exécution de la sauvegarde
mysql> unlock tables;

En local 500Mo c’est l’affaire de moins d’une minute non ?

ouais c’est pas faux, si j’ai bien compris, je sauvegarde en local et après je l’envoie sur le serveur ftp, en même temps si je réalise le truc à 3h du mat ça limite le truc ^^
bon il va falloir ressortir les classeurs de cours et le manuel linux pour comprendre comment ça marche tout ça!

Je crois que je vais encore te solliciter :083

Re,

Oui, c’est exactement ça.
C’est comme ça que je procède (et que tout le monde fait je pense). Sauvegarde locale la nuit au moment ou l’activité réseau est la plus basse.
Ensuite envoie sur ftp OVH et sur serveur distant via ssh.

Même si c’est un peu plus de temps, de nuit ca reste acceptable !
Il est toujours possible de couper le site et d’afficher un petit message en indiquant que le site est en maintenance.

Sur un de mes serveurs ca coupe environ 5 minutes à 4h30 du matin (sur mes sites c’est l’heure où il y a le moins de personnes connectées), pour une sauvegarde de bases de données d’environ 2,5 Go…

Les membres remarquent la coupure mais s’en accommode, surtout si c’est indiqué que le site est en maintenance pour quelques minutes ! après ce sont des heures assez creuses donc peu de personnes, là où il y a le moins de risque, mais après de toute facon il faut sauvegarder pas trop le choix :smiley:

De retour sur le projet, je m’y attelle sérieusement.
Pour ce qui est des heures, en pleine nuit entre 3h et 5h me parait l’idéal.
J’aurais certainement besoin d’un coup de main.
Je vais commencé par décortiquer le script et essayer de le comprendre.
:033

Bonjour,

En suivant votre code et pour éviter tout problèmes, j’arrive a un script (ci joint) qui bloque les tables SQL durant la sauvegarde.

Pouvez vous me dire si il est correct ?

Merci d’avance.
sauvegarde.txt (6.62 KB)

Bonjour,
Les bases sont effectivement verrouillées pendant le “dump”, c’est normal.
J’utilise ce système sur des bases qui ne sont pas importantes et sur des sites à fréquentation “raisonnable”… Une coupure de moins d’une minute est sans incidence.

Je suis en train de réfléchir à une autre procédure: réplication vers un autre serveur et sauvegarde sur celui-ci; Du coup pas de blocage de base sur le serveur “maître”.

Pour ton script, je ne comprend pas la question…

Juste savoir si c’est bien cela, je veux être sur avant de faire une erreur maladroite.

Re

Compris. Il va falloir le “débugger” toi-même…
Pour cela, ajoute des pauses à chaque action, et vérifie que chaque étape se déroule bien…

Bonjour,

Tout d’abord un grand merci pour ce script !
Je l’ai lancé hier avec succès.
J’ai toutefois eu quelques comportements bizarres, visiblement, pour les web_domains déclarés dans ISP Config qui ne sont pas de type vhost, c’est-à-dire dans mon cas 2 alias et 1 subdomain.

Pour les web_domains de type alias, déclarés comme appartenant à client0, est-il vraiment nécessaire de backuper le “site” ? Dans la mesure où concrètement, il n’y a pas de répertoire /var/www/client0/webx, je ne pense pas.
Pour les web_domains de type subdomain, c’est même “pire”, puisqu’il n’y a visiblement ni client au sens ISPConfig, ni document_root.

Je propose - à moins que j’ai dit une sottise précédemment - de changer la requête qui récupère la liste des sites pour ne prendre que les web_domains de type vhost :

###################################################################### BACKUP SITES
[ ! -d $DESTSITES ] && mkdir -p $DESTSITES
# Récupération infos clients et sites
cd "$CHEMIN"
echo "select system_user,system_group from web_domain where type='vhost' " | mysql -u $USER -p$PASS -D $DB > $TEMP
   tail -n +2 "$TEMP" > liste
   rm "$CHEMIN/$TEMP"

(à vérifier les simples quotes dans la requête, je suis un bleu en shell script).

Qu’en pensez-vous ?

Une autre question que je me pose concerne le restore de ces fichiers et databases : j’imagine que ça se fait avec le user root (ou tout autre user de type admin). Qu’en est-il alors au niveau des droits et owners des fichiers, un fois restaurés ? Ils sont tous root:root ou bien avec leurs users webx:clienty respectifs ?
S’ils sont tous root:root avec les droits associés, est-ce que ça n’a pas d’effet de bord sur l’usage ultérieur ?

Autre question, concernant les liens symboliques que fait ISPConfig dans /var/www/ d’un alias de type mondomaine.tld -> /var/www/clients/clientx/weby/
Faut-il les recréer à tout prix ? Si oui, manuellement ou est-ce qu’ISPConfig va le faire de facto en sauvant le site via l’interface ou d’une autre manière ?

Désolé pour ces questions de débutant, c’est ce que je suis… :wink:

Salut,
Merci pour le retour.

Effectivement prendre seulement les vhost est intelligent.
Pour ce qui est des restaurations…

S’il s’agit de restaurer seulement un site:
Les archives contiennent les bon propriétaires; Une restauration ne changera donc par les uid/gid (à moins de forcer root, mais ce ne serait pas malin :wink:

S’il s’agit de restaurer un serveur à partir de zéro, c’est plus compliqué… J’en ai eu l’expérience récemment lors d’un changement de serveur.
Il faut tout se taper à la main…

  • Créer les utilisateurs, sites et bases dans ISP.
  • Restaurer les sites et les bases; Changer les uid/gid si nécessaire (attention, certains CMS contiennent des chemins dans les bases, il faut penser à vérifier et changer si nécessaire - c’est un peu chiant à faire…).