Restauro de Backups

Version Date Notes By
0.5 2025-02-11 Adicionado nota o restauro de sites jfm
0.4 2021-07-20 Adicionado nota sober o Borg jfm
0.3 2019-07-16 Adicionado SQL para criar utilizador jfm
0.2 2018-09-28 Adicionado comandos de extração de ficheiros jfm
0.1 2017-09-25 Initial release jfm

Como restaurar ficheiros

Para instruções relacionadas com o restauro de backup usando o Borg, ver o documento Borg backup verification

Em alguns casos poderá ser útil/recomendável parar qualquer tipo de serviço associado aos ficheiros em causa (Ex: Apache, Supervisor, etc...)

Restauro total de pastas

  1. Fazer uma copia temporária das pastas a restaurar de forma a menter uma copia do estado atual no caso de ser necessário fazer o rollback do restauro
  2. Identificar o ficheiro de backup a restaurar com base na data que se pretende recuperar
  3. Extrair os dados do ficheiro de backup para uma pasta temporária
  4. Eliminar toda a informação das pastas a recuperar e substituir pelo conteudo extraido do ficheiro de backup

Restauro de ficheiros especificos

  1. Fazer uma copia temporária do(s) ficheiro(s) a substituir de forma a menter uma copia do estado atual no caso de ser necessário fazer o rollback do restauro
  2. Identificar o ficheiro de backup a restaurar com base na data que se pretende recuperar
  3. Extrair o(s) ficheiros(s) a repor
  4. Se necessário/possível testar abertura do(s) ficheiro(s)
  5. Substituir os ficheiros a recuperar pelos estraidos dos ficheiro de backup.

Extração de ficheiros

Ficheiros .tar.gz - tar -zxvf ficheiro.tar.gz

Ficheiros .tar - tar -xvf ficheiro.tar

Ficheiros .gzip - gunzip ficheiro.gz

Ficheiros .zip - unzip ficheiro.zip

Como restaurar os sites

Para restaurar um site deveremos seguir o mesmo processo de restauro de ficheiros, e colocar os sites nos devidos lugares. Geralmente em /var/www/

Não esquecer de atribuir as permissões necessárias. Consultar a documentação de instalação do IMS https://sgiv10.wedocs.wemake.pt/production/installation-guide/installation-on-linux

Como restaurar base de dados

MySQL

Restauro total da base de dados**

  1. Fazer uma copia temporária da base de dados a restaurar de forma a menter uma copia do estado atual no caso de ser necessário fazer o rollback do restauro

Exemplo:

mysqldump -u <user> -p --add-drop-tables --single-transaction -B <database_name> > backup_filename.sql
  1. Identificar o ficheiro de backup a restaurar com base na data que se pretende recuperar
  2. Extrair os dados do ficheiro de backup para uma pasta temporária
  3. Entrar na consola do MySQL, fazer o DROP da base de dados e recriar a base de dados
mysql -u <user> -p
DROP DATABASE <database_name>;
CREATE DATABASE <database_name>;
  1. Restaurar a base de dados
mysql -u <user> -p <database_name> < <file_with_backup.sql>

Restauro parcial da base de dados**

A forma de restauro de dados parciais vai depender sempre do que é pretendido. O restauro especifico de dados requer analise mais detalhada e varia consoante o caso. Aqui apenas será definido como restaurar tabelas inteiras.

Seguir os passos 1 a 3 do Restauro total da base de dados

  1. Numa cópia local do mysql criar uma base de dados temporária e restaurar a base de dados completa
  2. Exportar a(s) tabela(s) a restaurar
mysqldump -u <user> -p --add-drop-tables --single-transaction <database_name> <table1_name> <table2_name> > backup_filename.sql
  1. Restaurar o ficheiro exportado na base de dados a restaurar as tabelas
mysql -u <user> -p <database_name> < <backup_filename.sql>

Utilidades

Criar um utilizador e dar acesso a uma bd

CREATE USER 'username'@'localhost' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON database.* TO 'username'@'localhost';
FLUSH PRIVILEGES;

SQL Server

TODO

Como restaurar o Gitlab

Documentação oficial:

  1. Identificar o ficheiro de backup a restaurar com base na data que se pretende recuperar
  2. Copiar o ficheiro de backup para a pasta de backups definida no ficheiro de configiração do gitlab /etc/gitlab/gitlab.rb configuração gitlab_rails['backup_path']
  3. Parar os processos associados à base de dados
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

# Verificar o estado
sudo gitlab-ctl status
  1. Restaurar os dados
sudo gitlab-rake gitlab:backup:restore BACKUP=<prefixo_nome_backup>

Os ficheiros de backup do gitlab tem o seguinte formato: 1519264848_2018_02_22_10.3.3_gitlab_backup.tar.
Considera-se o prefixo do nome do ficheiro a parte que vai até antes do _gitlab_backup.tar, neste caso 1519264848_2018_02_22_10.3.3

  1. Restaurar o ficheiro /etc/gitlab/gitlab-secrets.json
  2. Reiniciar e verificar o estado
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

Como restaurar o SVN

Restauro completo de um repositório

  1. Fazer uma copia temporária do repositório a restaurar de forma a menter uma copia do estado atual no caso de ser necessário fazer o rollback do restauro
svnadmin hotcopy /usr/local/svn/repos/<repositorio>/ /tmp/<repositorio>
  1. Identificar o repositorio a restaurar
  2. Verificar o estado do backup `svnadmin verify
  3. Eliminar a pasta do repositório
  4. Copiar a pasta de backup do repositório
  5. Verificar se existem backup incrementais na pasta de backup do repositório (ficheiros no formato: v#-#.bk Ex: v59-61.bak - backup entre a versão 59 e versão 61)
  6. Se existirem backup incrementais, executar por ordem de versão: svnadmin load <repo_folder> < <incremental_backup_file>

Exemplo

svnadmin load /usr/local/svn/repos/admastor < /var/wemakebackups/subversion/data/admastor/v59-61.bak
svnadmin load /usr/local/svn/repos/admastor < /var/wemakebackups/subversion/data/admastor/v62-62.bak

Found errors? Think you can improve this documentation? Simply click the Edit link at the top of the page, and then the icon on Github to make your changes.