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.