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 / 117734
Accepted
bogdan
bogdan
Asked: 2015-10-13 04:55:53 +0800 CST2015-10-13 04:55:53 +0800 CST 2015-10-13 04:55:53 +0800 CST

Fazendo backup e restaurando 10-20 bancos de dados do SQL Server para um estado ~síncrono?

  • 772

Preciso fazer backup de 10 a 20 bancos de dados do SQL Server 2008 R2 com tamanhos entre 10 e 50 GB, enquanto eles estão online e usados ​​simultaneamente por um único aplicativo corporativo. Também preciso restaurá-los para um estado que seja amplamente sincronizado em todos os bancos de dados (posso pagar alguns segundos de dessincronização entre os bancos de dados). O objetivo é capturar dados de produção para ambientes QA/DEV.

Eu gostaria fortemente de não exigir que os bancos de dados sejam executados em recuperação total e criar um método de backup dedicado à captura de dados para ambientes de controle de qualidade e que permaneça independente de um processo principal de backup que não esteja sob meu controle.

Para meus clientes, levará de 1 a 2 horas para capturar 20 backups completos de aproximadamente 30 GB cada. Isso torna inaceitável fazer backups completos sequencialmente, pois os bancos de dados ficariam muito dessincronizados ao serem executados na recuperação simples.

Estou procurando uma ideia melhor do que estas:

IDEIA 1: Snapshot no nível SAN de discos VM. xcopy MDFs/LDFs do instantâneo.

Depois que os arquivos copiados são anexados a uma instância de servidor diferente, seu processo de recuperação deve produzir bancos de dados consistentes que são instantâneos praticamente simultaneamente.
Pesquisar no Google me convenceu de que essa é uma má ideia, pelo menos porque posso obter desync vs. master/msdb/etc.

IDEIA 2: Orquestre um backup complexo e uma restauração sincronizada em todos os bancos de dados

Isso exige que bancos de dados exigentes sejam executados em recuperação total, o que eu não quero. Inicie backups paralelos para todos os bancos de dados bem antes do prazo (T0). Quando T0 for atingido, faça backup de todos os logs (deve levar no máximo alguns minutos). Pegue a miríade resultante de backups e tente restaurá-los e rolar os logs para frente/para trás para obter um estado um tanto consistente nos bancos de dados, em relação a T0.
Isso requer muito planejamento e scripts para que seja usado de forma confiável, então eu faria de tudo para evitá-lo.

Estou perdendo alguma outra solução?

PS1: Eu adoraria poder usar snapshots db . A ideia era iniciar um instantâneo em cada banco de dados (que deve terminar em segundos) e, em seguida, fazer backup completo de cada um sequencialmente nos minutos/horas seguintes. Em seguida, restaure todos eles em um servidor diferente e reverta cada um para o instantâneo. AFAIK este cenário não é possível porque os instantâneos não podem ser copiados junto com o banco de dados. Eles só podem ser revertidos no local, no servidor onde foram criados. Além disso, eles exigem a Enterprise Edition, que não tenho para todos os clientes.

PS2: Se você souber de uma solução de terceiros capaz de produzir backups sincronizados entre bancos de dados, mencione-a.

sql-server sql-server-2008
  • 5 5 respostas
  • 2345 Views

5 respostas

  • Voted
  1. Best Answer
    Kin Shah
    2015-10-13T05:50:21+08:002015-10-13T05:50:21+08:00

    Preciso fazer backup de 10 a 20 bancos de dados do SQL Server usados ​​simultaneamente por um único aplicativo corporativo, enquanto eles estão online, de forma a restaurá-los para um estado amplamente sincronizado em todos os bancos de dados

    O que você está procurando é um backup consistente em todos os seus bancos de dados de clientes, você deve usar backups COMPLETOS junto com Marked Transactions(ênfase em negrito adicionada):

    Ao fazer atualizações relacionadas a dois ou mais bancos de dados, bancos de dados relacionados , você pode usar marcas de transação para recuperá-los para um ponto logicamente consistente . No entanto, essa recuperação perde qualquer transação confirmada após a marca usada como ponto de recuperação. A marcação de transações é adequada apenas quando você está testando bancos de dados relacionados ou quando deseja perder transações confirmadas recentemente.

    insira a descrição da imagem aqui

    Certifique-se de fazer backup de log de transação adhoc com COPY_ONLY, caso contrário, sua recuperação será um problema, pois qualquer backup de log de transação adhoc sem COPY_ONLYinterromperá a cadeia de log. Como precaução, você pode restringir os usuários a usar apenas COPY_ONLY backups .

    Preciso de uma solução para SQL Server versões 2008 R2 e posteriores. Os tamanhos de banco de dados são de até 50 GB por banco de dados e o tempo para fazer backup de todos eles provavelmente é de 1 a 2 horas.

    As transações marcadas funcionarão para sua situação. A única coisa para fazer backups paralelos é para STRIPEeles, mas depois você acaba se certificando de não perder suas listras de backup. Para torná-los mais rápidos, você pode brincar com BUFFERCOUNTe MAXTRANSFERSIZE.

    Você deve usar a compactação de backup e habilitar a inicialização instantânea de arquivo .

    Referir-se

    • Usando transações marcadas (modelo de recuperação total)
    • Como aumentar a velocidade do backup completo do banco de dados SQL usando compactação e discos de estado sólido?
    • 12
  2. Tom V
    2015-10-13T05:05:50+08:002015-10-13T05:05:50+08:00

    Se você estiver executando backups completos, bem como backups de log de transações (e você deve, se considerar esses dados importantes), basta copiar os backups e os backups de log de transações para o sistema de teste e executar uma restauração pontual para restaurar os bancos de dados para +- ao mesmo tempo.

    Dependendo se todos os bancos de dados residem na mesma máquina do SQL Server ou quão bem os relógios dos servidores estão sincronizados, você deve ser capaz de corresponder ao destino de 'dessincronização de alguns segundos'.

    Pode ser uma solução um pouco de band-aid, mas atenderia aos requisitos e seria bastante simples e barato.

    Se você não tiver backups completos e backups de log de transações de seus bancos de dados importantes (que estão em recuperação total), você realmente precisa revisar sua estratégia de backup. Os instantâneos de nível SAN realmente discutem o ponto de ter um banco de dados no modo de recuperação total, pois você não poderá fazer uma restauração pontual de qualquer maneira.

    Por favor, leia o que MrDenny tem a dizer sobre isso

    • 7
  3. Travis Page
    2015-10-14T09:07:48+08:002015-10-14T09:07:48+08:00

    Nas circunstâncias que você indicou, você consultou os backups VSS por meio de um provedor VSS terceirizado ou baseado na Microsoft? Você pode executar um backup COPY_ONLY que não interromperá sua cadeia de recuperação de produção e deve terminar com um backup de todos os bancos de dados que você pode recuperar em outro lugar dentro de suas margens razoáveis. Lembre-se de que um backup VSS tem alguns dos mesmos mecanismos e quedas que os instantâneos do banco de dados, pois um banco de dados muito ativo pode causar um problema de espaço em disco devido aos arquivos esparsos usados. Dê uma olhada nos recursos do TechNet sobre o serviço SQL Writer aqui e nos backups VSS do SQL Server aqui .

    Para fazer isso por meio do Backup do Windows Server, você seguirá as etapas do assistente para um backup manual, certificando-se de selecionar backup de cópia VSS nas configurações personalizadas em Configurações VSS. Isso permitirá que o backup do Windows Server não interfira em nenhum outro backup feito no servidor. Consulte Referência de backup do Windows Server para obter detalhes.

    • 1
  4. bogdan
    2015-10-14T09:25:28+08:002015-10-14T09:25:28+08:00

    Vou votar em @Kin como a resposta porque foi a primeira a corresponder ao que a pergunta perguntou. Acabei encontrando uma resposta adicional e vou descrevê-la abaixo.

    Para clientes que usam o modelo de recuperação simples, exigirei uma cópia dos MDFs e LDFs extraídos de um instantâneo de disco temporário obtido em T0 no nível do hipervisor ou SAN. Posso usá-los para recuperar os dbs no estado de T0.

    Para clientes que usam o modelo de recuperação total, exigirei:

    • Cópias de seu processo de backup PRINCIPAL do último backup completo concluído antes de T0 + cadeia mínima de backups de log de transações subsequentes cobrindo T0. Posso então executar uma recuperação pontual para T0.

    • COPY_ONLYAcesso para realizar meus próprios backups auxiliares . Vou iniciá-los todos em paralelo em T0, o que não deve levar mais do que alguns segundos e era minha principal preocupação número 1. Em seguida, na restauração, executarei uma recuperação pontual para o FirstLSN de cada backup. A beleza disso é que não exige que eu interaja com o processo de backup PRINCIPAL, que era minha outra preocupação, eles podem até truncar os logs enquanto meus COPY_ONLYbackups estão sendo executados sem afetar sua coerência.

    • 1
  5. Chuck
    2015-11-10T09:32:48+08:002015-11-10T09:32:48+08:00

    Eu faço isso várias vezes ao ano para controle de qualidade e outros ambientes que são cópias de produção. Para restaurações, o modo de recuperação total é realmente necessário e a restauração para um ponto no tempo funciona bem. Também há muita replicação e é raro termos erros de 'linha não encontrada' após a restauração em um ponto no tempo. Também usamos o método SAN clone/snapshot para uma cópia de produção geograficamente distante e que também funciona bem para sincronizar os bancos de dados.

    • 0

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

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

  • Downgrade do SQL Server 2008 para 2005

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