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 / 50349
Accepted
Tiddo
Tiddo
Asked: 2013-09-24 06:09:31 +0800 CST2013-09-24 06:09:31 +0800 CST 2013-09-24 06:09:31 +0800 CST

Migrando o banco de dados ao vivo estando gravemente incapacitado

  • 772

Eu "herdei" um aplicativo da web que foi projetado e implementado de maneira horrível (tanto o aplicativo quanto o banco de dados). Por exemplo, os dados principais são armazenados usando uma espécie de armazenamento de valor-chave emulado em um banco de dados Postgres 8.2, tornando praticamente impossível extrair dados úteis dele em um período de tempo razoável.

Atualmente estou trabalhando duro para substituir todo o aplicativo + banco de dados, no entanto, levará alguns meses até que o novo aplicativo seja concluído. Isso é um problema, pois o site é muito lento devido ao design extremamente ruim do banco de dados e às consultas ainda piores. Portanto, estou planejando corrigir o design do banco de dados e as consultas no site ativo até que o site tenha um tempo de carregamento aceitável como uma solução temporária.

No entanto, tenho algumas limitações para contornar, as mais problemáticas são:

  • Terei que fazer tudo de dentro de um CMS de construção proprietário.
  • As consultas são todas distribuídas em muitos arquivos e não há como procurá-los. Portanto, é quase impossível garantir que atualizei todas as consultas para uma tabela específica.
  • Não tenho acesso direto ao banco de dados, mas posso executar consultas usando um editor de consultas no CMS, mas apenas para tabelas pertencentes ao aplicativo (portanto, não há tabelas pg_* para mim).
  • Não tenho acesso a um ambiente de desenvolvedor, nem posso criar um. Tudo tem que ser feito ao vivo.

Então, basicamente, terei que migrar um banco de dados ao vivo ao longo de alguns dias, ao mesmo tempo em que atualizo o aplicativo ao vivo para que ele possa lidar com o novo aplicativo, sem poder pesquisar o uso de cada tabela.

Com todas essas desvantagens levadas em consideração, elaborei o seguinte plano:

  1. Crie tabelas inicialmente vazias para armazenar os dados de maneira sã.
  2. Crie gatilhos nas tabelas antigas que podem sincronizar os dados com os novos.
  3. Exporte os dados das tabelas antigas para as novas tabelas e ative os gatilhos.
  4. Substitua as consultas uma a uma.

Usando esta estratégia, terei 2 bancos de dados sincronizados após a etapa 3. Inicialmente, todas as consultas irão para o banco de dados antigo, mas enquanto estou atualizando as consultas lentamente, o banco de dados antigo será menos usado e o novo mais.

Levando em consideração essa situação "subótima", essa é uma boa estratégia para corrigir alguns dos problemas? Que coisas devo levar em consideração ao fazer isso?

Observe que entendo perfeitamente que esta é uma missão suicida muito arriscada. No entanto, terei que fazer algo em um curto espaço de tempo, caso contrário, o site ficará totalmente inutilizável.

postgresql migration
  • 1 1 respostas
  • 150 Views

1 respostas

  • Voted
  1. Best Answer
    Chris Travers
    2013-09-24T06:20:02+08:002013-09-24T06:20:02+08:00

    Se puder, seria melhor fazer exibições e gatilhos em vez de replicação bilateral de dados entre os dois lados.

    Então, eu modificaria um pouco seu plano:

    1. Crie um esquema são

    2. Crie uma emulação do esquema antigo usando visualizações.

    3. Crie gatilhos nas exibições para gravar no novo esquema em vez do antigo.

    A questão é o que vem depois disso. Como você está construindo uma nova ferramenta, é bom estar no modo de manutenção. Isso significa, penso eu, corrigir apenas as consultas mais lentas que causam problemas.

    • 1

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • 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

    Conceder acesso a todas as tabelas para um usuário

    • 5 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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