none
Projeto replicação Peer to Peer RRS feed

  • Pergunta

  • Bom dia pessoal!

    Estou com um projeto onde foi solicitado que algumas tabelas fossem replicadas em todas filiais estaduais, ou seja cada estado terá um ponto da replicação. E a tabela será alterada (alimentada) em todos pontos.

    Assim estou planejando e testando com a replicação p2p.

    Ai surgiu algumas questões:

    1) Quando estiver em produção e for necessário uma modificação de uma tabela (artigo) presente na PTP, ao retirar da replicação como garantiar os dados sincronizados em ambiente, pois como irei alterar a mesma tabela em 26 estados com o sistema "em produção"? E como vou garantir todos os dados em todos os pontos posteriormente?

    2) Ao excluir um ponto, quando adicionado novamente manter o mesmo numero (ele diz que esta sendo usado e teria que adicionar novo);

    3) Fazendo diversos testes, e configurado várias vezes as replicação, hoje estou com um teste com 4 servidores, apesar da arquitetura todos estarem conectados entre si, um ponto quando faço um insert, não replica para outros pontos, porém ele recebe os dados dos outros servidores. Aqui a pergunta é onde esta o erro? Verifico novamente não encontro erro no job da replicação. Como geraria essa carga novamente? Conseguiria saber qual registro não foi replicado?

    4) Utilizava no testes como chave primária um identity, como achei que seria complicado ficar gerenciando 26 faixas de identity, para cada ponto, estou utilizando o campo uniqueidentifier, alguma observação?

    Existiria alguma outra observação ou testes que devo realizar?


    • Editado Ygo Rabelo sexta-feira, 15 de junho de 2012 15:06
    • Movido Gustavo Maia Aguiar sábado, 7 de julho de 2012 19:39 (De:SQL Server - Infra Geral)
    sexta-feira, 15 de junho de 2012 14:32

Respostas

  • Ygo,

    Cara sinceramente dizer que o Peer - to - Peer, é a melhor solução não é algo simples, pois vai envolver a sua necessidade e ambiente.

    Mas eu entendo que o Merge pode ser a melhor solução por se tratar de um recurso que já esta presente em outras versões do SQL Server o que poderá facilitar a busca de informações, como também, o conhecimento por parte de outros profissionais.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Ygo Rabelo quarta-feira, 17 de outubro de 2012 17:36
    terça-feira, 10 de julho de 2012 12:13
    Moderador

Todas as Respostas

  • Ygor,

    Se você retirar uma tabela da replicação os demais dados dos outros artigos continuam replicando. Agora quando voce inserir essa mesma tabela novamente ou qualquer outra novamente, você deverá gerar um novo snapshot para que ela possa iniciar o processo de replicação.

    Abraço!

    Se a resposta foi útil classifique-a


    Att, Marcos Freccia [MCTS|MCITP|MCT SQL Server 2008]

    segunda-feira, 18 de junho de 2012 01:28
  • Boa noite Marcos, obrigado pela resposta.

    Porém até onde sei, posso estar enganado, a replicação transacional P2P não pode ser inicializada com snapshot inclusive quando você  pede para reiniciar os assinantes tem um erro (The backup file from database ERP at peer 'servidorC' that was used to initialize the peers does not contain the required peer information. Use a new backup to initialize the node and retry the operation). Na documentação sugere inicialização deste tipo de replicação por backup ou través do Integration Service - Inclusive estou com problemas ao adicionar um terceiro nó a topologia p2p utilizando o modo backup, recebo uma mensagem falando que o backup não é válido, apesar de conseguir adicionar o segundo nó com o mesmo backup.
    Outra questão a ser lembrada é que esse tipo de replicação os nós estarão online o tempo todo. Exemplo possuo servidor em todos estados. O ERP está constantemente em execução em todos estados com sua tabela local e frequentemente replicando para os outros estados. Ou seja a tabela é atualizada constantemente em todos nós da topologia. Se eu tiro o nó de São Paulo da topologia da replicação ou retiro apenas o artigo a tabela em São Paulo continuará sendo atualizada com as informações de São Paulo, quando fizer as alterações na tabela e for acrescentar novamente a topologia de replicação p2p precisarei que esses dados de São Paulo sejam replicados para todo Brasil e os dados dos outros estados sejam replicados para São Paulo. Logo se eu aplicar um snapshot/backup/SSIS em São Paulo ou em outro nó eu perderei as atualizações locais.

    Como resolver isso?

    Teria que parar o funcionamento em todo Brasil?

    Fazer atualização do schema da tabela em apenas um nó depois copiar para todos estados? 

    E essa cópia os dados já previamente inseridos também estarão sendo "monitorados" pela replicação?

    - Porque: Nos meus testes quando crio uma replicação p2p inicializo com o SSIS ou cópia dos dados, esses dados previamente copiados (carga inicial) caso eu faça um update em uma ponta não reflete em outra. Laboratório: ServidorA possuia 500 registros na tabela clientes, copiei a tabela clientes para o servidorB e servidorC, após estabelecer uma replicação p2p os dados inseridos no servidorA são sincronizados com o servidorB e servidorC, porém quando fiz um update no registro 352 (pertecente a carga inicial) não refletiu nos demais servidores, quando fiz um update no registro 501 (pertecente a inserção após a configuração da replicação) esse update é refletido em todos servidores. Isso me faz pensar que os dados da carga inicial não possuem um "vinculo".





    • Editado Ygo Rabelo quinta-feira, 21 de junho de 2012 17:51
    segunda-feira, 18 de junho de 2012 03:05
  • Ygo,

    Vamos por partes, seu post esta muito extenso e de dificil compreensão.

    Bom qual é o problema e qual é a sua necessidade?

    Você esta querendo utilizar replicação Peer-to-Peer, que na verdade é uma replicação do tipo transacional, onde somente são replicados os dados e não as estruturas.

    Como esta configurada a sua estrutura de Assinantes?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    terça-feira, 19 de junho de 2012 18:00
    Moderador
  • Olá Júnior, obrigado pela resposta.

    ok, vamos por partes:

    1) Gostaria de uma solução para alterar a tabela que esteja na replicação P2P. Pois após fazer a implantação da replicação, acredito que a fábrica de software algum dia poderá solicitar alguma alteração nos objetos, como fazer a alteração garantindo a consistencia dos dados e persistencia da solução em todos nós?

    obs.;

    Algumas modificações são replicadas com sucesso, tais como: adição de coluna, exclusão de coluna (sem precisar retirar a tabela da replicação). Outras já não são possíeis tais como: alterar chave primária.

    script do assinante:

    use

    [clientes]


    exec

    sp_addsubscription@publication = N'clientes', @subscriber = N'LABclientes2', @destination_db = N'clientes', @subscription_type = N'Push', @sync_type = N'replication support only', @article = N'all', @update_mode = N'read only', @subscriber_type = 0


    exec

    sp_addpushsubscription_agent@publication = N'clientes', @subscriber = N'LABclientes2', @subscriber_db = N'clientes', @job_login = null, @job_password = null, @subscriber_security_mode = 1, @frequency_type = 64, @frequency_interval = 1, @frequency_relative_interval = 1, @frequency_recurrence_factor = 0, @frequency_subday = 4, @frequency_subday_interval = 5, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 0, @active_end_date = 0, @dts_package_location = N'Distributor'


    GO


    • Editado Ygo Rabelo terça-feira, 19 de junho de 2012 20:01
    terça-feira, 19 de junho de 2012 19:58
  • Ygo,

    Alterar chave primária não é replicada? Mas a criação de uma nova chave ou exclusão esta sendo replicada?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 22 de junho de 2012 14:59
    Moderador
  • Sim ela é replicada.

    Acontece que esse é um projeto, e estou fazendo os testes necessários para colocar este ambiente em produção.

    Para isso preciso saber quais procedimentos e esforço administrativo no momento de uma atualização da estrutura das tabelas.

    Alguns DDL são possíveis ser executados e são propagados para todos nós, testei: adição de coluna, remoção de coluna, alteração de nome, alteração de tipo.

    Porém caso precise fazer alguma alteração na tabela, a qual não é possível com a tabela fazendo parte de uma replicação. Quais procedimentos para esta solução de replicação?

    sexta-feira, 22 de junho de 2012 18:02
  • Ainda em tempo, gostaria de saber se estou realmente utilizando a melhor solução. Caso alguém acredite que a merge seria uma melhor solução, gostaria de saber porque.
    sexta-feira, 22 de junho de 2012 18:04
  • Ygo,

    Cara sinceramente dizer que o Peer - to - Peer, é a melhor solução não é algo simples, pois vai envolver a sua necessidade e ambiente.

    Mas eu entendo que o Merge pode ser a melhor solução por se tratar de um recurso que já esta presente em outras versões do SQL Server o que poderá facilitar a busca de informações, como também, o conhecimento por parte de outros profissionais.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Ygo Rabelo quarta-feira, 17 de outubro de 2012 17:36
    terça-feira, 10 de julho de 2012 12:13
    Moderador