Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Configurando e configurando a replicação do SQL Server


A Replicação do SQL Server é um dos recursos de sincronização de dados que é usado para copiar e distribuir os objetos e dados do banco de dados do SQL Server entre os bancos de dados localizados na mesma instância do SQL Server ou em instâncias diferentes e sincronizá-los entre esses bancos de dados para mantê-los de forma consistente. Estado.

Componentes de replicação do SQL Server


A replicação do SQL Server consiste nos componentes principais abaixo:
  • Artigos :a tabela de banco de dados, procedimentos armazenados ou exibições que são considerados a unidade básica da Replicação do SQL Server.
  • Distribuidor :a instância do SQL Server que contém a Distribution banco de dados, que armazena os metadados e o histórico de replicação. Leve em consideração que o Editor pode ser atribuído a apenas um Distribuidor, mas o Distribuidor pode atender a vários Editores.
  • Editora :a instância do SQL Server que contém o banco de dados de origem e disponibiliza os dados para serem distribuídos para outros locais.
  • Assinante :a instância do SQL Server que recebe os dados da Replicação SQL do(s) Publicador(es) e os aplica ao banco de dados de destino e transmite as alterações de dados de volta ao Publicador em alguns tipos de replicação.
  • Agente de instantâneo de replicação :esse agente é responsável pela sincronização inicial em todos os tipos de replicação que fornecem uma cópia completa dos artigos do banco de dados do Publicador ao Assinante.
  • Agente do leitor de registros :este agente é usado para replicar as transações do Publicador para o Assinante continuamente na Replicação Transacional, lendo o log de transações do banco de dados de origem.
  • Agente de distribuição :este agente é usado para aplicar o instantâneo inicial ao banco de dados de destino e rastrear e aplicar as alterações contínuas de dados ao banco de dados de destino. Este agente é usado apenas com as replicações transacionais e de instantâneo.
  • Agente de mesclagem :Este agente é responsável por copiar as alterações do Assinante para o Publicador e, em seguida, copiar todas as alterações do Publicador para o Assinante, em ambos os sentidos. Este agente é usado apenas com a replicação Merge.

Tipos de replicação do SQL Server


O SQL Server nos fornece diferentes tipos de replicação que podem ser usados ​​para distribuição de dados, com base nos requisitos de sincronização de dados. Todos os tipos de Replicação SQL iniciam a sincronização inicial entre o Publicador e o Assinante copiando um instantâneo de todos os dados do Publicador para o Assinante. Esses tipos de replicação do SQL Server incluem:
  • Replicação Transacional :neste tipo de replicação, todas as alterações realizadas no lado do Publicador serão entregues e aplicadas diretamente no lado do Assinante. Um exemplo da Replicação Transacional é o cenário de integração de dados entre diferentes sites.
  • Replicação de instantâneo :nesse tipo de replicação, um instantâneo é obtido do Publicador e aplicado ao Assinante uma vez, sem distribuir as alterações contínuas após o instantâneo, até que ocorra a próxima sincronização, na qual um novo instantâneo será copiado e aplicado ao Assinante novamente.
  • Mesclar replicação :nesse tipo de replicação, as alterações podem ser executadas e sincronizadas nos lados do Publicador e do Assinante e sincronizadas quando o assinante está conectado à rede. Um exemplo do uso da Replicação de mesclagem é a troca de dados entre usuários do aplicativo de ponto de venda.
  • Replicação ponto a ponto :um tipo especial de replicação transacional em que o editor distribui as alterações de dados para vários assinantes ao mesmo tempo.
  • Replicação bidirecional :outro tipo especial de replicação transacional em que ambos os servidores atuam como editor e assinante e trocam dados entre si.

Requisitos de replicação do SQL Server


Antes de configurar e configurar o site de replicação SQL, precisamos nos certificar de que os seguintes pontos sejam verificados:
  • O componente SQL Server Replication é instalado em todos os servidores participantes, no Publicador, no Assinante e no Distribuidor. Isso deve ser instalado durante a instalação da instância do SQL Server ou adicionado à instância do SQL existente posteriormente, usando o assistente de instalação do SQL Server, conforme abaixo:
  • Há espaço suficiente nos servidores para a criação do instantâneo, os dados do banco de dados publicados no assinante e o crescimento do log de transações do banco de dados do Publicador.
  • O SQL Server Agent está em execução, para que os agentes de replicação do SQL Server possam criar os trabalhos do SQL Agent relacionados e que os trabalhos sejam executados sem nenhum problema.
  • Há largura de banda de rede suficiente entre as instâncias participantes do SQL Server.
  • As instâncias de Publicador, Distribuidor e Assinante podem se comunicar, e as portas TCP que essas instâncias SQL escutam são abertas nas regras de firewall. Em outras palavras, podemos nos conectar a cada instância SQL das outras instâncias sem nenhum problema de rede ou conectividade.
  • Os artigos do banco de dados do editor que serão replicados devem ter uma restrição de chave primária previamente definida, para manter a exclusividade dos dados.
  • A conta que será usada para criar o site de replicação e executar os agentes de replicação deve ser pelo menos um membro da função de banco de dados fixa db_owner nos bancos de dados Publicador, Distribuidor e Assinante, além da permissão de leitura e gravação em a pasta de instantâneos.

Primeiros passos


Neste artigo, mostraremos como usar o tipo de Replicação Transacional para replicar as tabelas do banco de dados AdventureWorks2017 entre duas instâncias do SQL Server; SQL1 instância que atuará como Distribuidor e Publicador, e o SQL2 instância que atuará como Assinante.

A Replicação Transacional do SQL Server será configurada em três etapas:
  • Configure o Distribuidor.
  • Configure o editor.
  • Configurar o Assinante

Vamos discutir essas etapas em detalhes.

Configurar o Distribuidor


Para configurar o Distribuidor, conecte-se ao “SQL1 ” Instância do SQL Server que atuará como Distribuidor, que é a mesma instância do Publicador em nosso Exemplo aqui, navegue no nó Replicação no Explorador de Objetos do SSMS, clique com o botão direito do mouse em Replicação nó e escolha Configurar distribuição … opção, conforme mostrado abaixo:



A primeira janela que será exibida no assistente Configurar Distribuição é o assistente inicial, que resumirá a lista de ações que serão executadas nesse Assistente. Clique em Avançar para prosseguir:



Na próxima janela, você será solicitado a selecionar qual instância do SQL Server atuará como Distribuidor. Ele oferece a opção de selecionar a instância atual do SQL Server como Distribuidor e criar o banco de dados do sistema de distribuição nessa instância ou especificar outra instância do SQL Server a ser usada como Distribuidor. Neste cenário, usaremos a instância SQL1 atual como Distribuidor. Selecione a opção que atende ao seu plano de design e clique em Avançar continuar:



Como o serviço SQL Server Agent desempenha um papel vital no processo de replicação do SQL Server, onde um trabalho do agente SQL Server será criado para cada agente de replicação, é recomendável alterar o modo de inicialização se o serviço SQL Server Agent de Manual (por padrão ) para ser Automático. Para que ele seja executado automaticamente quando o SQL Server for reiniciado, sem correr o risco de esquecer de iniciá-lo manualmente. Este assistente fornece a capacidade de alterar o modo de inicialização do SQL Server Agent Service automaticamente, levando em consideração que a conta de serviço do SQL Server possui privilégios de administrador nesse servidor para executar essa ação. No nosso caso, realizaremos essa alteração manualmente. Clique em Avançar para prosseguir:



Depois disso, o assistente solicitará que você especifique a pasta onde o instantâneo de sincronização inicial será criado. Especifique uma pasta na unidade de disco que tenha espaço suficiente e clique em Avançar continuar:



Na próxima janela, você será solicitado a especificar o nome do banco de dados de distribuição e o local onde armazenar os dados e arquivos de log desse banco de dados. Especifique seu nome e local personalizados ou mantenha as configurações padrão e clique em Avançar para prosseguir:



Depois disso, você precisa selecionar a lista de instâncias do SQL Server que atuarão como Publicadores e armazenar seus metadados nesse banco de dados de distribuição. Se você tiver uma topologia predefinida, adicione todos os editores candidatos e clique em Avançar continuar:



Na próxima janela, escolha as ações que serão executadas por esse assistente, seja para configurar a distribuição diretamente, gerar um arquivo de script para as etapas de configuração mencionadas ou ambas. Em nosso cenário, vamos configurar a Distribuição diretamente. Clique em Avançar para prosseguir:



Na janela Concluir o Assistente, revise todas as seleções que você executou anteriormente e certifique-se de que nenhuma alteração deve ser realizada nessas seleções e clique em Concluir para iniciar o processo de configuração:



Quando o processo de configuração de distribuição for concluído com êxito, o assistente o notificará com uma marca de verificação verde ao lado de cada ação. Se algum problema for enfrentado, uma mensagem de erro significativa será exibida para corrigi-lo e repetir a configuração novamente. Como todas as ações foram concluídas com sucesso, Fechar o assistente de configuração:



Se você expandir o nó System Databases, no SSMS Object Explorer, verá que é criado um novo banco de dados do sistema de distribuição que será usado para armazenar os metadados do SQL Server Replication, conforme mostrado abaixo:


Configurar o editor


Após configurar o Distribuidor, a próxima etapa é configurar o Publicador que atua como fonte de dados para os outros sites.

Para configurar o Publicador, conecte-se à instância do SQL Server que contém o banco de dados a ser publicado, navegue no nó Replicação do SQL Server no Pesquisador de Objetos, clique com o botão direito do mouse no nó Publicações Locais e escolha Nova Publicação… opção, conforme abaixo:



A primeira janela do Assistente de Nova Publicação é a página inicial, que mostra a lista de ações que serão executadas nesse assistente. Depois de ler como este assistente o ajudará, clique em Avançar continuar:



Na próxima página, você será solicitado a selecionar o banco de dados que será publicado para os Assinantes, que é o banco de dados AdventureWorks2017 em nossa demonstração aqui. Clique em Avançar para prosseguir:



Depois disso, você será solicitado a selecionar o tipo de publicação que consegue usar. Discutimos anteriormente neste artigo a lista de tipos de replicação do SQL Server que são fornecidos no SQL Server. Nesta demonstração, usaremos a Publicação Transacional tipo. Clique em Avançar continuar:



Na página Artigos, você pode selecionar a lista de objetos de banco de dados que planeja replicar para os Assinantes. Você tem a opção de escolher todos os objetos disponíveis em cada tipo ou expandir o tipo do objeto e selecionar a lista de objetos a serem replicados. Nesta demonstração, replicaremos todas as tabelas do banco de dados para os Assinantes. Depois de revisar a seleção do objeto, clique em Avançar para prosseguir:



O SQL Server também permite adicionar filtros para os objetos de banco de dados selecionados e replicar apenas os dados que atendem aos critérios de filtros adicionados. Se você planeja replicar todas as linhas da tabela, pule esta página clicando no botão Próximo botão:



Na página Snapshot Agent, especifique se você planeja criar o instantâneo de sincronização inicial imediatamente, agende-o para ser executado posteriormente ou execute-o manualmente ao concluir a configuração da replicação. Nesta demonstração, criarei um instantâneo após concluir a configuração de replicação do SQL Server. Clique em Avançar continuar:



Depois disso, você será solicitado a configurar a conta que será usada para executar o Snapshot Agent e os Log Reader Agents. Esse usuário deve ter pelo menos a permissão db_owner no banco de dados Publicador, Distribuidor e Assinante, além de permissões de Leitura e Gravação na pasta de instantâneo. Você também pode usar a conta SQL Agent Service para executar esses agentes de replicação do SQL Server, o que não é recomendado em termos de segurança. Forneça a conta autorizada e clique em Avançar continuar:



Na página Ações do Assistente, selecione as ações que serão executadas após a conclusão deste assistente, que inclui a criação da publicação e a geração de um arquivo de script para criar a publicação posteriormente ou usar esse script como modelo para outros servidores. Nesta demonstração, escolheremos Criar a publicação e clique em Avançar para prosseguir:



A última página é o Complete the Wizard, no qual você precisa fornecer o nome da publicação e revisar suas escolhas dentro deste assistente, então clique em Finish para prosseguir com a criação da Publicação:



Quando o assistente de criação de publicação estiver concluído, ele mostrará o resultado do processo de criação da publicação e se o processo foi concluído com êxito com verificações verdes ou falhou em uma etapa específica com uma mensagem de erro significativa. Nesta demonstração, a publicação é criada com sucesso sem problemas, conforme mostrado abaixo:



Para verificar se a publicação foi criada com êxito, expanda o nó Publicações Locais no nó Replicação do SQL Server do Pesquisador de Objetos do SSMS e verifique a publicação recém-criada. Você também pode revisar e modificar as configurações da publicação nessa página Propriedades da publicação. A Publicação será assim:


Configurar o Assinante


Por enquanto, temos o Publicador e o Distribuidor configurados com sucesso, é o momento de configurar o Assinante, que atua como destino dos dados e recebe os dados do Assinante.

Para configurar o Assinante, na mesma instância do Publicador, expanda o nó SQL Server Replication no SSMS Object Explorer, clique com o botão direito do mouse no nó Local Subscriptions e selecione New Subscriptions … opção, conforme mostrado abaixo:



A primeira janela exibida no Assistente de Nova Assinatura é a página inicial, que mostra como esse assistente o ajudará na configuração do Assinante. Clique em Avançar para prosseguir:



A primeira etapa na configuração do Assinante é selecionar o Publicador para o qual o Assinante será criado e o banco de dados de Publicação que atuará como fonte de dados para esse Assinante. Selecione o banco de dados de publicação dos bancos de dados listados e clique em Avançar continuar:



Depois disso, você será solicitado a especificar se deseja executar todos os agentes no lado do Distribuidor e enviar as alterações para o Assinante, fornecendo administração centralizada para o processo de sincronização de replicação ou executar cada agente em seu próprio Assinante que extrairá as alterações do Publicador , reduzindo a sobrecarga de processamento no lado do Distribuidor e permitindo que a sincronização de cada assinante seja administrada separadamente. Nesta demonstração, escolheremos a assinatura push e clicaremos em Avançar continuar:



Na próxima janela, você precisa adicionar a instância do SQL Server do Assinante e o banco de dados de destino da Assinatura, com a capacidade de criar esse banco de dados caso ele não exista, conforme mostrado abaixo:



Na página Distribution Agent Security, especifique a conta sob a qual o Distribution Agent será executado para executar o processo de sincronização e a conta que será usada para se conectar às instâncias do SQL Server do Distribuidor e do Assinante. Recomenda-se fornecer uma conta de domínio autorizada que tenha permissão no Distribuidor e no Assinante, com a capacidade de usar a conta do SQL Agent Service para se conectar ao Distribuidor e ao Assinante, o que não é recomendado em termos de segurança. Depois de fornecer a conta de segurança autorizada, clique em Avançar continuar:



Na próxima página do assistente de Nova Assinatura, especifique o agendamento de sincronização para cada agente. Mantenha a configuração padrão se desejar que a sincronização seja executada continuamente e clique em Avançar continuar:



Depois disso, você pode especificar se deseja inicializar as Assinaturas com um instantâneo da publicação e quando realizar esse processo de inicialização. Nesta demonstração, optamos por inicializar a Assinatura na primeira sincronização, conforme mostrado abaixo:



Na janela Ações do Assistente, você pode escolher quais ações devem ser executadas no final deste assistente. Por exemplo, este assistente oferece a opção de criar a(s) assinatura(s) configurada(s) e gerar um arquivo de script para criar as assinaturas posteriormente ou em outra instância do SQL Server, da seguinte forma:



Depois disso, o assistente fornecerá um resumo de todas as configurações que você selecionou nesse assistente para verificá-lo antes de iniciar a configuração da assinatura. Se todas as seleções estiverem corretas, clique em Concluir para iniciar o processo de configuração:



Se a operação de criação da assinatura for concluída com sucesso, o assistente nos notificará com uma verificação verde para cada ação concluída ou nos fornecerá uma mensagem de erro significativa em caso de falha, conforme mostrado abaixo:



Para verificar se a Assinatura foi criada com sucesso, no nó Replicação do Pesquisador de Objetos do SSMS, expanda a Publicação criada anteriormente e você verá todas as Assinaturas conectadas a esse Publicador e receberá dados dele, conforme mostrado abaixo:


Criar instantâneo de sincronização inicial


Se você não escolheu criar um instantâneo de sincronização inicial durante a criação do Publicador, ainda poderá criar o instantâneo após configurar os componentes de replicação.

Para criar um instantâneo de sincronização inicial, clique com o botão direito do mouse na publicação criada e escolha Visualizar status do agente de instantâneo opção. Na janela aberta, clique no botão Iniciar para executar o agente de instantâneo e criar o instantâneo de sincronização inicial. Você também pode monitorar o andamento do processo de criação do snapshot até que o snapshot de todos os artigos seja criado com sucesso, conforme abaixo:


Monitorar a sincronização


Assim que o instantâneo dos artigos replicados for criado, o processo de sincronização com o Assinante será iniciado automaticamente, gravando todos os artigos desse instantâneo para o Assinante. Para monitorar o processo de sincronização, clique com o botão direito do mouse na Assinatura em Replicação do SQL Server nó do SSMS Object Explorer e escolha a opção Exibir status de sincronização opção, onde mostrará o número de transações e comandos realizados no Assinante, conforme mostrado abaixo:



Além disso, você pode monitorar o status de todos os agentes de replicação e o número de comandos pendentes no lado do Distribuidor e não aplicados no lado do Assinante, clicando com o botão direito do mouse no nome da publicação e escolhendo a janela Launch Replication Monitor, conforme mostrado abaixo:



Para verificar se o site de replicação está funcionando bem, vamos adicionar um novo registro a um dos artigos replicados, tabela “Funcionário”, no lado do Publicador, que não está disponível no lado do Assinante, então você verá no monitor de replicação janela que um novo registro é entregue do Publicador ao Distribuidor e depois ao Assinante. Depois disso, você verá que o novo registro está disponível na tabela Employee do lado do Assinante, conforme mostrado claramente abaixo:



Com passos claros e fáceis, construímos um site completo de Replicação Transacional que está sincronizado e funcionando bem. No próximo artigo, veremos como solucionar problemas de um site de replicação do SQL Server existente. Fique atento.