Théorie et pratique des sauvegardes avec Borg



À notre grande surprise, il n'y avait pas un seul Ă©lĂ©ment sur le merveilleux outil Open Source pour la sauvegarde de donnĂ©es - Borg (Ă  ne pas confondre avec le progĂ©niteur Ă©ponyme Kubernetes!) . Depuis que nous l'utilisons en production depuis plus d'un an, je partagerai dans cet article les «impressions» que nous avons acquises sur Borg.

Contexte: Expérience avec Bacula et Bareos


En 2017, nous en avions assez de Bacula et Bareos, que nous utilisions depuis le tout début de notre activité (soit environ 9 ans de production à l'époque). Pourquoi? Pendant le fonctionnement, nous avons accumulé beaucoup de mécontentement:

  • SD (Storage Daemon) se bloque. Si vous avez configurĂ© le parallĂ©lisme, la maintenance SD devient plus compliquĂ©e et son gel bloquera les sauvegardes supplĂ©mentaires dans les dĂ©lais et la possibilitĂ© de rĂ©cupĂ©ration.
  • Il est nĂ©cessaire de gĂ©nĂ©rer des configurations pour le client et le directeur. MĂȘme si nous automatisons cela (dans notre cas, Chef, Ansible et notre propre dĂ©veloppement ont Ă©tĂ© utilisĂ©s Ă  des moments diffĂ©rents), nous devons surveiller que le rĂ©alisateur, aprĂšs son rechargement, a effectivement rĂ©cupĂ©rĂ© la configuration. Ceci est seulement suivi dans la sortie de la commande de rechargement et dans l'appel de messages aprĂšs (pour obtenir le texte d'erreur lui-mĂȘme).
  • Planifiez des sauvegardes. Les dĂ©veloppeurs de Bacula ont dĂ©cidĂ© de suivre leur propre chemin et ont Ă©crit leur propre format de calendrier, que vous ne pouvez pas simplement analyser ou convertir en un autre. Voici des exemples de planifications de sauvegarde standard dans nos anciennes installations:
    • Sauvegarde complĂšte quotidienne le mercredi et incrĂ©mentielle les autres jours:
      Run = Level=Full Pool="Foobar-low7" wed at 18:00
      Run = Level=Incremental Pool="Foobar-low7" at 18:00
    • Sauvegarde complĂšte des fichiers wal 2 fois par mois et incrĂ©mentation toutes les heures:
      Run = Level=Full FullPool=CustomerWALPool 1st fri at 01:45
      Run = Level=Full FullPool=CustomerWALPool 3rd fri at 01:45
      Run = Level=Incremental FullPool=CustomerWALPool IncrementalPool=CustomerWALPool on hourly
    • Le schedule gĂ©nĂ©rĂ© pour toutes les occasions (Ă  diffĂ©rents jours de la semaine toutes les 2 heures), nous avons obtenu environ 1665 ... Ă  cause de ce que Bacula / Bareos devenait pĂ©riodiquement fou.
  • Bacula-fd (et bareos-fd) ont des rĂ©pertoires avec beaucoup de donnĂ©es (disons 40 To, dont 35 To contiennent des fichiers volumineux [100+ Mo] et les 5 To restants contiennent de petits fichiers [1 Ko Ă  100 Mo ]) une lente fuite de mĂ©moire commence, ce qui est une situation trĂšs dĂ©sagrĂ©able en production.

  • Sur les sauvegardes avec un grand nombre de fichiers, Bacula et Bareos sont trĂšs dĂ©pendants des performances du SGBD utilisĂ©. De quels disques dispose-t-il? Dans quelle mesure savez-vous comment l'adapter Ă  ces besoins spĂ©cifiques? Et dans la base de donnĂ©es, au fait, une (!) Table non partitionnable est créée avec une liste de tous les fichiers dans toutes les sauvegardes et la seconde - avec une liste de tous les chemins dans toutes les sauvegardes. Si vous n'ĂȘtes pas prĂȘt Ă  allouer au moins 8 Go de RAM pour la base + 40 Go de SSD pour votre serveur de sauvegarde - prĂ©parez-vous immĂ©diatement pour les freins.
  • La dĂ©pendance Ă  la base de donnĂ©es mĂ©rite un point de plus. Bacula / Bareos pour chaque fichier demande au rĂ©alisateur s'il existait dĂ©jĂ  un tel fichier. Le directeur, bien sĂ»r, rampe dans la base de donnĂ©es, dans ces tables trĂšs Ă©normes ... Il s'avĂšre que la sauvegarde peut ĂȘtre bloquĂ©e simplement par le fait que plusieurs sauvegardes lourdes ont dĂ©marrĂ© en mĂȘme temps - mĂȘme si le diff y est de plusieurs mĂ©gaoctets.



Il serait injuste de dire qu’aucun problĂšme n’a Ă©tĂ© rĂ©solu, mais nous en sommes arrivĂ©s au point oĂč nous Ă©tions vraiment fatiguĂ©s de diverses solutions de contournement et voulions une solution fiable «ici et maintenant».

Bacula / Bareos fonctionnent trÚs bien avec un petit nombre (10-30) d'emplois uniformes. Une petite chose s'est-elle cassée une fois par semaine? Ce n'est pas grave: ils ont confié la tùche à l'officier de service (ou à un autre ingénieur) - ils l'ont réparée. Cependant, nous avons des projets dans lesquels le nombre d'emplois est de plusieurs centaines et le nombre de fichiers qu'ils contiennent est de centaines de milliers. En conséquence, 5 minutes par semaine pour corriger la sauvegarde (sans compter plusieurs heures de paramÚtres avant cela) ont commencé à se multiplier. Tout cela a conduit au fait que 2 heures par jour, il était nécessaire de réparer les sauvegardes dans tous les projets, car littéralement partout quelque chose était insignifiant ou sérieusement cassé.

Ensuite, quelqu'un pourrait penser qu'un ingĂ©nieur dĂ©diĂ© dĂ©diĂ© Ă  cela devrait faire des sauvegardes. Certes, il sera aussi barbu et sĂ©vĂšre que possible, et de son regard, les sauvegardes sont rĂ©parĂ©es instantanĂ©ment, pendant qu'il sirote calmement du cafĂ©. Et cette idĂ©e peut ĂȘtre vraie en quelque sorte ... Mais il y a toujours un mais. Tout le monde ne peut pas se permettre de rĂ©parer et de surveiller les sauvegardes 24 heures sur 24, et plus encore - un ingĂ©nieur affectĂ© Ă  ces fins. Nous sommes juste sĂ»rs qu'il vaut mieux passer ces 2 heures par jour sur quelque chose de plus productif et utile. Par consĂ©quent, nous sommes passĂ©s Ă  la recherche de solutions alternatives qui «fonctionnent tout simplement».

Borg comme une nouvelle façon


La recherche d'autres options Open Source s'est étalée dans le temps, il est donc difficile d'estimer le coût total, mais à un moment donné (l'année derniÚre), notre attention s'est tournée vers le « héros de l' occasion» - BorgBackup (ou simplement Borg). Cela a été en partie facilité par l'expérience réelle de son utilisation par l'un de nos ingénieurs (sur le lieu de travail précédent).

Borg est Ă©crit en Python (la version> = 3.4.0 est requise) et le code exigeant en termes de performances (compression, chiffrement, etc.) est implĂ©mentĂ© en C / Cython. DistribuĂ© sous une licence BSD gratuite (3 clauses). Il prend en charge de nombreuses plates-formes, y compris Linux, * BSD, macOS, ainsi qu'au niveau expĂ©rimental Cygwin et sous-systĂšme Linux de Windows 10. Pour installer BorgBackup, des packages sont disponibles pour les distributions Linux populaires et d'autres systĂšmes d'exploitation, ainsi que des codes source, qui peuvent Ă©galement ĂȘtre installĂ©s via pip, - des informations plus dĂ©taillĂ©es Ă  ce sujet peuvent ĂȘtre trouvĂ©es dans la documentation du projet .

Pourquoi Borg nous a-t-il tant corrompu? Voici ses principaux avantages:

  • DĂ©duplication : rĂ©elle et trĂšs efficace (exemples ci-dessous). Les fichiers d'un mĂȘme rĂ©fĂ©rentiel Borg (c'est-Ă -dire un rĂ©pertoire spĂ©cial dans un format spĂ©cifique Ă  Borg) sont divisĂ©s en blocs de n mĂ©gaoctets et les blocs Borg rĂ©pĂ©tĂ©s sont dĂ©dupliquĂ©s. La dĂ©duplication se produit prĂ©cisĂ©ment avant la compression.
  • Compression : aprĂšs dĂ©duplication, les donnĂ©es sont Ă©galement compressĂ©es. DiffĂ©rents algorithmes de compression sont disponibles: lz4, lzma, zlib, zstd. La fonctionnalitĂ© standard de toute sauvegarde, mais ce n'est pas moins utile.
  • Travail sur SSH : sauvegardes Borg sur un serveur distant via SSH. CĂŽtĂ© serveur, il suffit d'installer Borg et c'est tout! À partir d'ici, des avantages tels que la sĂ©curitĂ© et le chiffrement suivent immĂ©diatement. Vous ne pouvez configurer l'accĂšs que par des clĂ©s et, de plus, l'exĂ©cution par Borg d'une seule de ses commandes lors de son entrĂ©e sur le serveur. Par exemple, comme ceci:

     $ cat .ssh/authorized_keys command="/usr/bin/borg serve" ssh-rsa AAAAB3NzaC1yc
 
  • Il est livrĂ© Ă  la fois en PPA (nous utilisons principalement Ubuntu) et en binaire statique . Borg sous la forme d'un binaire statique permet de l'exĂ©cuter presque partout oĂč il y a au moins une glibc minimalement moderne. (Mais pas partout - par exemple, il n'a pas Ă©tĂ© possible de dĂ©marrer sur CentOS 5.)
  • Nettoyage flexible des anciennes sauvegardes . Vous pouvez dĂ©finir le stockage des n derniĂšres sauvegardes et 2 sauvegardes par heure / jour / semaine. Dans ce dernier cas, la derniĂšre sauvegarde en fin de semaine sera laissĂ©e. Les conditions peuvent ĂȘtre combinĂ©es en stockant 7 sauvegardes quotidiennes pour les 7 derniers jours et 4 sauvegardes hebdomadaires.

La transition vers Borg a commencĂ© lentement sur de petits projets. Au dĂ©but, il s'agissait de simples scripts cron qui faisaient leur travail tous les jours. Cela a durĂ© environ six mois. Pendant ce temps, nous avons dĂ» obtenir des sauvegardes plusieurs fois ... et il s'est avĂ©rĂ© que Borg n'avait pas du tout besoin d'ĂȘtre rĂ©parĂ© littĂ©ralement! Pourquoi? Parce que le principe simple fonctionne ici: "Plus le mĂ©canisme est simple, moins il y aura de cassures."

Pratique: comment sauvegarder avec Borg?


Prenons un exemple simple de création d'une sauvegarde:

  1. Téléchargez la derniÚre version binaire sur le serveur de sauvegarde et la machine que nous allons sauvegarder à partir du référentiel officiel :

     sudo wget https://github.com/borgbackup/borg/releases/download/1.1.6/borg-linux64 -O /usr/local/bin/borg sudo chmod +x /usr/local/bin/borg 

    Remarque : Si vous utilisez une machine locale pour le test Ă  la fois en tant que source et en tant que rĂ©cepteur, alors toute la diffĂ©rence ne sera que dans l'URI, que nous transmettrons, mais nous nous souvenons que la sauvegarde doit ĂȘtre stockĂ©e sĂ©parĂ©ment, et non sur la mĂȘme machine.
  2. Sur le serveur de sauvegarde, créez l'utilisateur borg :

     sudo useradd -m borg 

    Simple: sans groupes et avec un shell standard, mais toujours avec un répertoire personnel.
  3. Une clé SSH est générée sur le client:

     ssh-keygen 
  4. Sur le serveur, ajoutez la clé générée à l'utilisateur borg :

     mkdir ~borg/.ssh echo 'command="/usr/local/bin/borg serve" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNdaDfqUUf/XmSVWfF7PfjGlbKW00MJ63zal/E/mxm+vJIJRBw7GZofe1PeTpKcEUTiBBEsW9XUmTctnWE6p21gU/JNU0jITLx+vg4IlVP62cac71tkx1VJFMYQN6EulT0alYxagNwEs7s5cBlykeKk/QmteOOclzx684t9d6BhMvFE9w9r+c76aVBIdbEyrkloiYd+vzt79nRkFE4CoxkpvptMgrAgbx563fRmNSPH8H5dEad44/Xb5uARiYhdlIl45QuNSpAdcOadp46ftDeQCGLc4CgjMxessam+9ujYcUCjhFDNOoEa4YxVhXF9Tcv8Ttxolece6y+IQM7fbDR' > ~borg/.ssh/authorized_keys chown -R borg:borg ~borg/.ssh bin local / / borg servir" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNdaDfqUUf / XmSVWfF7PfjGlbKW00MJ63zal / E / MXM + vJIJRBw7GZofe1PeTpKcEUTiBBEsW9XUmTctnWE6p21gU / JNU0jITLx + vg4IlVP62cac71tkx1VJFMYQN6EulT0alYxagNwEs7s5cBlykeKk / QmteOOclzx684t9d6BhMvFE9w9r + c76aVBIdbEyrkloiYd + vzt79nRkFE4CoxkpvptMgrAgbx563fRmNSPH8H5dEad44 / Xb5uARiYhdlIl45QuNSpAdcOadp46ftDeQCGLc4CgjMxessam + 9ujYcUCjhFDNOoEa4YxVhXF9Tcv8Ttxolece6y + IQM7fbDR'> ~ borg / .ssh mkdir ~borg/.ssh echo 'command="/usr/local/bin/borg serve" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNdaDfqUUf/XmSVWfF7PfjGlbKW00MJ63zal/E/mxm+vJIJRBw7GZofe1PeTpKcEUTiBBEsW9XUmTctnWE6p21gU/JNU0jITLx+vg4IlVP62cac71tkx1VJFMYQN6EulT0alYxagNwEs7s5cBlykeKk/QmteOOclzx684t9d6BhMvFE9w9r+c76aVBIdbEyrkloiYd+vzt79nRkFE4CoxkpvptMgrAgbx563fRmNSPH8H5dEad44/Xb5uARiYhdlIl45QuNSpAdcOadp46ftDeQCGLc4CgjMxessam+9ujYcUCjhFDNOoEa4YxVhXF9Tcv8Ttxolece6y+IQM7fbDR' > ~borg/.ssh/authorized_keys chown -R borg:borg ~borg/.ssh 
  5. Nous initialisons le dépÎt borg sur le serveur à partir du client:

     ssh borg@172.17.0.3 hostname #     borg init -e none borg@172.17.0.3:MyBorgRepo 

    Le commutateur -e est utilisĂ© pour sĂ©lectionner la mĂ©thode de chiffrement pour le rĂ©fĂ©rentiel (oui, vous pouvez Ă©galement chiffrer chaque rĂ©fĂ©rentiel avec votre mot de passe!). Dans ce cas, car ceci est un exemple, nous n'utilisons pas de cryptage. MyBorgRepo est le nom du rĂ©pertoire dans lequel le dĂ©pĂŽt de borg sera (vous n'avez pas besoin de le crĂ©er Ă  l'avance - Borg fera tout lui-mĂȘme).
  6. Lancez la premiĂšre sauvegarde Ă  l'aide de Borg:

     borg create --stats --list borg@172.17.0.3:MyBorgRepo::"MyFirstBackup-{now:%Y-%m-%d_%H:%M:%S}" /etc /root 

    À propos des clĂ©s:
    • --stats et --list nous donnent des statistiques sur la sauvegarde et les fichiers qui y sont entrĂ©s;
    • borg@172.17.0.3:MyBorgRepo - tout est clair ici, c'est notre serveur et notre rĂ©pertoire. Et quelle est la prochaine Ă©tape pour la magie? ..
    • ::"MyFirstBackup-{now:%Y-%m-%d_%H:%M:%S}" est le nom de l'archive Ă  l'intĂ©rieur du rĂ©fĂ©rentiel. C'est arbitraire, mais nous adhĂ©rons au format _-timestamp (horodatage au format Python).

Et ensuite? Bien sûr, voyez ce qui est entré dans notre sauvegarde! Liste des archives à l'intérieur du référentiel:

 borg@b3e51b9ed2c2:~$ borg list MyBorgRepo/ Warning: Attempting to access a previously unknown unencrypted repository! Do you want to continue? [yN] y MyFirstBackup-2018-08-04_16:55:53 Sat, 2018-08-04 16:55:54 [89f7b5bccfb1ed2d72c8b84b1baf477a8220955c72e7fcf0ecc6cd5a9943d78d] 

Nous voyons une sauvegarde avec un horodatage et comment Borg nous demande si nous voulons vraiment accéder à un référentiel non crypté auquel nous n'avons jamais été auparavant.

Nous regardons la liste des fichiers:

 borg list MyBorgRepo::MyFirstBackup-2018-08-04_16:55:53 

Nous obtenons le fichier de la sauvegarde (vous pouvez aussi tout le répertoire):

 borg@b3e51b9ed2c2:~$ borg extract MyBorgRepo::MyFirstBackup-2018-08-04_16:55:53 etc/hostname borg@b3e51b9ed2c2:~$ ll etc/hostname -rw-r--r-- 1 borg borg 13 Aug 4 16:27 etc/hostname 

FĂ©licitations, votre premiĂšre sauvegarde Borg est prĂȘte!

Pratique: automatisez ceci [avec GitLab]!


AprÚs avoir enveloppé tout cela dans des scripts, nous avons configuré manuellement les sauvegardes de maniÚre similaire sur environ 40 hÎtes. Réalisant que Borg fonctionne vraiment, ils ont commencé à y transférer de plus en plus de projets ...

Et ici, nous sommes confrontĂ©s Ă  ce qui se trouve Ă  Bareos, mais pas Ă  Borg! À savoir: WebUI ou une sorte de lieu centralisĂ© pour configurer les sauvegardes. Et nous espĂ©rons vraiment qu'il s'agit d'un phĂ©nomĂšne temporaire, mais jusqu'Ă  prĂ©sent, nous avons dĂ» rĂ©soudre quelque chose. Googler les outils finis et se rĂ©unir dans une vidĂ©oconfĂ©rence, nous nous sommes mis au travail. C'Ă©tait une excellente idĂ©e d'intĂ©grer Borg Ă  nos services internes, comme nous l'avons fait auparavant avec Bacula (Bacula lui-mĂȘme a retirĂ© la liste des tĂąches de notre API centralisĂ©e, Ă  laquelle nous avions notre propre interface intĂ©grĂ©e avec d'autres paramĂštres de projet). Nous avons rĂ©flĂ©chi Ă  la façon de le faire, dĂ©crit un plan de comment et oĂč le construire, mais ... Des sauvegardes normales sont nĂ©cessaires maintenant, mais il n'y a aucun endroit pour prendre des plans de temps grandioses. Que faire

Les questions et les exigences étaient approximativement les suivantes:

  • Que faut-il utiliser comme gestion de sauvegarde centralisĂ©e?
  • Que peut faire n'importe quel administrateur Linux?
  • Que peut mĂȘme un gestionnaire qui montre un calendrier de sauvegarde aux clients peut comprendre et configurer?
  • Que fait quotidiennement une tĂąche planifiĂ©e sur votre systĂšme?
  • Qu'est-ce qui ne sera pas difficile Ă  configurer et ne cassera pas? ..

La rĂ©ponse Ă©tait Ă©vidente: c'est le bon vieux crond, qui accomplit hĂ©roĂŻquement son devoir tous les jours. C'est simple. Il ne gĂšle pas. MĂȘme le gestionnaire qui est d'Unix Ă  «vous» peut y remĂ©dier.

Alors crontab, mais oĂč gardez-vous tout cela? Est-ce Ă  chaque fois d'aller sur la machine du projet et d'Ă©diter le fichier avec vos mains? Bien sĂ»r que non. Nous pouvons mettre notre planning dans le rĂ©fĂ©rentiel Git et configurer GitLab Runner, qui par commit le mettra Ă  jour sur l'hĂŽte.

Remarque : C'est GitLab qui a été choisi comme outil d'automatisation, car il est pratique pour la tùche et dans notre cas, il est presque partout. Mais je dois dire qu'il n'est nullement une nécessité.

Vous pouvez étendre crontab pour les sauvegardes à l'aide d'un outil d'automatisation familier ou généralement manuellement (sur de petits projets ou des installations domestiques).

Voici donc ce dont vous avez besoin pour une automatisation simple:

1. GitLab et un référentiel , dans lequel pour commencer il y aura deux fichiers:

  • schedule - calendrier de sauvegarde
  • borg_backup_files.sh - un script simple pour sauvegarder des fichiers (comme dans l'exemple ci-dessus).

Exemple d' schedule :

 # WARNING! CRONTAB MANAGED FROM GITLAB CI RUNNER IN ${CI_PROJECT_URL} # CI_COMMIT_SHA: ${CI_COMMIT_SHA} # Branch/tag: ${CI_COMMIT_REF_NAME} # Timestamp: ${TIMESTAMP} PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # MyRemoteHost 0 0 * * * ${CI_PROJECT_DIR}/borg_backup_files.sh 'SYSTEM /etc,/opt' 

Les variables CI sont utilisées pour vérifier que la mise à jour de crontab a réussi et CI_PROJECT_DIR est le répertoire dans lequel le référentiel se trouvera aprÚs le clonage du runner. La derniÚre ligne indique que la sauvegarde est effectuée tous les jours à minuit.

Exemple borg_backup_files.sh :

 #!/bin/bash BORG_SERVER="borg@10.100.1.1" NAMEOFBACKUP=${1} DIRS=${2} REPOSITORY="${BORG_SERVER}:$(hostname)-${NAMEOFBACKUP}" borg create --list -v --stats \ $REPOSITORY::"files-{now:%Y-%m-%d_%H:%M:%S}" \ $(echo $DIRS | tr ',' ' ') || \ echo "borg create failed" 

Le premier argument ici est le nom de la sauvegarde, et le second est la liste des rĂ©pertoires de la sauvegarde, sĂ©parĂ©s par des virgules. À strictement parler, une liste peut Ă©galement ĂȘtre un ensemble de fichiers distincts.

2. GitLab Runner , fonctionnant sur la machine à sauvegarder et bloqué uniquement pour les travaux de ce référentiel.

3. Le script CI lui - mĂȘme , implĂ©mentĂ© par le .gitlab-ci.yml :

 stages: - deploy Deploy: stage: deploy script: - export TIMESTAMP=$(date '+%Y.%m.%d %H:%M:%S') - cat schedule | envsubst | crontab - tags: - borg-backup 

4. La clé SSH pour l'utilisateur gitlab-runner ayant accÚs au serveur de gitlab-runner (dans l'exemple, il s'agit de 10.100.1.1). Par défaut, il doit se trouver dans le .ssh/id_rsa ( gitlab-runner ).

5. L'utilisateur borg sur le mĂȘme 10.100.1.1 avec accĂšs uniquement Ă  la commande borg serve :

 $ cat .ssh/authorized_keys command="/usr/bin/borg serve" ssh-rsa AAAAB3NzaC1yc2EAA... 

Maintenant, lorsque vous vous engagez dans le référentiel Runner, il remplira le contenu de crontab. Et lorsque le temps de réponse du cron arrive, une sauvegarde des répertoires /etc et /opt sera effectuée, qui sera sur le serveur de sauvegarde dans le MyHostname-SYSTEM du serveur 10.100.1.1.



Au lieu d'une conclusion: que pouvez-vous faire d'autre?


Bien entendu, l'utilisation de Borg Ă  cet Ă©gard ne s'arrĂȘte pas lĂ . Voici quelques idĂ©es pour une mise en Ɠuvre ultĂ©rieure, dont certaines que nous avons dĂ©jĂ  mises en Ɠuvre Ă  la maison:

  • Ajoutez des scripts universels pour diffĂ©rentes sauvegardes qui, Ă  la fin de l'exĂ©cution, exĂ©cutent borg_backup_files.sh , visant le rĂ©pertoire avec le rĂ©sultat de leur travail. Par exemple, vous pouvez sauvegarder PostgreSQL (pg_basebackup), MySQL (innobackupex), GitLab (travail de rĂąteau intĂ©grĂ©, crĂ©ation d'une archive).
  • HĂŽte central avec calendrier de sauvegarde . Ne pas configurer sur chaque hĂŽte GitLab Runner? Laissez-le ĂȘtre seul sur le serveur de sauvegarde et crontab au dĂ©marrage transfĂšre le script de sauvegarde sur la machine et l'exĂ©cute lĂ -bas. Pour cela, bien sĂ»r, vous aurez besoin de l'utilisateur borg sur la machine client et ssh-agent , afin de ne pas disposer la clĂ© du serveur de sauvegarde sur chaque machine.
  • Suivi OĂč sans lui! Les alertes concernant une sauvegarde incorrecte doivent ĂȘtre.
  • Suppression du dĂ©pĂŽt borg des anciennes archives. MalgrĂ© une bonne dĂ©duplication, les anciennes sauvegardes doivent encore ĂȘtre nettoyĂ©es. Pour ce faire, vous pouvez appeler borg prune Ă  la fin du script de sauvegarde.
  • Interface Web au planning. Cela vous sera utile si l'Ă©dition de crontab Ă  la main ou dans l'interface Web ne vous semble pas solide / inconfortable.
  • Diagrammes Ă  secteurs . Quelques graphiques pour une reprĂ©sentation visuelle du pourcentage de sauvegardes rĂ©ussies, de leur temps d'exĂ©cution, de la largeur du canal "mangĂ©". Pas Ă©tonnant que j'aie Ă©crit qu'il n'y a pas assez de WebUI, comme dans Bareos ...
  • Actions simples que je souhaiterais recevoir par un bouton: lancement d'une sauvegarde Ă  la demande, restauration sur une machine, etc.

Et à la toute fin, je voudrais ajouter un exemple de l'efficacité de la déduplication sur une véritable sauvegarde de travail des fichiers PostgreSQL WAL dans un environnement de production:

 borg@backup ~ $ borg info PROJECT-PG-WAL Repository ID: 177eeb28056a60487bdfce96cfb33af1c186cb2a337226bc3d5380a78a6aeeb6 Location: /mnt/borg/PROJECT-PG-WAL Encrypted: No Cache: /mnt/borg/.cache/borg/177eeb28056a60487bdfce96cfb33af1c186cb2a337226bc3d5380a78a6aeeb6 Security dir: /mnt/borg/.config/borg/security/177eeb28056a60487bdfce96cfb33af1c186cb2a337226bc3d5380a78a6aeeb6 ------------------------------------------------------------------------------ Original size Compressed size Deduplicated size All archives: 6.68 TB 6.70 TB 19.74 GB Unique chunks Total chunks Chunk index: 11708 3230099 

Ce sont 65 jours de sauvegarde des fichiers WAL qui sont effectués toutes les heures. Lors de l'utilisation de Bacula / Bareos, c'est-à-dire sans déduplication, nous obtiendrions 6,7 To de données. Pensez-y: nous pouvons nous permettre de stocker prÚs de 7 téraoctets de données transmises via PostgreSQL, seulement 20 Go d'espace réellement occupé.

PS


Lisez aussi dans notre blog:

Source: https://habr.com/ru/post/fr420055/


All Articles