backup
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
backup [2020/05/14 21:26] – capslock | backup [2021/04/08 18:50] – gde | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
# Sauvegardes | # Sauvegardes | ||
- | ## Intro | + | </ |
+ | |||
+ | < | ||
+ | |||
+ | ## Mise en place | ||
+ | |||
+ | ### Intro | ||
Les backups sont effectués à l'aide de [borgbackup](https:// | Les backups sont effectués à l'aide de [borgbackup](https:// | ||
- | Les secrets sont stockés dans un trousseau Keyringer. Comme le niveau des prérequis à l' | + | Les secrets sont stockés dans un trousseau Keyringer. Comme le niveau des prérequis à l' |
```bash | ```bash | ||
Ligne 16: | Ligne 22: | ||
Il est important de noter que l' | Il est important de noter que l' | ||
- | ## étape 1 : ajouter aux serveurs de sauvegarde la nouvelle machine à sauvegarder | ||
- | Mettre à jour la variable | + | ### Étape 1 : configurer les sauvegardes de la machine que l'on veut sauvegarder |
- | ```yaml | + | Editez ou créez le fichier de configuration dans le `host_vars` de votre machine |
- | borg_server_backup_clients: | + | |
- | - name: "" | + | |
- | ssh_pubkey: "" | + | |
- | ``` | + | |
- | ## étape 2 : vérifier que tous les serveurs de backups sont dans le groupe backup_servers | + | </ |
- | Dans `ansible_hosts` vérifier que le groupe `backup_servers` connait bien toutes les machines | + | <WRAP center round info 60%> |
+ | Cet exemple sauvegarde vers UN serveur, mais on peut aussi choisir | ||
+ | </ | ||
- | ## étape 3 : jouer le role sur les backup_servers | ||
- | ```bash | + | < |
- | ansible-playbook --diff -l backup_servers -t borg playbook-fma.yml | + | |
- | ``` | + | |
- | ## troisième étape: configurer les sauvegardes de la machine | ||
- | |||
- | Editez ou créez le fichier de configuration dans le `host_vars` de votre machine (par exemple `host_vars/ | ||
```yaml | ```yaml | ||
- | # par défaut, on sauvegarde les chemins spécifiés dans la variable borg_clients_common_include_paths de group_vars/ | ||
- | toto_supplementary_include_paths: | ||
- | - "/ | ||
- | - " | ||
- | |||
borg_client_targets: | borg_client_targets: | ||
- | # remote_unix_user doit avoir la même valeur que ce que vous avez mis dans borg_server_backup_clients.name dans le fichier group_vars/ | + | |
- | | + | |
- | | + | |
- | repository_name: " | + | |
- | # serveur où on souhaite envoyer nos sauvegardes. ce serveur doit être membre du groupe ansible " | + | |
remote_server: | remote_server: | ||
- | # chemins à sauvegarder, on veut les chemins " | + | |
- | | + | |
- | # liste de fichiers à exclude, ici on a choisi d' | + | # (en plus des chemins |
+ | | ||
+ | - "/ | ||
+ | - " | ||
+ | |||
+ | # FACULTATIF : liste de fichiers/ | ||
+ | # par défaut, utilisera la valeur | ||
exclude_patterns: | exclude_patterns: | ||
- | # ici on a une liste de commandes à exécuter avant de lancer la sauvegarde. | + | |
+ | | ||
+ | # dans cet exemple, | ||
before_backup_commands: | before_backup_commands: | ||
- "sudo -i -u postgres pg_dump -U postgres -F p etherpad > ~postgres/ | - "sudo -i -u postgres pg_dump -U postgres -F p etherpad > ~postgres/ | ||
- | | + | |
+ | | ||
+ | # typiquement on fera un peu de nettoyage (supprimer les dump de base de données) | ||
after_backup_commands: | after_backup_commands: | ||
- "rm -f ~postgres/ | - "rm -f ~postgres/ | ||
- | | + | |
+ | | ||
+ | # Il est recommandé de réfléchir à un horaire où la machine est au repos | ||
+ | # syntaxe | ||
when: | when: | ||
- | month: " | ||
- | day: " | ||
hour: " | hour: " | ||
minute: " | minute: " | ||
``` | ``` | ||
- | ## étape 4 : ajouter la machine à sauvegarder au groupe borg_clients | + | ### Étape 2 : ajouter la machine à sauvegarder au groupe borg_clients |
Dans `ansible_hosts` ajouter la machine à sauvegarder au groupe `borg_clients`. | Dans `ansible_hosts` ajouter la machine à sauvegarder au groupe `borg_clients`. | ||
- | ## étape 5 : jouer le role sur la machine à sauvegarder | + | ### Étape 3 : jouer le rôle sur la machine à sauvegarder |
```bash | ```bash | ||
- | ansible-playbook --diff -l toto.faimaison.net -t borg playbook-fma.yml | + | ansible-playbook |
``` | ``` | ||
+ | |||
+ | Et commiter les fichiers de cléfs: | ||
+ | |||
+ | - Keyringer: `passwords/ | ||
+ | - SSH: `ssh/ | ||
+ | |||
+ | ### Étape 4: ajouter aux serveurs de sauvegarde la nouvelle machine à sauvegarder | ||
+ | |||
+ | Mettre à jour la variable | ||
+ | |||
+ | ```yaml | ||
+ | borg_server_backup_clients: | ||
+ | - name: " | ||
+ | ssh_pubkey: "" | ||
+ | ``` | ||
+ | |||
+ | ### Étape 5 : vérifier que tous les serveurs de backups sont dans le groupe backup_servers | ||
+ | |||
+ | Dans `ansible_hosts` vérifier que le groupe `backup_servers` connait bien toutes les machines de backups de faimaison. | ||
+ | |||
+ | ### Étape 6 : jouer le role sur les backup_servers | ||
</ | </ | ||
+ | <WRAP center round important 60%> | ||
+ | Il faut avoir accès au serveur de sauvegarde visé pour pouvoir effectuer cette étape… Ou bien la faire faire par quelqu' | ||
+ | </ | ||
- | ====== TOUT CE QUI EST EN DESSOUS DE CE TITRE EST DEPRECIE ====== | + | <WRAP center round tip 60%> |
+ | Si avertissement car catalogue apt périmé sur le serveur de sauvegarde, '' | ||
+ | Solution long terme : mettre à niveau carlota :-p. | ||
- | ===== trompe-souris ===== | + | --- //Jocelyn 2020/10/06 00:25// |
+ | </ | ||
- | Les backups sont executé par un simple script bash qui tourne quotidiennement : /// | ||
- | Le principe consiste à faire un backup du maximum de choses (bdd, site, configuration) et les déposer sur // / | ||
- | Ensuite, moyennant l' | + | < |
+ | ```bash | ||
+ | ansible-playbook --diff -K -l borg_servers -t borg-server playbook-fma.yml | ||
+ | ``` | ||
- | Pour l' | + | ## Procédures manuelles |
- | * bdd pour le si | + | Ces procédures nécessitent que les sauvegardes aient été configurées conformément aux sections précédentes, |
- | * conf dns et postfix | + | |
- | * sites du wiki et de l' | + | |
- | * la configuration des mailing-list | + | |
- | ===== Big Backup serveur ===== | + | ### PROCÉDURE : Récupérer d'une sauvegarde plantée (lock) |
- | 4U / 48Go de RAM / 35 Go de disques en RAID6 | + | |
- | 2 approches de la sauvegarde: | + | </markdown> |
- | * local avec [Borg[https: | + | |
- | * en VM, soit 150 VM (à 256 Mo de RAM et 40Go avec une moyenne de 150 Go). | + | |
+ | <WRAP center round tip 60%> | ||
+ | On prend ici l' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | On peut avoir ce genre de message remonté par cron dans un mail par exemple : | ||
+ | |||
+ | > Remote: borg.locking.LockTimeout: | ||
+ | |||
+ | Cela veut dire qu'une sauvegarde a crashée, et par prudence un « lock » est laissé… Et empêche toute sauvegarde ultérieure. À moins qu'un processus borg soit toujours en cours d' | ||
+ | |||
+ | |||
+ | On commence par ouvrir un « shell borg » avec toutes les variables d'env définies((plus d' | ||
+ | |||
+ | ``` | ||
+ | user@bambelle $ sudo / | ||
+ | [borg@carlota.faimaison.net: | ||
+ | ``` | ||
+ | |||
+ | On vérifie ensuite qu'on est bien bloqué par le lock | ||
+ | ``` | ||
+ | [borg@carlota.faimaison.net: | ||
+ | [… snip : l' | ||
+ | Remote: borg.locking.LockTimeout: | ||
+ | […] | ||
+ | ``` | ||
+ | |||
+ | Il a pas l'air content ! À condition qu' | ||
+ | ``` | ||
+ | [borg@carlota.faimaison.net: | ||
+ | ``` | ||
+ | |||
+ | Puis on vérifie que ça va mieux : | ||
+ | |||
+ | ``` | ||
+ | [borg@carlota.faimaison.net: | ||
+ | bambelle-2020-05-17-02-00 | ||
+ | bambelle-2020-05-24-02-00 | ||
+ | bambelle-2020-05-31-02-00 | ||
+ | bambelle-2020-06-07-02-00 | ||
+ | bambelle-2020-06-08-02-00 | ||
+ | bambelle-2020-06-09-02-00 | ||
+ | bambelle-2020-06-10-02-00 | ||
+ | bambelle-2020-06-11-02-00 | ||
+ | bambelle-2020-06-12-02-00 | ||
+ | bambelle-2020-06-13-02-00 | ||
+ | bambelle-2020-06-14-02-00 | ||
+ | ``` | ||
+ | |||
+ | La prochaine sauvegarde devrait pouvoir s' | ||
+ | |||
+ | ### PROCÉDURE : Créer une sauvegarde manuellement | ||
+ | |||
+ | Avant certaines opérations délicates, on peut souhaiter réaliser une sauvegarde manuelle. | ||
+ | |||
+ | 1. se connecter sur la machine à sauvegarder | ||
+ | 2. passer root `sudo su` | ||
+ | 3. Exécuter le script de sauvegarde `/ | ||
+ | |||
+ | ### PROCÉDURE : | ||
+ | |||
+ | </ | ||
+ | <WRAP center round important 60%> | ||
+ | Cette procédure restaure l' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | 1. se connecter sur la machine à sauvegarder | ||
+ | 2. passer root `sudo su` | ||
+ | 3. Ouvrir un « shell borg » avec toutes les variables d'env définies((plus d' | ||
+ | 4. lister les sauvegardes disponibles : | ||
+ | ``` | ||
+ | [borg@carlota.faimaison.net: | ||
+ | bambelle-2020-05-17-02-00 | ||
+ | bambelle-2020-05-24-02-00 | ||
+ | bambelle-2020-05-31-02-00 | ||
+ | bambelle-2020-06-07-02-00 | ||
+ | bambelle-2020-06-10-02-00 | ||
+ | bambelle-2020-06-11-02-00 | ||
+ | bambelle-2020-06-12-02-00 | ||
+ | bambelle-2020-06-13-02-00 | ||
+ | bambelle-2020-06-14-02-00 | ||
+ | bambelle-2020-10-04-02-00 | ||
+ | bambelle-2020-10-05-02-00 | ||
+ | ``` | ||
+ | Repérer le nom de l' | ||
+ | 5. Repasser root (en conservant les variables d' | ||
+ | ``` | ||
+ | [borg@carlota.faimaison.net: | ||
+ | ``` | ||
+ | 6. Se rendre à la racine (sinon on va restaurer notre sauvegarde dans un sous-dossier) | ||
+ | ``` | ||
+ | root@bambelle # cd / | ||
+ | ``` | ||
+ | 7. Lancer la restauration de l' | ||
+ | |||
+ | ``` | ||
+ | root@bambelle # borg extract $REPOSITORY:: | ||
+ | ``` | ||
+ | |||
+ | Des opérations supplémentaires peuvent ensuite être nécessaire selon le type de fichiers restaurés (ex: restaurer un fichier .sql dans une base). | ||
+ | |||
+ | |||
+ | ### PROCÉDURE : Récupérer une sauvegarde depuis une autre machine | ||
+ | |||
+ | On doit récupérer : | ||
+ | |||
+ | - le dépôt borg qui contient les sauvegardes de la machine | ||
+ | - la passphrase du dépôt | ||
+ | |||
+ | Le dépôt (repository) est contenu sur le serveur de sauvegarde ((actuellement, | ||
+ | |||
+ | On va imaginer qu'on veut récupérer les sauvegardes de la machine bambelle.faimaison.net dans le cas ou celle-ci aurait-été détruite. | ||
+ | |||
+ | 1. Récupérer le dossier */ | ||
+ | 2. Récupérer la passphrase du dépôt et la stocker dans la variable qui va bien : | ||
+ | ``` | ||
+ | BORG_PASSPHRASE=$(keyringer fma-machines decrypt noyau/ | ||
+ | ``` | ||
+ | 3. Lister les archives contenues dans le dépôt : | ||
+ | ``` | ||
+ | $ borg list ~/ | ||
+ | bambelle-2020-05-17-02-00 | ||
+ | bambelle-2020-05-24-02-00 | ||
+ | bambelle-2020-05-31-02-00 | ||
+ | bambelle-2020-06-07-02-00 | ||
+ | bambelle-2020-06-10-02-00 | ||
+ | bambelle-2020-06-11-02-00 | ||
+ | bambelle-2020-06-12-02-00 | ||
+ | bambelle-2020-06-13-02-00 | ||
+ | bambelle-2020-06-14-02-00 | ||
+ | bambelle-2020-10-04-02-00 | ||
+ | bambelle-2020-10-05-02-00 | ||
+ | ``` | ||
+ | |||
+ | 4. Créer un dossier pour extraire l' | ||
+ | ``` | ||
+ | $ mkdir ~/ | ||
+ | $ cd ~/ | ||
+ | $ borg extract ~/ | ||
+ | ``` | ||
+ | |||
+ | </ | ||
- | Lien vers la solution de backup | + | <WRAP center round tip 60%> |
+ | Il est aussi possible d' | ||
+ | </ |
backup.txt · Dernière modification : 2021/04/08 19:51 de gde