Differences

This shows you the differences between two versions of the page.

Link to this comparison view

replicacao_de_base_mysql_no_freebsd_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Replicação de base MySQL no FreeBSD ======
  
 +
 +  - Nome do servidor master: mysql01.douglasqsantos.com.br
 +  - Ip do servidor master: 10.0.0.24
 +  - Nome do servidor slave: mysql02.douglasqsantos.com.br
 +  - Ip do servidor slave: 10.0.0.25
 +
 +Agora vamos acertar o rc.conf para o <​nowiki>​MySQL</​nowiki>​ nos dois servidores
 +<sxh bash>
 +
 +vim /​etc/​rc.conf
 +[...]
 +mysql_enable="​YES"​
 +mysql_dbdir="/​var/​db/​mysql"​
 +</​sxh>​
 +
 +Vamos procurar o ports a localização do nosso mysql nos dois servidores ​
 +<sxh bash>
 +
 +whereis mysql55-server
 +mysql55-server:​ /​usr/​ports/​databases/​mysql55-server
 +</​sxh>​
 +
 +Vamos então instalar ele nos dois servidores ​
 +<sxh bash>
 +
 +cd /​usr/​ports/​databases/​mysql55-server
 +make WITH_CHARSET=latin1 WITH_XCHARSET=all WITH_PROC_SCOPE_PTH="​Use threads"​ BUILD_OPTMIZES=yes BUILD_STATIC=yes \
 +WITHOUT_INNODB=yes SKIP_DNS_CHECK=yes WITH_OPENSSL=yes \
 +WITH_COLLATION=latin1_swedish_ci WITH_PROC_SCOPE_PTH=yes WITH_NDB=yes install clean
 +</​sxh>​
 +
 +Pode responder as opções padrões ​
 +
 +
 +Caso esteja utilizando o csh recarregue as variáveis de ambiente ​
 +<sxh bash>
 +
 +source /​root/​.cshrc
 +</​sxh>​
 +
 +Agora vamos testar o nosso mysql 
 +<sxh bash>
 +
 +/​usr/​local/​etc/​rc.d/​mysql-server start
 +Starting mysql.
 +</​sxh>​
 +
 +Agora vamos definir a senha do root 
 +<sxh bash>
 +
 +mysqladmin password '​senha'​ -u root
 +</​sxh>​
 +
 +Agora vamos testar a autenticação ​
 +<sxh sql>
 +
 +mysql -u root -p    ​
 +Enter password: ​
 +Welcome to the MySQL monitor. ​ Commands end with ; or \g.
 +Your MySQL connection id is 3
 +Server version: 5.5.17 Source distribution
 +
 +Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 +
 +Oracle is a registered trademark of Oracle Corporation and/or its
 +affiliates. Other names may be trademarks of their respective
 +owners.
 +
 +Type '​help;'​ or '​\h'​ for help. Type '​\c'​ to clear the current input statement.
 +
 +mysql> quit
 +Bye
 +</​sxh>​
 +
 +Faça o mesmo procedimento nos dois servidores ​
 +
 +Agora vamos acertar os dois servidores para podermos configurar a replicação. ​
 +<sxh bash>
 +
 +/​usr/​local/​etc/​rc.d/​mysql-server stop
 +</​sxh>​
 +
 +Agora vamos copiar o arquivo com as configurações padrões do mysql faça o procedimento nos dois servidores
 +<sxh bash>
 +
 +cp /​usr/​local/​share/​mysql/​my-large.cnf /​usr/​local/​etc/​my.cnf
 +chmod 644 /​usr/​local/​etc/​my.cnf
 +</​sxh>​
 +
 +Agora no servidor mysql01 vamos acertar a configuração do arquivo my.cnf para a replicação ​
 +<sxh bash>
 +
 +vim /​usr/​local/​etc/​my.cnf
 +[...]
 +[mysqld]
 +bind-address ​   = 0.0.0.0
 +[...]
 +server-id = 1
 +</​sxh>​
 +
 +Agora no servidor mysql02 vamos acertar a configuração do arquivo my.cnf para a replicação ​
 +<sxh bash>
 +
 +vim /​usr/​local/​etc/​my.cnf
 +[...]
 +[mysqld]
 +bind-address ​   = 0.0.0.0
 +[...]
 +server-id = 2
 +</​sxh>​
 +
 +Agora nos dois servidores podemos reiniciar o serviço do mysql 
 +<sxh bash>
 +
 +/​usr/​local/​etc/​rc.d/​mysql-server restart
 +Stopping mysql.
 +Waiting for PIDS: 36144.
 +Starting mysql.
 +</​sxh>​
 +
 +Agora vamos configuar o servidor mysql01 para ser o master da replica ​
 +<sxh sql>
 +
 +mysql -u root -p
 +Enter password: ​
 +Welcome to the MySQL monitor. ​ Commands end with ; or \g.
 +Your MySQL connection id is 1
 +Server version: 5.5.17-log Source distribution
 +
 +Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 +
 +Oracle is a registered trademark of Oracle Corporation and/or its
 +affiliates. Other names may be trademarks of their respective
 +owners.
 +
 +Type '​help;'​ or '​\h'​ for help. Type '​\c'​ to clear the current input statement.
 +
 +mysql> GRANT REPLICATION SLAVE,​SUPER,​RELOAD ON *.* TO replica@'​%'​ IDENTIFIED BY '​senha';​
 +Query OK, 0 rows affected (0.00 sec)
 +
 +mysql> FLUSH PRIVILEGES;
 +Query OK, 0 rows affected (0.00 sec)
 +
 +mysql> SHOW MASTER STATUS;
 ++------------------+----------+--------------+------------------+
 +| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
 ++------------------+----------+--------------+------------------+
 +| mysql-bin.000001 |      337 |              |                  |
 ++------------------+----------+--------------+------------------+
 +1 row in set (0.00 sec)
 +
 +mysql> quit;
 +Bye
 +</​sxh>​
 +
 +Aqui definimos em **GRANT** as permissões para a replicação da base utilizando o usuário replicador depois mandamos reler as permissões com **FLUSH** e por ultimo visualizamos o status do servidor master com SHOW 
 +
 +Agora vamos configurar o nosso servidor mysql02 como slave 
 +
 +O valor de **MASTER_LOG_FILE** é o valor do File que é mostrado em **SHOW MASTER STATUS** no servidor **MASTER** e o **MASTER_LOG_POS** é o valor retirado do mesmo comando só que no campo Position. ​
 +
 +<sxh sql>
 +
 +mysql -u root -p
 +Enter password: ​
 +Welcome to the MySQL monitor. ​ Commands end with ; or \g.
 +Your MySQL connection id is 1
 +Server version: 5.5.17-log Source distribution
 +
 +Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 +
 +Oracle is a registered trademark of Oracle Corporation and/or its
 +affiliates. Other names may be trademarks of their respective
 +owners.
 +
 +Type '​help;'​ or '​\h'​ for help. Type '​\c'​ to clear the current input statement.
 +
 +mysql> change master to
 +    -> master_host='​10.0.0.24',​
 +    -> master_user='​replica',​
 +    -> master_password='​senha',​
 +    -> master_log_file='​mysql-bin.000001',​
 +    -> master_log_pos=337;​
 +Query OK, 0 rows affected (0.01 sec)
 +</​sxh>​
 +
 +Agora vamos iniciar o serviço de slave 
 +<sxh bash>
 +
 +mysql> start slave;
 +Query OK, 0 rows affected (0.00 sec)
 +</​sxh>​
 +
 +
 +Agora vamos consultar o status da nossa replicação
 +<sxh sql>
 +
 +mysql> show slave status\G
 +*************************** 1. row ***************************
 +               ​Slave_IO_State:​ Waiting for master to send event
 +                  Master_Host:​ 10.0.0.24
 +                  Master_User:​ replica
 +                  Master_Port:​ 3306
 +                Connect_Retry:​ 60
 +              Master_Log_File:​ mysql-bin.000001
 +          Read_Master_Log_Pos:​ 337
 +               ​Relay_Log_File:​ mysql02-relay-bin.000002
 +                Relay_Log_Pos:​ 253
 +        Relay_Master_Log_File:​ mysql-bin.000001
 +             ​Slave_IO_Running:​ Yes
 +            Slave_SQL_Running:​ Yes
 +              Replicate_Do_DB: ​
 +          Replicate_Ignore_DB: ​
 +           ​Replicate_Do_Table: ​
 +       ​Replicate_Ignore_Table: ​
 +      Replicate_Wild_Do_Table: ​
 +  Replicate_Wild_Ignore_Table: ​
 +                   ​Last_Errno:​ 0
 +                   ​Last_Error: ​
 +                 ​Skip_Counter:​ 0
 +          Exec_Master_Log_Pos:​ 337
 +              Relay_Log_Space:​ 411
 +              Until_Condition:​ None
 +               ​Until_Log_File: ​
 +                Until_Log_Pos:​ 0
 +           ​Master_SSL_Allowed:​ No
 +           ​Master_SSL_CA_File: ​
 +           ​Master_SSL_CA_Path: ​
 +              Master_SSL_Cert: ​
 +            Master_SSL_Cipher: ​
 +               ​Master_SSL_Key: ​
 +        Seconds_Behind_Master:​ 0
 +Master_SSL_Verify_Server_Cert:​ No
 +                Last_IO_Errno:​ 0
 +                Last_IO_Error: ​
 +               ​Last_SQL_Errno:​ 0
 +               ​Last_SQL_Error: ​
 +  Replicate_Ignore_Server_Ids: ​
 +             ​Master_Server_Id:​ 1
 +1 row in set (0.00 sec)
 +
 +mysql> quit
 +Bye
 +</​sxh>​
 +
 +Como pode ser notado não temos nem um erro em nossa replicação. ​
 +
 +Vamos fazer um teste, no servidor mysql01 crie uma base de dados 
 +<sxh sql>
 +
 +mysql -u root -p
 +Enter password: ​
 +Welcome to the MySQL monitor. ​ Commands end with ; or \g.
 +Your MySQL connection id is 3
 +Server version: 5.5.17-log Source distribution
 +
 +Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 +
 +Oracle is a registered trademark of Oracle Corporation and/or its
 +affiliates. Other names may be trademarks of their respective
 +owners.
 +
 +Type '​help;'​ or '​\h'​ for help. Type '​\c'​ to clear the current input statement.
 +
 +mysql> CREATE DATABASE mysql01;
 +Query OK, 1 row affected (0.00 sec)
 +
 +mysql> SHOW DATABASES;
 ++--------------------+
 +| Database ​          |
 ++--------------------+
 +| information_schema |
 +| mysql              |
 +| mysql01 ​           |
 +| performance_schema |
 +| test               |
 ++--------------------+
 +5 rows in set (0.00 sec)
 +
 +mysql> ​
 +</​sxh>​
 +
 +Agora no servidor mysql02 vamos ver se foi replicado a nossa base de dados 
 +<sxh sql>
 +
 +mysql -u root -p
 +Enter password: ​
 +Welcome to the MySQL monitor. ​ Commands end with ; or \g.
 +Your MySQL connection id is 4
 +Server version: 5.5.17-log Source distribution
 +
 +Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
 +
 +Oracle is a registered trademark of Oracle Corporation and/or its
 +affiliates. Other names may be trademarks of their respective
 +owners.
 +
 +Type '​help;'​ or '​\h'​ for help. Type '​\c'​ to clear the current input statement.
 +
 +mysql> SHOW DATABASES;
 ++--------------------+
 +| Database ​          |
 ++--------------------+
 +| information_schema |
 +| mysql              |
 +| mysql01 ​           |
 +| performance_schema |
 +| test               |
 ++--------------------+
 +5 rows in set (0.01 sec)
 +
 +mysql> ​
 +</​sxh>​
 +
 +Como pode ser notado temos a replicação trabalhando normalmente. ​
 +
 +Aqui efetuamos testes de replicação de um servidor <​nowiki>​MySQL</​nowiki>​ do zero, porém caso já tenha um servidor <​nowiki>​MySQL</​nowiki>​ em funcionamento teriamos que efetuar o DUMP do servidor que seria o master e importar no servidor que seria o SLAVE e após isso efetuar o procedimento de replicação ​
 +
 +
 +<WRAP center round tip 60%>
 +  * [[http://​wiki.douglasqsantos.com.br/​doku.php/​backup_banco_de_dados_mysql_pt_br| Exportando a Base Mysql separando estrutura de dados]]
 +  * [[http://​wiki.douglasqsantos.com.br/​doku.php/​importar_banco_de_dados_mysql_pt_br | Importar a Base Mysql separando estrutura de dados]]
 +</​WRAP>​
 +
 +====== Referências ======
 +
 +  - http://​dev.mysql.com/​doc/​administrator/​pt/​mysql-administrator-replication-status-configure.html
 +  - http://​dev.mysql.com/​doc/​refman/​4.1/​pt/​replication.html#​replication-options
 +  - http://​dev.mysql.com/​doc/​refman/​4.1/​pt/​replication-howto.html