Técnicas de Recuperação em Banco de...

25
Técnicas de Recuperação em Banco de Dados Daniela Barreiro Claro MATA-60 UFBA

Transcript of Técnicas de Recuperação em Banco de...

Page 1: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

Técnicas de Recuperação em

Banco de Dados

Daniela Barreiro Claro MATA-60

UFBA

Page 2: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

2

Razão Os dados são os ativos mais valiosos de uma

organização, devemos então “protegê-los”

Uso Recuperação

Auditoria

Rollback

Teste

Escalabilidade

Introdução

Page 3: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

3

Falhas podem ocorrer em qualquer Sistema

SGBD deve garantir as propriedades

ATOMICIDADE e DURABILIDADE

Recuperação das transações que falharam BD deve ser restaurado ao estado consistente + recente

O sistema deve manter as alterações sobre os

itens de dados alterados pelas transações Esta informação é armazenada em log (historico) do

sistema

Recuperação em BD

Page 4: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

4

Estratégias para recuperação Dano extenso ao BD, falha catastrófica, ex. Crash de

disco Método utilizado: restaurar uma copia anterior do BD, e

reconstrói o estado mais atual, reaplicando ou refazendo as

operações das transações contidas no LOG (restore de um

backup)

BD não foi danificado fisicamente, mas se torna

inconsistente por causa de uma falha não-catastrófica Método: desfazer algumas operações e refazer outras, de forma

a restaurar um estado consistente

Recuperação em BD

Page 5: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

5

Algoritmos para garantir a coerência e

atomicidade mesmo na presença de falhas em 2

etapas Ações tomadas DURANTE o processamento da

transação para obter info suficiente para recuperar das

falhas

Ações tomadas APÓS uma falha, para recuperar o

conteúdo do BD a um estado consistente, atômico e

durável.

Recuperação em BD

Page 6: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

6

Em geral o processo de recuperação está

fortemente ligado às funções do SO

A estrutura mais utilizada para registrar as

modificações do BD é o LOG LOG é uma sequência de registros contendo todas as

atualizações do BD

Duas técnicas de recuperação de falhas não-

catastróficas (usando o log) Modificação adiada e modificação imediata

Recuperação em BD

Page 7: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

7

Log via Modificação Adiada Posterga qualquer atualização real no BD

Durante a execução da transação, as atualizações

são registradas apenas no LOG

Se o sistema falhar antes que T termine sua

execução, a informação no LOG é simplesmente

ignorada

Somente o novo valor é registrado no LOG

Conhecida como NO-UNDO/REDO

Recuperação em BD

Page 8: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

8

Log via Modificação Imediata As atualizações são enviadas ao BD enquanto a

transação ainda está no estado ATIVO

O sistema precisa do VALOR_ANTIGO para restaurar

os itens de dados modificados

Operação UNDO realiza a restauração

A atualização do LOG deve ser antes da atualização

real do BD

Conhecida como UNDO/REDO

Recuperação em BD

Page 9: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

9

Log via Modificação Imediata Dois procedimentos de recuperação

UNDO(Ti): restaura o valor para VALOR_ANTIGO

REDO(Ti): define o valor para VALOR_NOVO

Depois de uma falha, consulta-se o log para determinar

quais transações precisam ser refeitas e desfeitas

Ti deve ser DESFEITA: se log contém <ti,start> mas não

contém o registro de <ti,commit>

Ti deve ser REFEITA: se log tiver <ti,start> e <ti,commit>

Recuperação em BD

Page 10: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

10

Quando ocorre uma falha, é preciso consultar o

log para determinar Transações a serem REFEITAS e/ou DESFEITAS

A princípio precisa-se pesquisar o LOG inteiro Processo demorado

A maioria das transações já enviaram suas informações ao

Banco de dados

Checkpoints reduz a sobrecarga do sistema

Periodicamente o sistema realiza pontos de verificação

Pontos de verificação (checkpoint)

Page 11: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

11

Considere as transações T0, ..., T100

Suponha que o ponto de verificação mais recente tenha

ocorrido em T67

Somente as transações T67, T68, ..., T100 precisam

ser consideradas durante o esquema de

recuperação

É o gerenciador de recuperação de um SGBD

quem determina o intervalo dos checkpoints

Pontos de verificação (checkpoint)

Page 12: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

12

PostgreSQL Implementa o controle de concorrência multiversão (mvcc)

e o 2PC

Instruções DML – mvcc semelhante ao timestamp

multiversão

Instruções DDL – 2PC

Transação é bloqueada se dois escritores tentam

escrever na mesma linha

A partir da versão 7.1 Log de escrita com uma fase de REDO e de UNDO

Gerenciamento de Transações em

BDs Comerciais

Page 13: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

13

Oracle Implementa 2PC multiversão

Usa bloqueio nível de linha (granularidade fina)

DDL – Usa bloqueio nível de tabela

Detecta impasses e os resolve automaticamente

revertendo uma das transações

IBM DB2 Bloqueios nível de registro e tabela

2PC estrito

Não aceita transações multiníveis ou aninhadas

Gerenciamento de Transações em

BDs Comerciais

Page 14: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

Prática

Backup e recuperação

14

Page 15: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

15

1° Método – backup Servidor MySQL “parado”

datadir do arquivo my.cnf (/etc/mysql/my.cnf)

Copiar os arquivos da pasta de dados do MySQL Linux: /var/lib/mysql/nome_database/nome_tabela

MyISAM nome_tabela.frm = Arquivo de definição (formato)

nome_tabela.MYD = Arquivo de dados

nome_tabela.MYI = Arquivo de index

InnoDB nome_tabela.frm = Arquivo de definição (formato)

ibdata1 = Dados de todas as tabelas (/var/lib/mysql)

Backup e recuperação (MySQL)

Page 16: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

16

1° Método – recuperação Servidor MySQL “parado”

Copiar os arquivos de volta à pasta de dados

Levar em consideração os backups incrementais

Iniciar o servidor MySQL

Backup e recuperação (MySQL)

Page 17: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

17

2° Método - backup Servidor MySQL “rodando”

mysqldump

*.sql contendo todos os comandos SQL

*.sql é gerado em texto puro, pode ser compactado create table

drop table

insert

lock/unlock tables

Independente de storage engines

Backup e recuperação (MySQL)

Page 18: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

2° Método - backup Sintaxe

Geral $>mysqldump -u usuário -p [arguments] > file_name

Todas databases $>mysqldump --all-databases > dump.sql

Databases específicas $>mysqldump --databases db1 db2 > dump.sql

Tabelas específicas $>mysqldump db1 t1 t2 > dump.sql

Padrão add-drop-table, add-locks, create-options, disable-keys, extended-insert, lock-

tables, quick e set-charset

Backup e recuperação (MySQL)

Page 19: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

Backup e recuperação (MySQL)

Page 20: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

20

2° Método - recuperação Sintaxe

Shell (create ... use) $>mysql -u usuário -p < dump.sql

MySQL mysql>create database if not exists db1;

mysql>use db1;

mysql>source dump.sql;

Backup e recuperação (MySQL)

Page 21: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

21

3° Método – backup Log de atualização

mysqld_safe --log-bin

Ligar: cria um novo log-bin

Desligar: “flush” as modificações para o log-bin

mysqld-bin.000001

Lista todos os log-bin mysql>show binary logs;

Informa o log-bin atual mysql>show master status;

Le um determinado log-bin $mysqlbinlog /var/lib/mysql/mysqld-bin.000001

Backup e recuperação (MySQL)

Page 22: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

22

3° Método – recuperação Restaura o log-bin

$mysqlbinlog mysqld-bin.000001 | mysql -u –p

Restaura o log-bin até (a partir) um certo momento $mysqlbinlog --stop[start]-datetime=“timestamp”

mysqld-bin.000001 | mysql -u –p

Restaura o log-bin até (a partir) um certo evento $mysqlbinlog --stop[start]-position=368312

mysqldbin.000001 | mysql -u -p

Backup e recuperação (MySQL)

Page 23: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

23

phpMyAdmin

Ferramentas CASE

Page 24: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

24

MySQL Workbench

Ferramentas CASE

Page 25: Técnicas de Recuperação em Banco de Dadosformas.ufba.br/dclaro/mata60/Aula13-Recuperacao_e_Backup.pdf · 2019. 6. 13. · 4 Estratégias para recuperação Dano extenso ao BD,

25

High Performance MySQL, Third Edition por

Baron Schwartz, Peter Zaitsev, and Vadim

Tkachenko

Learning MySQL por Seyed M.M. “Saied”

Tahaghoghi and Hugh E. Williams MySQL 5.5 Reference Manual

Referências