Cette documentation est destinée à la gestion des backups par les clients, principalement des machines virtuelles et HAG.
Les admins système de Koumbit voudront plutôt consulter les pages suivantes:
BackupMaintenance - maintenance quotidienne
BackupConfiguration - configuration du serveur de backup
BackupService - suivi administratif
Contents
Machines virtuelles
Si vous avez un serveur virtuel chez Koumbit et que vous avez un forfait de sauvegardes hebdomadaires, vous avez donc des backups RdiffBackup configurés avec BackupNinja.
Ne pas toucher aux fichiers de configuration de backupninja dans /etc/backup.d. Ils seraient ré-écrits par Puppet dans l'heure suivante et les changements seraient perdus!
Avant d'effectuer ce type d'opérations, assurez-vous d'avoir l'espace nécessaire!
borg
Information sur les points de backup
Lister les backups:
$ sudo borg list ssh://backup-example.koumbit.net@backup.koumbit.net/srv/example.koumbit.net/borg ... 2020-06-01T05:00:04 Mon, 2020-06-01 05:00:06 [03db2303c044b0d1fc50be19190c3ce566b9f912c994e37dce3c445ef63cabdc] 2020-06-02T05:00:04 Tue, 2020-06-02 05:00:06 [e3833850d9969e2b40135e2fac4f9d88d80e0b664b92f0251417fe91cb4f854f]
Lister les informations de l'archive complète:
$ sudo borg info ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg ... Repository ID: 9bf455a159d5d3fb15e6b2e385ed4d4ffc7f46ff4ddde191afecd14046ce086c Location: ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.komubit.net/borg Encrypted: No Cache: /root/.cache/borg/9bf455a159d5d3fb15e6b2e385ed4d4ffc7f46ff4ddde191afecd14046ce086c Security dir: /root/.config/borg/security/9bf455a159d5d3fb15e6b2e385ed4d4ffc7f46ff4ddde191afecd14046ce086c ------------------------------------------------------------------------------ Original size Compressed size Deduplicated size All archives: 5.63 TB 5.24 TB 573.24 GB Unique chunks Total chunks Chunk index: 587053 5766243
Lister les informations d'un backup en particulier:
$ sudo borg info ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg::2022-05-04T01:27:06 ... Archive name: 2022-05-04T01:27:06 Archive fingerprint: bc0efe69a527059d9a65ab55524d1ce239291a163a7d9a0b94cca19bea2b7d82 Comment: Hostname: example Username: root Time (start): Wed, 2022-05-04 01:27:08 Time (end): Wed, 2022-05-04 01:32:00 Duration: 4 minutes 51.88 seconds Number of files: 545293 Command line: /usr/bin/borg create --stats --compression lz4 --exclude /dev --exclude '/home/*/.aMule' --exclude '/home/*/.beagle' --exclude '/home/*/.gnupg' --exclude '/home/*/.local/share/Trash' --exclude '/home/*/.thumbnails' --exclude '/home/*/.Trash' --exclude '/home/*/gtk-gnutella-downloads' --exclude /proc --exclude /run --exclude /sys --exclude /tmp --exclude /var/cache --exclude '/var/lib/ganeti/locks-*.tmp' --exclude '/var/lib/ganeti/queue/*' --exclude /var/lib/mysql --exclude /var/lib/postgresql --exclude /var/log --exclude /var/run --exclude /var/tmp 'ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg::{now:%Y-%m-%dT%H:%M:%S}' / Utilization of maximum supported archive size: 0% ------------------------------------------------------------------------------ Original size Compressed size Deduplicated size This archive: 797.45 GB 742.22 GB 596.15 MB All archives: 5.63 TB 5.24 TB 573.24 GB Unique chunks Total chunks Chunk index: 587053 5766243
Accéder aux fichier dans un backup
Mounter un backup spécifique en FUSE:
$ sudo su $ tmux $ mktemp -d /tmp/tmp.R7fMCamDDq $ borg mount ssh://backup-example.koumbit.net@backup.koumbit.net/srv/example.koumbit.net/borg::2020-06-02T05:00:04 /tmp/tmp.R7fMCamDDq
Note Faire ça dans un tmux. Si le backup est large, le processus peut consommer du temps et mémoire important. (~16G RAM et 25min pour 2To)
Par la suite les fichiers peuvent être copier normalement. Eg. rsync en local, cp -r, etc.
Démonter un dossier borg:
sudo borg umount /tmp/tmp.R7fMCamDDq
Extraire un fichier précis d'un backup
En admettant que le backup nommé borg est fait sur /srv/mon_dossier_backups/ et qu'on souhaite récupérer /srv/mon_dossier_backups/mon_site/mon_fichier.php dans le dossier courant:
sudo borg extract ssh://backup-example.koumbit.net@backup.koumbit.net/backup/example.koumbit.net//borg::2022-05-04T01:27:06 ./srv/mon_dossier_backups/mon_site/mon_fichier.php
rdiff-backup
Les backups sont stockés sur une machine accessible sous backup.koumbit.net. On assume ici que votre machine se nomme foo.koumbit.net, ce qui vous donne un nom d'utilisateur backup-foo.koumbit.net@backup.koumbit.net. Vous pouvez ensuite construire l'URL vers vos backups rdiff en ajoutant :: et le chemin vers les backups, donc par exemple: backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/.
Quelques exemples:
- Obtenir les variables de configuration pertinentes pour un serveur
cat /etc/backup.d/90_default-rdiff-backup.rdiff | grep -E "directory = |host =| user ="
- TODO
- faire une ligne qui permet d'extraire ces valeurs et de rouler la commande de backup sur CWD
- Lister l'historique des backups
$ sudo rdiff-backup -l backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/ Found 7 increments: increments.2014-12-30T03:01:50-05:00.dir Tue Dec 30 03:01:50 2014 increments.2014-12-31T03:02:04-05:00.dir Wed Dec 31 03:02:04 2014 increments.2015-01-01T03:02:00-05:00.dir Thu Jan 1 03:02:00 2015 increments.2015-01-02T03:01:45-05:00.dir Fri Jan 2 03:01:45 2015 increments.2015-01-03T03:02:04-05:00.dir Sat Jan 3 03:02:04 2015 increments.2015-01-04T03:01:47-05:00.dir Sun Jan 4 03:01:47 2015 increments.2015-01-05T03:01:32-05:00.dir Mon Jan 5 03:01:32 2015 Current mirror: Tue Jan 6 03:01:36 2015
- Inclure l'espace utilisé dans le listing (plus long)
$ sudo rdiff-backup -l --list-increment-sizes backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/
- Restaurer un répertoire
$ sudo rdiff-backup -r 2015-01-05T03:01:32-05:00 backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/home/antoine antoine
Ceci va extraire le répertoire personnel du user antoine tel qu'il était le 5 janvier 2015 à 3h du matin dans le répertoire courant.
- Lister le contenu d'un backup
rdiff-backup --list-at-time 48h backup-foo.koumbit.net@backup.koumbit.net::/backup/foo.koumbit.net/rdiff-backup/
Noter qu'il est important d'utiliser sudo car seule la clé SSH du user root a accès au serveur de backups. Notez également les différents formats d'heures qui peuvent être utilisés, par exemple now (backup le plus récent), 48h (il y a deux jours) ou 2015-01-05T03:01:32-05:00 (date précise du backup).
Then sometimes you have to merge the directories you recovered with the ones that are still there. Especially with Mail, or example. Here is one I did:
$ ls -la | grep Maildir drwxr-xr-x 11 foo admins 4096 nov 5 23:28 Maildir $ sudo rsync -Pavvu --dry-run Maildir/ /var/alternc/mail/m/machin.foo_dude.ca/Maildir/
Pay attention to the / at the end of the directory paths, rsync cares about those. And then run it without the dry-run for realzies. Then don't forget to go properly chown all the recovered files!
$ sudo ls -la /var/alternc/mail/m/machin.foo_dude.ca/Maildir/ drwxr-xr-x 11 foo admins 4096 nov 5 23:28 . drwxr-xr-x 3 2407 vmail 4096 jun 28 2010 .. $ sudo chown -R 2407:vmail /var/alternc/mail/m/machin.foo_dude.ca/Maildir/
HAG
Documentation manquante: expliquer les backups mysql et qu'on charge pour les restore...
Procédure pour restaurer les backups des comptes
Tel qu'indiqué sur notre site Web:
Si vous le désirez, nous pouvons donc rétablir vos données à l'intérieur de ce délai. La restauration des données est sélective, et peut varier selon la complexité du site et de la restauration. Un frais de 75$ sera facturé pour une tâche de trente minutes et moins; au-delà de trente minutes, notre taux horaire de 120$/h s'appliquera, et ce pour un minimum de 1h.
Fichiers et NFS
Les fichier sont sur le NFS donc sur orion.koumbit.net dans /var/alternc/html/m/moncompte et les backup se trouve sur backup.koumbit.net dans /srv/backup/orion.koumbit.net/ I faut donc un accès root au serveur NFS
Le repertoire /var/alternc/html est séparé en 7
- html-a-b
- html-c-d
- html-e-f
- html-g-m
- html-n-o
- html-p-q
- html-r-z0-9
D'abord vérifier s'il y a des backups présent en envoyant la commande à partir du client (orion.koumbit.net)
root@orion:/# rdiff-backup -l backup-orion.koumbit.net@backup.koumbit.net::/backup/orion.koumbit.net/html-t-z0-9/srv/alternc/html/t/test Found 2 increments: test.2017-03-25T14:37:46-04:00.dir Sat Mar 25 14:37:46 2017 test.2017-03-27T13:27:52-04:00.dir Mon Mar 27 13:27:52 2017 Current mirror: Wed Mar 29 13:14:46 2017
On peut ensuite restaurer le bon incrément
nous somme le 30 donc, on va prendre le backup d'il y a 3 jours, ou 72h
# La commande ressemble à ça! # root@orion:/# rdiff-backup -r <TIME> backup-orion.koumbit.net@backup.koumbit.net::/backup/orion.koumbit.net/<DIRECTORY TO RESTORE> <TARGET DIRECTORY> root@orion:/# rdiff-backup -r 72 backup-orion.koumbit.net@backup.koumbit.net::/backup/orion.koumbit.net/html-t-z0-9/srv/alternc/html/t/test /var/alternc/t/test
Attention de ne pas restaurer ça dans son home ou de vérifier la taille du backup au préalable étant donné que /dev/md0 ne fait que 4.5G. Il vaut mieux restaurer dans le répertoire alternc concerné sous /srv/
Bases de données
voir ici BackupMaintenance#Databases
Notre serveur MySQL roule sur geras, avec une réplication sur ganymede. Depuis 2018 il semblerait que les backups se font seulement depuis ganymede pour éviter de surcharger la DB master. Donc depuis alexandrie (aka backup.koumbit.net):
$ ssh alexandrie.koumbit.net # check backups $ sudo rdiff-backup -l \ /backup/ganymede.koumbit.net/rdiff-backup/srv/backup-mysql/sqldump/clientABC.sql.gz Found 6 increments: clientABC.sql.gz.2021-08-19T01:26:53-04:00.diff Thu Aug 19 01:26:53 2021 clientABC.sql.gz.2021-08-20T01:24:03-04:00.diff Fri Aug 20 01:24:03 2021 clientABC.sql.gz.2021-08-21T01:26:05-04:00.diff Sat Aug 21 01:26:05 2021 clientABC.sql.gz.2021-08-22T01:51:00-04:00.diff Sun Aug 22 01:51:00 2021 clientABC.sql.gz.2021-08-23T01:25:29-04:00.diff Mon Aug 23 01:25:29 2021 clientABC.sql.gz.2021-08-24T01:25:57-04:00.diff Tue Aug 24 01:25:57 2021 Current mirror: Wed Aug 25 01:36:45 2021 # restore oldest $ sudo rdiff-backup \ -v 5 \ -r 6D /backup/ganymede.koumbit.net/rdiff-backup/srv/backup-mysql/sqldump/clientABC.sql.gz \ /home/john/clientABC.sql.gz # send backup to mysql $ scp /home/john/clientABC.sql.gz mysql.koumbit.net:/home/john # connect to mysql master server and restore DB from there # replication is one way, if you don't restore on the master it won't work! $ ssh mysql.koumbit.net $ gunzip -c clientABC.sql.gz | sudo mysql -h localhost -p clientABC
Courriels
Voir ici BackupMaintenance#Emails