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 / 333408
Accepted
P5_
P5_
Asked: 2023-11-23 19:16:18 +0800 CST2023-11-23 19:16:18 +0800 CST 2023-11-23 19:16:18 +0800 CST

Plano de jogo para atualização do SQL Server de 2014 para 2017 e 2022

  • 772

Primeiro, gostaria de pedir desculpas se meu conhecimento na área de DBA é muito limitado, já que eu e vários outros membros da equipe acabamos de receber este projeto porque temos recursos significativamente limitados.

A tarefa dada foi atualizar várias instâncias do SQL Server de 2014 para 2017 e algumas para 2022, uma vez que o EOS está iminente no próximo ano. O escopo também combinará vários bancos de dados em uma instância. Elaboramos um plano sobre como executá-lo, mas precisamos de alguma validação de que esta etapa está correta e de alguns conselhos e sugestões para a implantação.

Pré-atualização

  1. Backups Primeiro faríamos backup de todos os bancos de dados que iremos atualizar para o formato .bak. Também salvaremos instantâneos caso o .bak falhe.
  2. Testando os referidos backups Após a conclusão do backup, criaremos uma VM para restaurar os backups para garantir que o .bak ou os snapshots possam ser usados ​​​​em caso de problema durante a atualização (esta etapa é obrigatória, pois o cliente está cauteloso porque instantâneos anteriores falharam)
  3. Geraremos um relatório do Data Migration Assistant (DMA) para descobrir quais SP e funções não são compatíveis após a atualização.
  4. Tudo isso será feito primeiro em um estágio de desenvolvimento; se tudo tiver sucesso, prosseguiremos na produção.

Atualizar

  1. Corrigiremos os referidos SP e funções do relatório DMA que terão problemas após a atualização
  2. Crie um período de inatividade que também coordenaremos com a equipe de operações para interromper todos os trabalhos de e para os bancos de dados (como Talend e Microstrategy e assim por diante).

Pós-atualização

  1. Certifique-se de que nenhum SP e Funções estejam obsoletos
  2. Verifique os dados e a acessibilidade
  3. Verifique todos os aplicativos que estão usando o banco de dados.
  4. Documente todas as alterações feitas em SP e Funções

Possível método alternativo a ser usado

  1. No produto, crie outra instância e atualize-a. Se for bem-sucedido, todos os aplicativos serão redirecionados para a nova instância e desabilitarão a instância antiga.

Limitações

  1. Os dados no desenvolvimento são significativamente menores, não há recurso para replicar
  2. Criar uma VM/servidor com as mesmas especificações do prod para testar ou tentar fazer isso pode ser difícil devido à restrição de recursos

Então este é o plano de jogo atual, há alguma sugestão ou conselho? Há algo que perdemos? Há algo que devemos observar? Existe uma maneira melhor de fazer isso?

Temos uma experiência muito limitada em lidar com este tipo de tarefa, por isso estamos realmente preocupados com a possibilidade de as coisas correrem mal. É claro que testaremos isso de antemão, mesmo antes de atualizar o desenvolvedor, para garantir que tudo esteja tão tranquilo quanto possível.

Muito obrigado.

sql-server
  • 1 1 respostas
  • 46 Views

1 respostas

  • Voted
  1. Best Answer
    J.D.
    2023-11-23T22:32:10+08:002023-11-23T22:32:10+08:00

    Apoiei a sugestão de Peter sobre Query Store . Eu até o ativaria agora, antes da atualização, e salvaria esses dados, das instâncias atuais, quando possível (em instâncias aplicáveis ​​que executam o SQL Server 2016 ou mais recente, se houver).

    O maior problema que você provavelmente encontrará é a regressão de desempenho com algumas consultas. Isso é comum durante a atualização e vocês também estão alterando a configuração do servidor/mesclando vários bancos de dados em uma única instância. E você está pulando várias versões, especialmente as instâncias que estão sendo atualizadas para 2022, onde houve uma magnitude de mudanças (mesmo em 2019) desde 2014. Há muita coisa acontecendo ao mesmo tempo, que alguma regressão de desempenho é inevitável.

    E você não poderá testar com garantia em seus ambientes de desenvolvimento, principalmente porque os dados não são os mesmos. A quantidade e as qualidades estatísticas dos dados afetam diretamente os planos de consulta que estão sendo gerados.

    Por fim, recomendo que você atualize todas as instâncias para a mesma versão, de 2019 ou 2022 (2022 ainda é relativamente novo e potencialmente sujeito a bugs). Por um lado, será mais fácil gerenciar todos eles em relação aos novos recursos, quando todos estiverem consistentes em versão. Mas também porque 2017 já encerrou o suporte convencional e você não quer passar pelo processo de atualização novamente daqui a alguns anos, se não for necessário.

    Desculpe se esta resposta parece deprimente, mas é a realidade de como acontecem as atualizações.

    Sua melhor aposta é imitar o seguinte o mais próximo possível:

    1. Habilite o Query Store nas instâncias PROD atuais e deixe-as coletar dados por alguns meses
    2. Amplie um novo servidor com a instância da versão do SQL Server para a qual você planeja atualizar.
    3. Carregue os bancos de dados naquela instância que você eventualmente consolidará lá. Mantenha-os atualizados com os dados do PROD da melhor maneira possível. Isso pode ser alcançado de várias maneiras, como Replicação , Grupos de Disponibilidade ou vários outros métodos de sincronização de dados.
    4. Habilite o Query Store para todos esses bancos de dados no novo servidor. Defina seus níveis de compatibilidade para corresponder ao servidor de onde vieram. Deixe-os coletar dados também por alguns meses.
    5. Revise os dados no Repositório de Consultas de cada banco de dados no servidor antigo em comparação com seu banco de dados correlacionado no novo servidor. Teste também os aplicativos que apontam para o novo servidor rotineiramente. Resolva quaisquer problemas imediatos de regressão de desempenho.
    6. Aumente o nível de compatibilidade dos bancos de dados no novo servidor para corresponder à versão dessa instância. Deixe-os coletar dados por mais alguns meses.
    7. Compare novamente os dados entre os Query Stores e teste rotineiramente os aplicativos que apontam para o novo servidor novamente, para determinar quaisquer outras regressões de desempenho. Endereço de acordo.
    8. Quando estiver familiarizado com o desempenho e a operação do novo servidor, corte os aplicativos para ele. Mantenha o servidor antigo disponível, mas inacessível aos aplicativos (geralmente controlado por meio de alterações de rede) como alternativa em caso de emergência. (Você pode precisar de uma janela de manutenção para acompanhar o novo servidor até os dados do servidor antigo, dependendo da metodologia de sincronização escolhida anteriormente.)
    9. Monitore o Query Store e o desempenho do aplicativo no novo servidor pelos próximos meses novamente e, se tudo estiver bem, desative o servidor antigo. Faça backups e instantâneos de servidor apropriados, conforme os seus objetivos de recuperação.

    Não espero que você consiga seguir isso perfeitamente, mas o mais próximo possível o deixará mais perto da maneira ideal de atualizar.

    • 3

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