Olá pessoal. Continuamos a falar sobre replicação do SQL Server para o MySQL, descrevendo os passos para criar uma publicação Transacional. É nesta parte que especificamos qual tabela do SQL Server será replicada, por meio da criação da publicação.
Passo 6: Criando a Publicação
Criar uma publicação no SQL Server envolve a configuração de qual banco de dados e tabelas serão utilizadas na publicação. É importante notar que podemos criar uma publicação APENAS se já tivermos configurado os servidores que agiram como Publicador e o Distribuidor. Neste nosso exemplo de replicação tanto o Publicador como o Distribuidor são a mesma máquina, chamada PICHILIANI.
Para iniciar a criação da publicação iremos utilizar o assistente de Publicação do SQL Server. Este assistente nos guiará durante todos os passos da publicação e deve ser acionado a partir do Menu Tools, opção Wizards… do Enterprise Manager. Na janela de assistentes disponíveis devemos expandir o tópico Replication e escolher a opção Create Publication Wizard e clicar no botão OK, como a Figura 6.1 mostra.
Figura 6.1. Escolha do assistente de criação de Publicação.
Após a escolha do assistente Create Publication Wizard o SQL Server apresenta uma tela muito útil para o gerenciamento de publicações. Esta tela, apresentada na Figura 6.2, mostra cada banco de dados do servidor. Quando se expande o banco de dados são mostradas as publicações relacionadas, tornando fácil o gerenciamento de diversas publicações. Para o nosso exemplo, basta selecionar o banco de dados REPL_MSSQL_MYSQL e clicar no botão Create Publication… Como esta tela, apresentada na Figura 6.2, é utilizada para gerenciar as publicações, também vamos utilizá-la para criar a assinatura futuramente. Outros botões permitem a realização de tarefas relacionadas às publicações, como a alteração de propriedades ou a geração de scripts da publicação.
Figura 6.2. Janela de criação e configuração de publicações.
Ao clicar no botão Create Publication…, com o banco de dados REPL_MSSQ_MYSQL selecionado, a janela de boas vindas do assistente para criação de uma nova publicação é apresentada. Como esta tela é apenas informativa, podemos clicar no botão Avançar > para chegarmos à tela apresentada na Figura 6.3. Nesta tela devemos apenas confirmar para qual banco de dados que será criada a publicação, que no exemplo chama-se REPL_MSSQ_MYSQL. Após confirmar o banco de dados, basta clicar em Avançar > para seguirmos com o assistente.
Figura 6.3. Janela de escolha do banco de dados que vai receber a Publicação.
A próxima tela apresenta os três tipos de replicação disponíveis, junto com uma pequena explicação. Uma pequena descrição de cada tipo é apresentada em seguida:
Replicação Snapshot: Este tipo de replicação envia toda a estrutura e os dados no momento da sincronização. Por sempre toda a estrutura e os dados este tipo de replicação geralmente é a que mais consome largura de banda e a que mais demora. É utilizada em ambientes onde os servidores que recebem os dados, os assinantes, fazem modificações nos dados que não devem ser encaminhadas e, por esta característica, a cada sincronia a base de dados deve ser completamente recriada pela replicação.
Replicação Transacional: Este é o tipo de replicação mais utilizado, pois inicialmente é feita uma sincronia da estrutura para recriar o ambiente nos assinantes. A cada novo sincronia apenas os dados que foram inseridos/modificados/excluídos do Publicador são replicados para o assinante, na forma de transações. Por replicar apenas a diferença entre dados, esta replicação é consome menos recursos e é mais fácil de gerenciar. No nosso exemplo utilizaremos este tipo de replicação. Notem que, por padrão, a replicação Transacional não permite que os assinantes modifiquem os dados, ou seja, a base de dados do assinante é somente para leitura. Porém existe como habilitar a modificação dos dados para o assinante, mas não a sua propagação para o Publicador.
Replicação Merge: A replicação Merge é o tipo de replicação onde tanto os Assinantes como os Publicadores podem modificar os dados e encaminha-los para qualquer direção. Este tipo de replicação pode resultado em conflitos nos dados, pois a modificação em um determinado dado por um Publicador e por um Assinante pode ser diferente, gerando um conflito. Em geral, este tipo de replicação é a que dá mais trabalho para gerenciar e que pode ser substituída pela criação de duas replicações do tipo Merge.
Aqui foi apresentada apenas uma explicação simples de replicação. Para mais informações recomendo fortemente a leitura do tópico de replicação no Books OnLine, a documentação eletrônica oficial da Microsoft.
Como citado anteriormente, a replicação que utilizaremos neste exemplo é do tipo Transacional, como mostrada na Figura 6.4.
Figura 6.4. Escolhendo a replicação Transacional.
A próxima janela do assistente permite a especificação do tipo de assinante que estará envolvido nesta replicação. Aqui é importante lembrar que estamos acessando o MySQL por meio de um driver ODBC e por isso devemos marcar apenas a opção Heterogeneous data sources, such as Oracle or Microsoft Access; or servers running earlier versions of SQL Server, como a Figura 6.5 mostra.
Figura 6.5. Especificando fontes de dados heterogêneas na replicação.
Na próxima etapa do assistente devemos definir um artigo, que nada mais é do que quais tabelas ou views estarão envolvidas na publicação. Um artigo pode conter várias tabelas e views, assim como uma tabela ou uma view pode estar em diferentes artigos. Para o nosso exemplo, só existe a tabela TB_MSSQL_MYSQL no banco de dados REPL_MSSQ_MYSQL e por isso devemos selecionar a opção Show do lado esquerdo da janela para mostrar a tabela TB_MSSQL_MYSQL no lado direito. Também devemos selecionar a tabela no lado esquerdo. Esta janela é apresentada na Figura 6.6, que também permite a escolha de opções avançadas da publicação quando se clica no botão Article Defaults.
Uma pequena nota: se a tabela que selecionarmos para a publicação não possuir uma chave primária ela não poderá ser incluída no artigo, ou seja, ela não poderá ser replicada. Esta é uma exigência da replicação do tipo Transacional e, como a tabela TB_MSSQL_MYSQL, criada no passo 2, contém uma chave primária na coluna ID podemos seguir adiante com o assistente.
Figura 6.6. Escolha de tabelas e views para o artigo da publicação.
Em seguida, o assistente de publicação pergunta qual será o nome desta publicação o e qual é a descrição dela. Para facilitar, coloquei o nome desta replicação como From SQL Server to MySQL, porém pode-se colocar um nome padronizado. Também aconselho a colocação de uma descrição que contenha alguns detalhes sobre a publicação, como a Figura 6.7 mostra.
Figura 6.7. Colocando o nome e a descrição da Publicação.
Já estamos quase no final da criação da Publicação. Porém falta definir ainda se a publicação vai conter algum filtro. Este filtro permite que apenas algumas linhas da tabela, filtradas por uma cláusula WHERE, sejam envolvidas na publicação. Também pode-se especificar quais colunas podem ser envolvidas na replicação.
Imagem a seguinte situação: uma tabela grande contendo várias colunas precisa ser replicação da matriz para várias filiais. Porém cada filial deve receber apenas os seus dados que lhe pertencem. Uma técnica para resolver este problema de filtro de dados é a criação de uma coluna na tabela indicando qual dado deve ser replicado para qual filial. Em segunda, especifica-se um filtro como uma cláusula WHERE na replicação.
Para o nosso exemplo não utilizaremos filtros e, devido a isso, a opção No, create the publication as specified deve ser marcada, como a Figura 6.8 mostra.
Figura 6.8. Indicando que a publicação não contém filtros.
Com isso terminamos o assistente de criação de publicação. Ao clicar no botão Finish da última tela o SQL Server automaticamente já começa a criação dos jobs e depois objetos de bancos de dados necessários para a publicação, passo que é mostrado na Figura 6.9. Quando o SQL Server terminar de criar os objetos somos automaticamente redirecionados para a janela apresentada na Figura 6.2, porém agora a Publicação que acabamos de ser criada está selecionada. Notem que nada foi replicado ainda, pois nenhum assinante resolver assinar a publicação ainda.
Figura 6.9. Criação dos objetos da publicação.
Com o término do passo 6 a publicação já está pronta para ser assinada. O próximo passo que veremos envolve a criação de uma assinatura para a publicação que foi criada no passo 6.
Um grande abraço e até a próxima pessoal