{"id":347,"date":"2015-11-25T18:24:57","date_gmt":"2015-11-25T18:24:57","guid":{"rendered":"http:\/\/arripio.com.br\/?p=347"},"modified":"2018-07-19T19:40:08","modified_gmt":"2018-07-19T19:40:08","slug":"instalacao-e-configuracao-de-alta-disponibilidade-com-replicacao-dos-dados-no-sgbd-percona-server-5-6-26-utilizando-percona-xtrabackup-e-o-keepalived","status":"publish","type":"post","link":"https:\/\/arripio.com.br\/?p=347","title":{"rendered":"Replica\u00e7\u00e3o &#8211; Percona &#8211; Xtrabackup &#8211; keepalived."},"content":{"rendered":"<p>Autor: Dauro Lima Sobrinho<\/p>\n<p>Este tutorial tem como objetivo auxiliar a instala\u00e7\u00e3o e configura\u00e7\u00e3o de uma solu\u00e7\u00e3o de alta disponibilidade com replica\u00e7\u00e3o dos dados no SGBD Percona Server 5.6.26, utilizando Percona Xtrabackup e o keepalived.<\/p>\n<p>Distribui\u00e7\u00e3o: CentOS 6.7<br \/>\nNode 1: 10.1.31.70<br \/>\nNode 2: 10.1.31.71<\/p>\n<p>1\u00ba Passo: Instalar o reposit\u00f3rio Percona.<br \/>\n<code>yum install http:\/\/www.percona.com\/downloads\/percona-release\/redhat\/0.1-3\/percona-release-0.1-3.noarch.rpm<\/code><\/p>\n<p>2\u00ba Passo: Instalar o SGBD Percona.<br \/>\n<code>yum install Percona-XtraDB-Cluster-56.x86_64 percona-xtrabackup.x86_64\u00a0galera.x86_64<br \/>\n<\/code><\/p>\n<p>3\u00ba Passo: Inicializar o servi\u00e7o do SGBD Percona.<\/p>\n<p>4\u00ba Passo: Criar usu\u00e1rio para a replica\u00e7\u00e3o.<br \/>\n<code>CREATE USER '[USER_NAME]'@'localhost' IDENTIFIED BY '[PASSWORD]';<\/code><\/p>\n<p>GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO &#8216;[USER_NAME]&#8217;@&#8217;localhost&#8217;;<\/p>\n<p>flush privileges;<\/p>\n<p>5\u00ba Passo: Configurar o my.cnf dos servidores.<br \/>\nMASTER: 10.1.31.70<br \/>\n<code>[mysqld]<br \/>\ndatadir=\/var\/lib\/mysql<br \/>\nsocket=\/var\/lib\/mysql\/mysql.sock<br \/>\nuser=mysql<br \/>\n# Disabling symbolic-links is recommended to prevent assorted security risks<br \/>\nsymbolic-links=0 <\/code><\/p>\n<p>wsrep_provider=\/usr\/lib64\/libgalera_smm.so<br \/>\nwsrep_cluster_address=gcomm:\/\/10.1.31.71<br \/>\nbinlog_format=ROW<br \/>\ndefault_storage_engine=InnoDB<br \/>\ninnodb_locks_unsafe_for_binlog=1<br \/>\ninnodb_autoinc_lock_mode=2<br \/>\nwsrep_node_address= 10.1.31.70<br \/>\nwsrep_sst_method=xtrabackup-v2<br \/>\nwsrep_cluster_name=[CLUSTER_NAME]<br \/>\nwsrep_sst_auth=&#8221;[USER_NAME]:[PASSWORD]&#8221; &#8212;&#8211; Criados no 4\u00ba Passo<br \/>\nwsrep_provider_options=&#8221;gcache.size=1G;&#8221;<br \/>\nwsrep_slave_threads=16<br \/>\nwsrep_causal_reads=ON<br \/>\nwsrep_replicate_myisam=1<br \/>\nwsrep_node_name=2<\/p>\n<p>[mysqld_safe]<br \/>\n<code>log-error=\/var\/log\/mysqld.log<br \/>\npid-file=\/var\/run\/mysqld\/mysqld.pid<br \/>\nwsrep_url=gcomm:\/\/10.1.31.70,gcomm:\/\/10.1.31.71<\/code><\/p>\n<p>SLAVE: 10.1.31.71<br \/>\n<code>[mysqld]<br \/>\ndatadir=\/var\/lib\/mysql<br \/>\nsocket=\/var\/lib\/mysql\/mysql.sock<br \/>\nuser=mysql<br \/>\n# Disabling symbolic-links is recommended to prevent assorted security risks<br \/>\nsymbolic-links=0 <\/code><\/p>\n<p>wsrep_provider=\/usr\/lib64\/libgalera_smm.so<br \/>\nwsrep_cluster_address=gcomm:\/\/10.1.31.70<br \/>\nbinlog_format=ROW<br \/>\ndefault_storage_engine=InnoDB<br \/>\ninnodb_locks_unsafe_for_binlog=1<br \/>\ninnodb_autoinc_lock_mode=2<br \/>\nwsrep_node_address= 10.1.31.71<br \/>\nwsrep_sst_method=xtrabackup-v2<br \/>\nwsrep_cluster_name=[CLUSTER_NAME]<br \/>\nwsrep_sst_auth=&#8221;[USER_NAME]:[PASSWORD]&#8221; &#8212;&#8211; Criados no 4\u00ba Passo<br \/>\nwsrep_provider_options=&#8221;gcache.size=1G;&#8221;<br \/>\nwsrep_slave_threads=16<br \/>\nwsrep_causal_reads=ON<br \/>\nwsrep_replicate_myisam=1<br \/>\nwsrep_node_name=1<\/p>\n<p>[mysqld_safe]<br \/>\n<code>log-error=\/var\/log\/mysqld.log<br \/>\npid-file=\/var\/run\/mysqld\/mysqld.pid<br \/>\nwsrep_url=gcomm:\/\/10.1.31.70,gcomm:\/\/10.1.31.71<\/code><\/p>\n<p>6\u00ba Passo: Subir o servi\u00e7o do SGBD Percona.<br \/>\n<code>\/etc\/init.d\/mysql start<\/code><\/p>\n<p>7\u00ba Passo: Verificar se todos os n\u00f3s est\u00e3o ativos.<br \/>\nshow status like &#8220;wsrep_cluster_size%&#8221;;<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;-+<br \/>\n| Variable_name | Value |<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;-+<br \/>\n| wsrep_cluster_size | 2 |<br \/>\n+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;-+<\/p>\n<p>8\u00ba Passo: Testar.<\/p>\n<p>Crie databases em ambos os nodes e veja se ambos compartilham os DBs criados.<\/p>\n<p>Pare o servi\u00e7o do MySQL de um dos nodes. No node com servi\u00e7o ativo, crie algumas databases e insira conte\u00fado, logo em seguida, ative o servi\u00e7o do node parado e veja se o conte\u00fado criado ser\u00e1 compartilhado (fa\u00e7a o procedimento com ambos os nodes para um teste mais completo).<\/p>\n<p>Fa\u00e7a um reboot em um dos nodes, insira conte\u00fado no node ativo, logo em seguida, acesse novamente o node parado e veja se o conte\u00fado foi compartilhado.<\/p>\n<p>Alguns comandos \u00fateis: CREATE DATABASE PERCONA; USE PERCONA; CREATE TABLE tabela (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, data VARCHAR(100)); INSERT INTO tabela(data) VALUES (&#8216;$a&#8217;);<\/p>\n<p>9\u00ba Passo: Instalar o servi\u00e7o do keepalived.<br \/>\n<code>yum install keepalived.x86_64<\/code><\/p>\n<p>10\u00ba Passo: Criar uma interface com VIP.<br \/>\n<code>vi \/etc\/sysconfig\/network-scripts\/eth0\\:0<\/code><br \/>\nDEVICE=eth0:0<br \/>\nTYPE=Ethernet<br \/>\nONBOOT=yes<br \/>\nIPV6INIT=no<br \/>\nNM_CONTROLLED=no<br \/>\nBOOTPROTO=none<br \/>\nIPADDR=10.1.31.72<br \/>\nPREFIX=24<br \/>\nGATEWAY=10.1.31.1<\/p>\n<p>11\u00ba Passo: Configurar o servi\u00e7o keepalived.<br \/>\n<code>vi \/etc\/keepalived\/keepalived.conf <\/code><br \/>\n<code>MASTER: 10.1.31.70<br \/>\nglobal_defs {<br \/>\nnotification_email {<br \/>\n[EMAIL]@[DOMAIN]<br \/>\n}<br \/>\nnotification_email_from [EMAIL]@[DOMAIN]<br \/>\nsmtp_server [RELAY_SERVER]<br \/>\nsmtp_connect_timeout 60<br \/>\nrouter_id [ROUTER_NAME]<br \/>\n}<br \/>\nvrrp_script chk_pxc {<br \/>\nscript \"\/usr\/bin\/clustercheck clustercheck password 0\"<br \/>\ninterval 1<br \/>\n}<br \/>\nvrrp_instance PXC {<br \/>\ninterface eth0<br \/>\nstate MASTER<br \/>\nvirtual_router_id 51<br \/>\npriority 100<br \/>\nadvert_int 1<br \/>\ngarp_master_delay 5<\/code><\/p>\n<p>authentication {<br \/>\nauth_type PASS<br \/>\nauth_pass 1111<br \/>\n}<br \/>\nvirtual_ipaddress {<br \/>\n10.1.31.72 dev eth0<br \/>\n}<br \/>\ntrack_script {<br \/>\nchk_pxc<br \/>\n}<br \/>\nnotify_master &#8220;\/bin\/echo &#8216;now master&#8217; &gt; \/tmp\/keepalived.state&#8221;<br \/>\nnotify_backup &#8220;\/bin\/echo &#8216;now backup&#8217; &gt; \/tmp\/keepalived.state&#8221;<br \/>\nnotify_fault &#8220;\/bin\/echo &#8216;now fault&#8217; &gt; \/tmp\/keepalived.state&#8221;<br \/>\n}<\/p>\n<p>SLAVE: 10.1.31.71<br \/>\n<code>global_defs {<br \/>\nnotification_email {<br \/>\n[EMAIL]@[DOMAIN]<br \/>\n}<br \/>\nnotification_email_from [EMAIL]@[DOMAIN]<br \/>\nsmtp_server [RELAY_SERVER]<br \/>\nsmtp_connect_timeout 60<br \/>\nrouter_id [ROUTER_NAME]<br \/>\n}<br \/>\nvrrp_script chk_pxc {<br \/>\nscript \"\/usr\/bin\/clustercheck clustercheck password 0\"<br \/>\ninterval 1<br \/>\n}<br \/>\nvrrp_instance PXC {<br \/>\ninterface eth0<br \/>\nstate SLAVE<br \/>\nvirtual_router_id 51<br \/>\npriority 99<br \/>\nadvert_int 1<br \/>\ngarp_master_delay 5<\/code><\/p>\n<p>authentication {<br \/>\nauth_type PASS<br \/>\nauth_pass 1111<br \/>\n}<br \/>\nvirtual_ipaddress {<br \/>\n10.1.31.72 dev eth0<br \/>\n}<br \/>\ntrack_script {<br \/>\nchk_pxc<br \/>\n}<br \/>\nnotify_master &#8220;\/bin\/echo &#8216;now master&#8217; &gt; \/tmp\/keepalived.state&#8221;<br \/>\nnotify_backup &#8220;\/bin\/echo &#8216;now backup&#8217; &gt; \/tmp\/keepalived.state&#8221;<br \/>\nnotify_fault &#8220;\/bin\/echo &#8216;now fault&#8217; &gt; \/tmp\/keepalived.state&#8221;<br \/>\n}<\/p>\n<p>12\u00ba Passo: Reiniciar todos os servi\u00e7os<br \/>\n<code>SLAVE: 10.1.31.71<br \/>\n\/etc\/init.d\/network restart<br \/>\n\/etc\/init.d\/mysql restart<br \/>\n\/etc\/init.d\/keepalived restart<\/code><\/p>\n<p>MASTER: 10.1.31.70<br \/>\n<code>\/etc\/init.d\/network restart<br \/>\n\/etc\/init.d\/mysql restart<br \/>\n\/etc\/init.d\/keepalived restart<\/code><\/p>\n<p>13\u00ba Passo: Verificar status dos servidores<br \/>\ncat \/tmp\/keepalived.state<br \/>\nip add<\/p>\n<p><strong>Observa\u00e7\u00e3o:<\/strong><\/p>\n<p>Em caso de indisponibilidade dos dois servidores:<br \/>\nSer\u00e1 necess\u00e1rio alterar o par\u00e2metro wsrep_cluster_address do servidor 10.1.31.70 para wsrep_cluster_address=gcomm:\/\/.<br \/>\nEm seguida, subir o servi\u00e7o dos dois servidores (10.1.31.70 e 10.1.31.71).<br \/>\nPor \u00faltimo, voltar as configura\u00e7\u00f5es (wsrep_cluster_address=gcomm:\/\/10.1.31.71) do servidor 10.1.31.70 e reiniciar o servi\u00e7o.<\/p>\n<p>Fontes:<br \/>\nhttp:\/\/www.vivaolinux.com.br\/dica\/Replicacao-de-Banco-de-Dados-MySQL-com-Percona-XtraDB<\/p>\n<blockquote data-secret=\"bkPBM4kFjw\" class=\"wp-embedded-content\"><p><a href=\"https:\/\/www.percona.com\/blog\/2013\/10\/15\/using-keepalived-ha-top-percona-xtradb-cluster\/\">Using keepalived for HA on top of Percona XtraDB Cluster<\/a><\/p><\/blockquote>\n<p><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"display:none;\" src=\"https:\/\/www.percona.com\/blog\/2013\/10\/15\/using-keepalived-ha-top-percona-xtradb-cluster\/embed\/#?secret=bkPBM4kFjw\" data-secret=\"bkPBM4kFjw\" width=\"600\" height=\"338\" title=\"Embedded WordPress Post\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><br \/>\nhttps:\/\/www.percona.com\/doc\/percona-server\/5.5\/installation\/yum_repo.html<\/p>\n<p>&nbsp;<\/p>\n<p>Atualizado: 19\/07\/2018 16:45<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Autor: Dauro Lima Sobrinho Este tutorial tem como objetivo auxiliar a instala\u00e7\u00e3o e configura\u00e7\u00e3o de uma solu\u00e7\u00e3o de alta disponibilidade com replica\u00e7\u00e3o dos dados no SGBD Percona Server 5.6.26, utilizando Percona Xtrabackup e o keepalived. Distribui\u00e7\u00e3o: CentOS 6.7 Node 1:&hellip; <br \/><a class=\"read-more-button\" href=\"https:\/\/arripio.com.br\/?p=347\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[1],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pazGcY-5B","jetpack-related-posts":[{"id":776,"url":"https:\/\/arripio.com.br\/?p=776","url_meta":{"origin":347,"position":0},"title":"Irrigador Automatizado","date":"22 Setembro, 2022","format":false,"excerpt":"https:\/\/youtu.be\/lU_og2esnzA Livro passo a passo de como montar uma irriga\u00e7\u00e3o automatizada.automatiza.futil.com.br","rel":"","context":"In &quot;Sem categoria&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/arripio.com.br\/wp-content\/uploads\/2022\/09\/pdfirrigacao-automatizada-scaled.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":745,"url":"https:\/\/arripio.com.br\/?p=745","url_meta":{"origin":347,"position":1},"title":"Expandir disco em LVM","date":"18 Agosto, 2021","format":false,"excerpt":"Essa \u00e1 uma atividade muito comum no meu dia a dia, ent\u00e3o vou mostra como eu fa\u00e7o. Problema : falta de espa\u00e7o em disco Sempre que houver expectativa de crescimento de dados crie discos com LVM assim \u00e9 poss\u00edvel uma expans\u00e3o de disco a quente sem causar indisponibilidade o servi\u00e7o.\u2026","rel":"","context":"In &quot;Sem categoria&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28,"url":"https:\/\/arripio.com.br\/?p=28","url_meta":{"origin":347,"position":2},"title":"LPIC-2 DNS -Domain Name Server 207","date":"24 Maio, 2014","format":false,"excerpt":"Principal arquivo de configura\u00e7\u00e3o \/etc\/named.conf ou \/etc\/bind\/named.conf Comando para for\u00e7a leitura de novas configura\u00e7oes rndc type hint $TTL 1D@\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 SOA \u00a0 \u00a0 linux.dominio.com. \u00a0 \u00a0 \u00a0admin.linux.dominio.com. (\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a02008260401 ;Serial\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a024h \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ;Refresh ->\u2026","rel":"","context":"In &quot;Cerifica\u00e7\u00e3o LPIC-2 202&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":73,"url":"https:\/\/arripio.com.br\/?p=73","url_meta":{"origin":347,"position":3},"title":"Administra\u00e7\u00e3o de Rede 210","date":"9 Junho, 2014","format":false,"excerpt":"DHCP host ArripioLinux{ hardware ethernet 00:00:00:00:00:00; fix-address 10.1.0.3; } option domain-name-servers option domain-name \"Arripio.net\"; Tipo de de autentica\u00e7\u00e3o PAM account auth password session Controle do PAM requisite -> autentica\u00e7\u00e3o \u00e9 imediata negada, no caso de negativa do m\u00f3dulo required ->autentica\u00e7\u00e3o recusada no caso de negativa do m\u00f3dulo , mas consultar\u00e1\u2026","rel":"","context":"In &quot;Automa\u00e7\u00e3o&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":736,"url":"https:\/\/arripio.com.br\/?p=736","url_meta":{"origin":347,"position":4},"title":"Meu uso do comando screen no lINUX","date":"18 Maio, 2021","format":false,"excerpt":"Normalmente eu fa\u00e7o uso do screen quando vou executar comando de grande dura\u00e7\u00e3o e que em caso de perder a sess\u00e3o do meu ssh n\u00e3o interrompa o trabalho no meio da execu\u00e7\u00e3o. Basicamente ele executa o comando em uma sess\u00e3o em background na qual vc pode verificar a qualquer momento\u2026","rel":"","context":"In &quot;Sem categoria&quot;","img":{"alt_text":"","src":"https:\/\/i2.wp.com\/img.youtube.com\/vi\/wDHKbiR7Hts\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":97,"url":"https:\/\/arripio.com.br\/?p=97","url_meta":{"origin":347,"position":5},"title":"LPIC-2 202 PAM Authentication","date":"29 Junho, 2014","format":false,"excerpt":"Arquivos de configura\u00e7\u00e3o O prop\u00f3sito do do projeto PAM \u00e9 separar a concess\u00e3o de privil\u00e9gios nos aplicativos do desenvolvimento de esquemas de autentica\u00e7\u00e3o apropriados e seguros. Isto \u00e9 realizado fornecendo-se uma biblioteca de fun\u00e7\u00f5es utilizada pelas aplica\u00e7\u00f5es para solicitar a autentica\u00e7\u00e3o de usu\u00e1rios.\u00a0 As bibliotecas PAM s\u00e3o configuradas no arquivo\u00a0\/etc\/pam.conf\u00a0ou\u2026","rel":"","context":"In &quot;Automa\u00e7\u00e3o&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/arripio.com.br\/index.php?rest_route=\/wp\/v2\/posts\/347"}],"collection":[{"href":"https:\/\/arripio.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arripio.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arripio.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/arripio.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=347"}],"version-history":[{"count":7,"href":"https:\/\/arripio.com.br\/index.php?rest_route=\/wp\/v2\/posts\/347\/revisions"}],"predecessor-version":[{"id":602,"href":"https:\/\/arripio.com.br\/index.php?rest_route=\/wp\/v2\/posts\/347\/revisions\/602"}],"wp:attachment":[{"href":"https:\/\/arripio.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=347"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arripio.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=347"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arripio.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}