{"id":2733,"date":"2014-03-31T17:22:16","date_gmt":"2014-03-31T17:22:16","guid":{"rendered":"http:\/\/www.deuzebranaweb.com.br\/?p=2733"},"modified":"2014-03-31T17:22:16","modified_gmt":"2014-03-31T17:22:16","slug":"replicacao-master-master-no-mysql","status":"publish","type":"post","link":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/2014\/03\/31\/replicacao-master-master-no-mysql\/","title":{"rendered":"Replica\u00e7\u00e3o Master-Master no MySQL"},"content":{"rendered":"<h1><span style=\"font-size: 2em; font-weight: normal;\">Replica\u00e7\u00e3o Master-Master no MySQL<\/span><\/h1>\n<header>Posted in\u00a0<a title=\"View all posts in Linux\" href=\"http:\/\/www.douglaspasqua.com\/category\/linux\/\" rel=\"nofollow\">Linux<\/a>,\u00a0<a title=\"View all posts in MySQL\" href=\"http:\/\/www.douglaspasqua.com\/category\/mysql\/\" rel=\"nofollow\">MySQL<\/a>\u00a0By\u00a0<a title=\"Posts by Douglas V. Pasqua\" href=\"http:\/\/www.douglaspasqua.com\/author\/douglas-pasquagmail-com\/\" rel=\"nofollow\">Douglas V. Pasqua<\/a>\u00a0On March 23, 2012<\/header>\n<p>&nbsp;<\/p>\n<div>\n<p><strong>Introdu\u00e7\u00e3o<\/strong><\/p>\n<p>Neste artigo vamos demonstrar como configurar replica\u00e7\u00e3o Master-Master entre dois servidores MySQL. Este tipo de replica\u00e7\u00e3o normalmente \u00e9 usado em um sistema de failover\/cluster.<\/p>\n<p><strong>Preparando<\/strong><\/p>\n<p>O primeiro passo \u00e9 sincronizar os bancos de dados, utilizados na replica\u00e7\u00e3o, entre os dois servidores do MySQL. Podemos usar o\u00a0<em>mysqldump<\/em>\u00a0nesta tarefa.<\/p>\n<p>No servidor A:<br \/>\n<code># mysqldump -u root -p --databases base1 base2 &gt; servidorA-dump.sql<\/code><\/p>\n<p>No servidor B:<br \/>\n<code># mysql -u root -p &lt; servidorA-dump.sql<\/code><\/p>\n<p>Vamos assumir os seguintes endere\u00e7os IPs para os servidores:<\/p>\n<p>Servidor A: 192.168.0.1<br \/>\nServidor B: 192.168.0.2<\/p>\n<p><strong>Configurando Permiss\u00f5es de Usu\u00e1rio<\/strong><\/p>\n<p>O processo de replica\u00e7\u00e3o do MySQL exige uma conex\u00e3o ativa entre os dois servidores em ambos os lados. \u00c9 preciso definir um usu\u00e1rio\/senha para essa conex\u00e3o.<\/p>\n<p>No servidor A:<br \/>\n<code>GRANT ALL PRIVILEGES ON *.* TO replicacao@192.168.0.2 IDENTIFIED BY 'repl123' WITH GRANT OPTION;<\/code><\/p>\n<p>No servidor B:<br \/>\n<code>GRANT ALL PRIVILEGES ON *.* TO replicacao@192.168.0.1 IDENTIFIED BY 'repl123' WITH GRANT OPTION;<\/code><\/p>\n<p>Perceba que setamos os pervil\u00e9gios do usu\u00e1rio\u00a0<em>replicacao<\/em>\u00a0para todos os bancos de dados no MySQL. Por\u00e9m voc\u00ea pode definir somente as bases que ser\u00e3o inclu\u00eddas na replica\u00e7\u00e3o ao inv\u00e9s de incluir todas bases.<\/p>\n<p><strong>Configurando o MySQL<\/strong><\/p>\n<p><em>As configura\u00e7\u00f5es abaixo devem ser inclu\u00eddas na se\u00e7\u00e3o [mysqld] do my.cnf<\/em><\/p>\n<p>Servidor A:<\/p>\n<p><code>server-id = 1<br \/>\nauto-increment-increment = 2<br \/>\nauto-increment-offset = 1<\/code><\/p>\n<p>log-bin<br \/>\nbinlog-do-db = base1<\/p>\n<p><code>master-host = 192.168.0.2<br \/>\nmaster-user = replicacao<br \/>\nmaster-password = repl123<br \/>\nmaster-port = 3306<br \/>\nmaster-connect-retry = 60<br \/>\n<\/code><\/p>\n<p>Servidor B:<\/p>\n<p><code>server-id = 2<br \/>\nauto-increment-increment = 2<br \/>\nauto-increment-offset = 2<\/code><\/p>\n<p>log-bin<br \/>\nbinlog-do-db = base1<\/p>\n<p><code>master-host = 192.168.0.1<br \/>\nmaster-user = replicacao<br \/>\nmaster-password = repl123<br \/>\nmaster-port = 3306<br \/>\nmaster-connect-retry = 60<br \/>\n<\/code><\/p>\n<p>A defini\u00e7\u00e3o dos par\u00e2metros\u00a0<em>auto-increment-increment<\/em>\u00a0e\u00a0<em>auto-increment-offset<\/em>\u00a0evitam colis\u00e3o entre campos\u00a0<em>auto_increment<\/em>. Mantenha o mesmo valor no campo\u00a0<em>auto-increment-increment<\/em>\u00a0para os dois servidores. O campo\u00a0<em>auto-increment-offset<\/em>\u00a0mantenha sequencialmente entre os servidores. No caso, 1 e 2.<\/p>\n<p>O campo\u00a0<em>server-id<\/em>\u00a0tamb\u00e9m deve ser \u00fanico entre os dois servidores. No caso, 1 e 2.<\/p>\n<p>No exemplo de configura\u00e7\u00e3o acima estamos replicando somente o banco chamado\u00a0<em>base1<\/em>. Caso precise replicar mais de uma base de dados, voc\u00ea pode inserir quantas linhas do par\u00e2metro\u00a0<em>binlog-do-db<\/em>\u00a0forem necess\u00e1rias:<\/p>\n<p><code>binlog-do-db = base1<br \/>\nbinlog-do-db = base2<br \/>\nbinlog-do-db = base3<br \/>\n...<br \/>\n<\/code><\/p>\n<p>Caso voc\u00ea n\u00e3o especifique nenhum par\u00e2metro\u00a0<em>binlog-do-db<\/em>, todas as base de dados ser\u00e3o replicadas. Voc\u00ea tem tamb\u00e9m a op\u00e7\u00e3o de especificar o par\u00e2metro\u00a0<em>binlog-ignore-db<\/em>\u00a0para ignorar quais base de dados n\u00e3o ser\u00e3o replicadas. \u00c9 o processo inverso ao do par\u00e2metro\u00a0<em>binlog-do-db<\/em>:<\/p>\n<p><code>binlog-ignore-db = mysql<br \/>\nbinlog-ignore-db = information_schema<br \/>\n<\/code><\/p>\n<p><strong>Iniciando a replica\u00e7\u00e3o<\/strong><\/p>\n<p>Reinicie o MySQL nos dois serviores:<br \/>\n<code># \/etc\/init.d\/mysql restart<\/code><\/p>\n<p>Neste momento a replica\u00e7\u00e3o deve ter iniciado. Se por algum motivo n\u00e3o tiver sido iniciado (Verificar erro no arquivo de log do mysql). Entre nos dois servidores e execute o comando:<\/p>\n<p><code>mysql&gt; start slave<\/code><\/p>\n<p><strong>Testando<\/strong><\/p>\n<p>Entre no MySQL nos dois servidores e execute o comando:<br \/>\n<code>mysql&gt; show slave statusG<\/code><\/p>\n<p>Verifique os par\u00e2metros\u00a0<em>Slave_IO_Running<\/em>\u00a0e\u00a0<em>Slave_SQL_Running<\/em>. Ambos devem estar com o valor \u201cYES\u201d. Caso n\u00e3o esteja, refa\u00e7a o processo.<\/p>\n<p>Outro teste importante, \u00e9 fazer altera\u00e7\u00f5es na base de um servidor e verificar se a mudan\u00e7a foi replicada para o outro servidor e vice-cversa.<\/p>\n<p><strong>Conclus\u00e3o<\/strong><\/p>\n<p>Configurar uma replica\u00e7\u00e3o master-master no mysql \u00e9 relativamente simples conforme demonstrado neste artigo. Outros ambientes de replica\u00e7\u00e3o tamb\u00e9m n\u00e3o s\u00e3o complicados. Com poucos ajustes na configura\u00e7\u00e3o acima voc\u00ea consegue adicionar mais que 2 servidores na replica\u00e7\u00e3o de master para master. Espero que tenha ajudado. Obrigado.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>http:\/\/www.douglaspasqua.com\/2012\/03\/23\/replicacao-master-master-no-mysql\/<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Replica\u00e7\u00e3o Master-Master no MySQL Posted in\u00a0Linux,\u00a0MySQL\u00a0By\u00a0Douglas V. Pasqua\u00a0On March 23, 2012 &nbsp; Introdu\u00e7\u00e3o Neste artigo vamos demonstrar como configurar replica\u00e7\u00e3o Master-Master entre dois servidores MySQL. Este tipo de replica\u00e7\u00e3o normalmente \u00e9 usado em um sistema de failover\/cluster. Preparando O primeiro passo \u00e9 sincronizar os bancos&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":""},"categories":[13],"tags":[],"class_list":["post-2733","post","type-post","status-publish","format-standard","hentry","category-msql"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2733","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=2733"}],"version-history":[{"count":0,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/2733\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=2733"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=2733"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=2733"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}