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 / 19521
Accepted
Jon Seigel
Jon Seigel
Asked: 2012-06-20 12:59:39 +0800 CST2012-06-20 12:59:39 +0800 CST 2012-06-20 12:59:39 +0800 CST

Topologia de replicação massiva ponto a ponto?

  • 772

Temos um cliente distribuído geograficamente em comunidades remotas, com conectividade de rede/internet um tanto incerta entre cada um dos locais físicos. Há uma única localização central e 52 localizações de satélite.

Normalmente, nosso aplicativo é implantado como uma solução central onde há apenas um único banco de dados e todos os locais se conectam a um único banco de dados. Os dados em si são particionados por uma coluna de localização na maioria das tabelas (alguns dados são centralizados) e o aplicativo opera de forma que o toque nos dados em um local físico não toque nos dados em outro local físico, incluindo os dados centralizados (pelo menos, temos certeza de que não - se acontecer, provavelmente é um bug). Nosso cliente gostaria de fazer relatórios centralizados (que normalmente oferecemos suporte) e sincronização de várias tabelas de configuração centralizadas em toda a empresa (o mesmo, porque normalmente há apenas uma cópia das tabelas).

Cada local tem seu próprio centro de dados e é licenciado para SQL Server 2008 R2 Enterprise.

O objetivo é implantar nosso aplicativo de forma que a conectividade de rede/internet interrompida não impeça as operações locais de leitura/gravação, pois nosso aplicativo é de missão crítica.


Meu primeiro pensamento foi usar uma topologia ponto a ponto gigante que replicasse todos os objetos do banco de dados. Não consegui encontrar nenhuma documentação ou referência de nenhuma instalação dimensionada tanto usando esse método, então não tenho ideia se é tecnicamente viável e, em caso afirmativo, qual hardware será necessário. Isso funcionaria com um banco de dados de distribuição centralizado (para facilitar o gerenciamento)? Isso é mesmo uma boa ideia? Como as alterações do esquema do banco de dados serão implantadas? A manutenção do índice gera uma grande sobrecarga de rede?

Há também a opção de criar uma solução roll-our-own, que imagino envolver o envio de cópias separadas do banco de dados (cada local não central conteria apenas sua parte particionada dos dados) para o local central e, em seguida, usando uma ferramenta de fusão (que já temos) para criar um banco de dados de relatórios. As alterações na tabela de configuração seriam enviadas por algum outro mecanismo, possivelmente replicação de mesclagem, possivelmente uma solução homebrew.

Considerei e testei o uso da replicação de mesclagem em todo o banco de dados, mas exigimos muitas alterações/redesenho/etc do banco de dados e do aplicativo. para fazer isso funcionar corretamente, então já descartei isso devido a restrições de tempo. (Pensamentos sobre isso?)


O que estou procurando aqui é alguma orientação de pessoas com mais experiência. Obviamente, o planejamento para isso é fundamental . Estou no caminho certo? Existem outras opções? (URLT?)

sql-server sql-server-2008-r2
  • 2 2 respostas
  • 1459 Views

2 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2012-06-20T19:41:30+08:002012-06-20T19:41:30+08:00

    Para apenas 52 sites de clientes, a replicação funcionará bem. Considere sua cópia local como o site 'mestre' e faça com que o aplicativo funcione apenas na cópia local, sempre. Use a replicação para agregar os dados ao repositório central para relatórios agregados. As operações de manutenção de índice normalmente não geram tráfego de replicação. Gerenciar alterações de esquema por meio de migrações de implantação de aplicativos , ou seja. têm scripts de atualização para cada versão lançada.

    À medida que o número de sites aumenta, o gerenciamento da replicação se torna cada vez mais difícil. Além disso, o licenciamento levaria à implantação do Express na periferia. E a atualização do SQL Server é uma dor absoluta quando a replicação está envolvida, pois a ordem de atualização dos componentes (editor, distribuidor, assinante) é crítica, mas difícil de coordenar com muitos sites. As implantações que conheço com mais de 1.500 sites usam movimentação de dados personalizada com base no Service Broker. Consulte Usando o Service Broker em vez da replicação para obter um exemplo. Já vi até designers que usam o Service Broker para enviar para a periferia novos bits (alterações de aplicativos) que, por sua vez, implantam, quando ativados, migrações e alterações de esquema, fazendo com que toda a implantação seja operada a partir do centro.

    • 6
  2. Aaron Bertrand
    2012-06-20T18:09:29+08:002012-06-20T18:09:29+08:00

    Por que existe um banco de dados? Parece que faria mais sentido cada local manter uma cópia do esquema do banco de dados localmente para suas próprias operações de leitura/gravação e sua própria fatia dos dados, e a parte de relatório dos dados poderia ser replicada centralmente. Existe algum motivo pelo qual o site A teria que disponibilizar seus dados não relacionados ao relatório para o site B ou vice-versa? Os dados do relatório podem ser distribuídos de volta para o local central usando uma variedade de técnicas, incluindo roll-your-own (tenho alguma experiência lá se você quiser mais informações). Ou, se os dados do relatório tiverem a maior parte do tamanho dos dados, você pode usar apenas envio de log ou backups copy_only, mantendo uma cópia de todo o banco de dados, com relatórios centrais usando exibições ou outras técnicas em vários bancos de dados quando eles são restaurados.

    Mudanças de esquema são fáceis. Lidei bastante com isso no meu antigo emprego, onde tínhamos ~ 500 bancos de dados com esquema idêntico. A chave para implantar mudanças é garantir que as mudanças sejam compatíveis com versões anteriores. Se você pode construir um script que não interrompa um banco de dados, você pode escrever um loop que implanta essas alterações em n bancos de dados/servidores/ambientes. Usamos o Red Gate para criar nossos scripts de implantação com base em comparações entre beta e produção e, em seguida, um desenvolvimento doméstico sp_msforeachdbem cada instância (porque você não pode confiar no integrado - veja aqui e aqui ). Com uma boa mistura de controle de origem também.

    Nesse caso, não tenho certeza de como a manutenção do índice causaria sobrecarga na rede. A manutenção do índice só deve ser feita na fonte e não "reproduzida" se puder ser evitada.

    • 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

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 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

    Como selecionar a primeira linha de cada grupo?

    • 6 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
    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
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +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