AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 252191
Accepted
George.Palacios
George.Palacios
Asked: 2019-10-31 03:49:58 +0800 CST2019-10-31 03:49:58 +0800 CST 2019-10-31 03:49:58 +0800 CST

Durante um backup de log, os dados são copiados para o início ou fim da operação?

  • 772

Digamos que eu esteja executando um backup de log e esse backup de log leve 10 minutos para ser concluído. Durante essa janela de 10 minutos, outras transações são executadas. Dado o exemplo abaixo, quais transações o backup de log realmente contém?

  1. A transação A confirma
  2. A transação B é aberta
  3. O backup de log começa
  4. A transação C é aberta
  5. Confirmações da transação B
  6. Backup de log concluído
  7. Confirmações da transação C
sql-server sql-server-2012
  • 2 2 respostas
  • 2013 Views

2 respostas

  • Voted
  1. Best Answer
    Ronaldo
    2019-10-31T10:09:45+08:002019-10-31T10:09:45+08:00

    O arquivo de backup de log deve conter todas as transações (incluindo as que ainda não foram confirmadas) até o momento em que o backup terminou de ser executado e você pode verificá-lo da seguinte forma:

    CREATE DATABASE MyDB;
    ALTER DATABASE MyDB SET RECOVERY FULL;
    
    USE MyDB;
    CREATE TABLE LogTest (numbers int);
    

    Uma vez criado o banco de dados e a tabela que será utilizada no teste, faça o primeiro backup completo para que seja possível fazer um backup de log posteriormente.

    BACKUP DATABASE MyDB 
    TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Backup\MyDB_FULL.bak';
    

    Agora que foi feito um backup completo vamos inserir alguns dados na tabela:

    USE MyDB;
    
    INSERT INTO LogTest(numbers) VALUES (1);
    
    BEGIN TRAN
    INSERT INTO LogTest(numbers) VALUES (2);
    

    Observe que a segunda inserção está sob um BEGIN TRANque ainda não foi confirmado. Em seguida, usaremos a função [fn_dblog para verificar o conteúdo do arquivo de log antes de fazer um backup de log.

    SELECT [Current LSN], [Operation], [SPID], [Transaction Name], [Begin Time], [End Time] FROM fn_dblog(NULL, NULL);
    

    Na imagem podemos ver LSNs relacionadas ao primeiro e segundoINSERT

    Resultado da primeira consulta

    BACKUP LOG MyDB 
    TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Backup\MyDB_LOG.trn';
    

    Um backup de log foi feito e podemos ler seu conteúdo com a função fn_dump_dblog usando a seguinte consulta:

    SELECT [Current LSN], [Transaction ID], [Transaction Name], [Operation], [Begin Time] 
    FROM fn_dump_dblog (NULL, NULL, N'DISK', 1, N'C:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Backup\MyDB_LOG.trn',
    DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
    DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
    DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
    DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
    DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT);
    

    Resultado da segunda consulta

    Como podemos ver, esses LSNs relacionados à transação inacabada, na verdade, estão no backup do log de transações, mesmo que não tenham sido confirmados. O problema é que, como a Microsoft diz

    O log de transações é um componente crítico do banco de dados. Se houver uma falha no sistema, você precisará desse log para trazer seu banco de dados de volta a um estado consistente.

    Portanto, após realizar uma restauração desse backup de log, os dados relacionados a essas transações inacabadas serão revertidos para manter o banco de dados em um estado consistente (consulte Recuperação e o log de transações ).

    Você pode considerar seguras (podem ser restauradas) todas as transações que foram confirmadas. Isso pode ser verificado descartando o banco de dados MyDB e restaurando os backups que foram gerados com as etapas acima.

    • 23
  2. Jonathan Fite
    2019-10-31T04:11:47+08:002019-10-31T04:11:47+08:00

    O log de transações contém todas as transações que foram totalmente confirmadas no momento em que o log de transações é concluído.

    Para usar o exemplo acima, o log de transações contém A e B. Isso é semelhante ao backup completo, que contém um backup de log final de todas as transações que foram confirmadas quando o backup é concluído.

    Este site é excelente leitura adicional. https://sqlbak.com/academy/transaction-log-backup

    • 6

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve