Você está aqui: Home » Jelastic » Como configurar a replicação Multi-Master para MySQL no Jelastic

Como configurar a replicação Multi-Master para MySQL no Jelastic

44 Flares Twitter 4 Facebook 13 Google+ 4 LinkedIn 23 Email -- Filament.io 44 Flares ×

A todos os usuários Jelastic e aos que ainda não são, vamos explicar como configurar a replicação Multi-Master no MySQL. O processo é muito simples mas requer bastante atenção aos detalhes. Portanto, se for necessário, leia esse artigo quantas vezes forem necessárias. E, em caso de dúvidas, não hesite em nos contatar através do e-mail jelastic@websolute.com.br.

Para estabelecer a replicação de bancos de dados, você precisará de no mínimo dois servidores. Em nosso artigo vamos demonstrar como fazer a replicação entre dois servidores novos, recém-instalados. E é justamente aqui que o Jelastic vai te mostrar os recursos que tornarão o seu dia-a-dia muito mais fácil, rápido e prazeroso. Se você ainda não tem uma conta Jelastic, acesse agora o nosso portal, através do endereço http://www.websolute.com.br/jelastic-php-java.html e faça o seu cadastro gratuitamente. Você só precisa informar um endereço de e-mail válido. Se você já é usuário Jelastic, acesse a Console de Administração e siga os passos a seguir para criar dois servidores de banco de dados.

1. Criação dos Ambientes com Servidores MySQL
Acesse a Console de Administração do Jelastic e clique em Criar Ambiente.

Replicação Multi-Master MySQL Jelastic (1)

Em nosso artigo, vamos configurar dois ambientes, master-mysql-1 e master-mysql-2. Na tela a seguir demonstramos a criação do ambiente master-mysql-1, com um servidor de aplicação Apache 2.2, PHP 5.4 e banco de dados MySQL versão 5.6.17. Para criação do ambiente master-mysql-2, basta repetir os passos para criação do ambiente master-mysql-1. Tenha em mente que as versões e configurações dos ambientes podem variar de acordo com as suas necessidades e também em função do seu provedor Jelastic. Por exemplo, ao invés de rodar PHP você pode querer rodar um aplicativo em Java com Tomcat ou em Ruby. De qualquer forma, esse passo a passo para replicação é orientado somente a ambientes com MySQL, nas versões 5.1 ou superiores.

Caso você deseje fazer a replicação entre provedores Jelastic, por exemplo, entre ambientes hospedados na Websolute (Brasil) e na ServInt (EUA), você deverá habilitar o Endereço IPv4 Público no MySQL. Caso contrário, não há necessidade de habilitar esse recurso.

Replicação Multi-Master MySQL Jelastic (2)

Eu não disse que ia ser fácil? Imagine o tempo que levaria para instalar e configurar dois servidores MySQL no modelo “tradicional”. Agora vamos às configurações.

2. Configuração do Servidor master-mysql-1

Agora que os seus servidores MySQL estão instalados e rodando, vamos configurá-los para a replicação. Vamos começar pelo master-mysql-1. Selecione o ambiente master-mysql-1 em sua Console de Administração e clique no ícone de configuração do MySQL.

Replicação Multi-Master MySQL Jelastic (3)

Na janela master-mysql-1:mysql5:config, edite o arquivo /etc/my.cnf, localize o parâmetro #skip-networking e insira os parâmetros em realce conforme a tela abaixo.

Replicação Multi-Master MySQL Jelastic (4)

Mas o que são esses parâmetros exatamente?

server-id = 1 (Determina que esse servidor será identificado como número 1.)

bin-log-do-db = example e bin-log-do-db = teste (Estabelecem que as bases de dados example e teste serão replicadas entre os servidores. Note que essas bases ainda não devem ter sido criadas. Depois   que estiver ambientado com a replicação Multi-Master você pode incluir as suas próprias bases de dados.)

log-bin = /var/log/mysql/mysql-bin.log (Informa o local no servidor em que os logs binários serão armazenados. Os logs binários contem os registros de alterações na base de dados, que serão utilizados na replicação.)

auto_increment_increment = 1 (Configura o fator de incremento para tabelas com colunas AUTO_INCREMENT. É importante configurar esse parâmetros de maneira global para não haver discrepâncias na replicação de tabelas que utilizam esse recurso.)

auto_increment_offset = 1 (No contexto da replicação multi-master esse parâmetro pode ser utilizado para evitar conflitos em casos de inserções simultâneas na mesma tabela nas duas bases. No nosso artigo, vamos manter o valor 1 para o master-mysql-1 e 2 para o master-mysql-2.)

Os parâmetros auto_increment_increment e auto_increment_offset podem e devem ser configurados de acordo com as características da sua aplicação. A nossa sugestão é que o parâmetro auto_increment_offset seja configurado com o mesmo valor do server-id, para evitar conflitos de replicação.

Assim que terminar a alteração do arquivo /etc/my.cnf, clique em Salvar e reinicie o nó master-mysql-1, conforme a figura abaixo.

Replicação Multi-Master MySQL Jelastic (5)

Para verificar se tudo correu conforme o esperado, clique na janela master-mysql-1:mysql5:ações e certifique-se de que o MySQL foi iniciado com sucesso.Replicação Multi-Master MySQL Jelastic (6)

Caso ocorra algum erro nessa etapa, repita o procedimento novamente ou entre em contato com o seu Suporte Técnico.

 3. Configuração do Servidor master-mysql-2

Se tudo tiver corrido bem até aqui, agora é a hora de iniciar a configuração do segundo servidor (master-mysql-2).

Replicação Multi-Master MySQL Jelastic (7)

Selecione o ambiente master-mysql-2 em sua Console de Administração e clique no ícone de configuração do MySQL.

Na janela master-mysql-2:mysql5:config, edite o arquivo /etc/my.cnf, localize o parâmetro #skip-networking e insira os parâmetros em realce conforme a tela abaixo.

Replicação Multi-Master MySQL Jelastic (8)

É importante ficar atento aos parâmetros server-id e auto_increment_offset, configurados com valores diferentes nesse servidor.

Assim que terminar a alteração do arquivo /etc/my.cnf, clique em Salvar e reinicie o nó master-mysql-2, da mesma forma como foi feito no passo anterior.

Não se esqueça de clicar na janela master-mysql-2:mysql5:ações e certificar-se de que o MySQL tenha sido iniciado com sucesso.

Caso ocorra algum erro nessa etapa, repita a etapa 3 do procedimento ou entre em contato com o seu Suporte Técnico.

 4. Ativando da Replicação nos Servidores

Estamos quase lá! A próxima tarefa é ativar a replicação entre os servidores. Vai ser necessário acessar a console do MySQL utilizando o phpMyAdmin. Vamos começar pelo master-mysql-1.

Replicação Multi-Master MySQL Jelastic (9)

Através da Console de Administração do Jelastic, clique no ícone Abrir no Navegador do MySQL do ambiente master-mysql-1. Você será direcionado para a página de Login do phpMyAdmin. Nessa tela é necessário acessar utilizando o usuário root e a senha que você deve ter recebido por e-mail no momento da criação dos ambientes.Replicação Multi-Master MySQL Jelastic (10)

Na console do phpMyAdmin, clique na aba SQL e execute o seguinte comando para criação do usuário de replicação:

create user 'replicator'@'%' identified by 'password';

E o seguinte para conceder as permissões necessárias.

grant replication slave on *.* to 'replicator'@'%';

Importante: a permissão deve ser concedida de maneira global, não por database.

Tenha certeza de que a execução não retornou nenhum erro. Caso isso aconteça, verifique a sintaxe dos comandos ou entre em contato com o seu Suporte Técnico.

Você pode alterar o nome de usuário de acordo com as suas políticas e/ou necessidades e DEVE alterar a senha para uma que só você tenha conhecimento. Não se esqueça de armazená-las para uma eventual recuperação no futuro.

Para verificar se as configurações, até agora, estão corretas, execute na mesma aba SQL o comando:

show master status;

O resultado deve ser algo como o apresentado abaixo. O numeral do log binário e a posição podem variar de ambiente para ambiente. De qualquer forma guarde essas informações. Elas serão necessárias mais para frente, na hora de sincronizar os dois servidores.Replicação Multi-Master MySQL Jelastic (10)

Agora, repita o mesmo procedimento para o servidor master-mysql-2.

Replicação Multi-Master MySQL Jelastic (12)

Clique no ícone Abrir no Navegador do MySQL do ambiente master-mysql-2 e você será direcionado para a página de Login do phpMyAdmin. Nessa tela é necessário acessar utilizando o usuário root e a senha que você deve ter recebido por e-mail no momento da criação dos ambientes.Replicação Multi-Master MySQL Jelastic (13)

Clique na aba SQL e execute o seguinte comando para criação do usuário de replicação:

create user 'replicator'@'%' identified by 'password';

E o seguinte para conceder as permissões necessárias.

grant replication slave on *.* to 'replicator'@'%';

Tenha certeza de que a execução não retornou nenhum erro. Caso isso aconteça, verifique a sintaxe dos comandos ou entre em contato com o seu Suporte Técnico.

Lembrando mais uma vez que você pode alterar o nome de usuário de acordo com as suas políticas e/ou necessidades e DEVE alterar a senha para uma que só você tenha conhecimento. Não se esqueça de armazená-las para uma eventual recuperação no futuro.

Para verificar se as configurações, até agora, estão corretas, execute na mesma aba SQL o comando:

show master status;

O resultado esperado deve ser algo como o apresentado na tela a seguir. O numeral do log binário e a posição podem variar de ambiente para ambiente. Guarde essas informações. Elas serão necessárias mais para frente, na hora de sincronizar os dois servidores.Replicação Multi-Master MySQL Jelastic (14)

Agora vamos ativar a replicação. Como já estamos na console do MySQL do ambiente master-mysql-2, vamos começar por ele. Na mesma janela SQL, execute os seguintes comandos:

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST = '192.168.14.124', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 726;
START SLAVE;

Mas afinal o que são esses parâmetros?

MASTER_HOST (Endereço IP do servidor que enviará alterações para o servidor master-mysql-2. No nosso exemplo, este servidor é o master-mysql-1 e endereço utilizado foi o 192.168.14.124, fornecido pelo Jelastic durante a configuração do ambiente. Se você estiver fazendo a replicação entre provedores Jelastic, você deverá utilizar o endereço IPv4 Público fornecido durante a configuração do ambiente).

MASTER_USER (Usuário do servidor master-mysql-1 definido para execução da replicação).

MASTER_PASSWORD (Senha definida para o usuário de replicação no servidor master-mysql-1).

MASTER_LOG_FILE (Nome do arquivo de log binário no servidor master-mysql-1).

MASTER_LOG_POS (Posição atual do arquivo de log no servidor master-mysql-1).

Certifique-se de que o comando tenha sido executado sem erros. Você pode fazer isso executando o seguinte comando na aba SQL do phpMyAdmin:

show slave status;

Próxima tarefa: repetir a ativação no servidor master-mysql-1.

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST = '192.168.14.124', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 726;
START SLAVE;

Veja que os parâmetros informados são diferentes no servidor master-mysql-2.

MASTER_HOST (Endereço IP do servidor que enviará alterações para o servidor master-mysql-2. No nosso exemplo, este servidor é o master-mysql-2 e endereço utilizado foi o 192.168.15.121, fornecido pelo Jelastic durante a configuração do ambiente. Se você estiver fazendo a replicação entre provedores Jelastic, você deverá utilizar o endereço IPv4 Público fornecido durante a configuração do ambiente).

MASTER_USER (Usuário do servidor master-mysql-2 definido para execução da replicação).

MASTER_PASSWORD (Senha definida para o usuário de replicação no servidor master-mysql-2).

MASTER_LOG_FILE (Nome do arquivo de log binário no servidor master-mysql-2).

MASTER_LOG_POS (Posição atual do arquivo de log no servidor master-mysql-2).

Certifique-se de que o comando tenha sido executado sem erros. Você pode fazer isso executando o seguinte comando na aba SQL do phpMyAdmin:

show slave status;

Pronto, terminou! Tudo o que for criado em qualquer um dos servidores, será replicado para o outro. Não acredita? Então vamos testar a replicação.

 

5. Testando a Replicação entre os Servidores

Muito provavelmente você ainda está com as janelas do phpMyAdmin abertas. Caso contrário, acesse os bancos de dados master-mysql-1 e adicione um Novo BD com o nome example. Por que utilizar esse nome? Lembre-se que nós habilitamos a replicação somente para os BDs example e teste utilizando o parâmetro binlog-do-db nos arquivo /etc/my.cnf). Se for necessário habilitar a replicação em diferentes BDs, basta alterar o parâmetro binlog-do-db em todos os servidores MySQL configurados para replicação.

Depois de concluído, acesso o master-mysql-2 e verifique se o BD example apareceu na lista de BDs deste servidor.

Aproveite que já está no servidor master-mysql-2 e crie uma tabela, preferencialmente com uma coluna AUTO_INCREMENT, e veja se a replicação funciona para o master-mysql-1.

Insira, altere e remova registros em ambos os servidores para testar e “pegar confiança” na solução. Assim que estiver confortável com o funcionamento, vá em frente e crie um ambiente de produção com esses recursos. Apenas não esqueça de fazer um backup antes de começar. Essa solução irá lhe proporcionar um ambiente seguro, de alta disponibilidade e até distribuído geograficamente dependendo das características de seu projeto.

Caro leitor, por hoje é só. Espero ter ajudado compartilhando um pouco da nossa experiência. Lembre-se: não hesite em contatar o seu Suporte Técnico em caso de dúvidas. Mas, se não puderem te ajudar, fale conosco. Com certeza iremos te auxiliar na implementação desse e muitos outros recursos de Cloud Computing, alguns exclusivos da Websolute.

Sobre lschedel

Luis Schedel é CTO e co-fundador da Websolute, primeira empresa a instalar uma nuvem pública 100% instalado no Brasil utilizando Jelastic. Adepto da autoaprendizagem e entusiasta de todas as disciplinas da Tecnologia da Informação, também dedica seu tempo livre à astronomia amadora e a compreensão dos mistérios da física quântica.

4 Comentários

  1. André says:

    tentei fazer uma configuração de replicação como descreveu e não funciona, no ambiente websolute, da esse erro:

    [ERROR] Slave I/O: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593

    não conecta o I/O e nao sincroniza, já tentei de tudo , estou usando o ambiente de teste mais imagino que não seja esse o problema, preciso me certificar do funcionamento para contratar o serviço efetivamente, pode me ajudar?

    • André, não encontramos um ambiente com esta configuração para poder te ajudar no que estivesse errado. Você quer uma ajuda para fazer esta configuração funcionar? Tem um email para contato?

  2. Cristiano Rodrigues says:

    Após realizar essas configurações de replicação multimaster ela funciona como failover também? Qualquer um dos dois servidores tiver um down de horas o outro assume e quando o que caiu voltar a replicação continua normalmente sem necessidade de passar nenhum comando para que o outro servidor assuma quando um estiver down ou nenhum comando para que volte a funcionar a replicação? Muito obrigado!

Deixe o seu comentário!

Voltar ao topo
Optimization WordPress Plugins & Solutions by W3 EDGE