>> Apresentação e considerações
Fala galera!
Estamos ai na atividade…hehe…dessa vez trago um post de algo que já utilizei há muito tempo agora estou precisando de novo
Criei um Lab prático a respeito do MariaDB Replication no modelo Master/Slave de forma bem simples e funcional, a idéia desse post inicialmente é fazer um ambiente do zero funcionando com replicação, e vamos falar a verdade quando tudo funciona…É LINDU!!! …hehe…
Confesso que não sou muito fã de gerenciar o banco dessa forma (porém já melhor do que uma single instance dependendo do ambiente), ainda mais com a implementação sensacional do “Cluster Galera” que traz benefícios excelentes
para um ambiente em cluster de MySQL/MariaDB, curioso?
Para mais informações do galera, segue um artigo do meu amigo Evandro Couto como dica:
http://tutoriaisgnulinux.com/2017/04/07/criando-um-cluster-galera-mariadb-na-amazon-aws/
E segue o link da documentação:
https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/
Ainda escreverei sobre o Galera!
Bom sem mais resenhas, voltemos ao replication..
Let`s go!!!
>> Ambiente utilizado
O Lab foi em cima de VirtualBox, onde foram criadas duas máquinas virtuais com Sistema Operacional “CentOS Linux release 7.3.1611 (Core)” na instalação mínima
Onde:
MASTER: mariadb-replication-01
IP: 192.168.250.31
SLAVE: mariadb-replication-02
IP: 192.168.250.32
>> Preparação do ambiente
(Procedimento a ser executado nas duas maquinas)
Desabilitando o Firewall e o SELinux
~# systemctl disable firewalld; systemctl stop firewalld ~# setenforce 0 ~# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
Configurando o arquivo /etc/hosts das máquinas
~# echo "192.168.250.31 mariadb-replication-01 mariadb-replication" >> /etc/hosts ~# echo "192.168.250.32 mariadb-replication-02" >> /etc/hosts
Instalando o MariaDB Server e habilitando na inicialização e startando
~# yum install mariadb-server -y ~# systemctl enable mariadb; systemctl start mariadb
Com o my.cnf configurado vamos iniciar o MariaDB e fazer o procedimento básico de instalação segura
~# mysql_secure_installation Set root password? [Y/n] y Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] n Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
>> Configurando o MASTER – mariadb-replication-01
Setando o Hostname
[root@mariadb-replication-01 ~]# hostnamectl set-hostname mariadb-replication-01
Configurando o /etc/my.cnf para permitir a criação do log binário responsável pela replicação dos dados, o “server-id” precisa ser único em cada node da replicação
[root@mariadb-replication-01 ~]# vim /etc/my.cnf server-id = 1 bind-address = 0.0.0.0 log_bin = /var/log/mariadb/mariadb-bin.log binlog-ignore-db = "mysql"
Restart do MariaDB para aplicacar as configurações
[root@mariadb-replication-01 ~]# systemctl restart mariadb
Agora vamos criar o usuário e dar grant para replicação
[root@mariadb-replication-01 ~]# mysql -uroot -p MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'mariadb-replication-02' IDENTIFIED BY 'replication_pass'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> FLUSH TABLES WITH READ LOCK; MariaDB [(none)]> SHOW MASTER STATUS \G; *************************** 1. row *************************** File: mariadb-bin.000001 Position: 505 Binlog_Do_DB: Binlog_Ignore_DB: mysql 1 row in set (0.00 sec) ERROR: No query specified
>> Configurando o SLAVE – mariadb-replication-02
Setando o Hostname
[root@mariadb-replication-02 ~]# hostnamectl set-hostname mariadb-replication-02
No SLAVE vamos setar o “server-id” como 2, lembrando que ele precisa ser único entre os nodes que fazem parte da replicação
[root@mariadb-replication-02 ~]# vim /etc/my.cnf server-id = 2 bind-address = 0.0.0.0 log_bin = /var/log/mariadb/mariadb-bin.log binlog-ignore-db = "mysql"
[root@mariadb-replication-02 ~]# systemctl restart mariadb
Agora vamos configurar o nosso SLAVE para se conectar no MASTER, perceba que os dados de conexão são baseados no usuário criado no servidor MASTER, e a saída do comando “SHOW MASTER STATUS” nos traz as informações que precisamos sobre o MASTER_LOG_FILE e o MASTER_LOG_POS
[root@mariadb-replication-02 ~]# mysql -uroot -p MariaDB [(none)]> STOP SLAVE; MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='mariadb-replication-01', MASTER_USER='replication_user', MASTER_PASSWORD='replication_pass', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=505; MariaDB [(none)]> START SLAVE; MariaDB [(none)]> SHOW SLAVE STATUS \G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: mariadb-replication-01 Master_User: replication_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mariadb-bin.000001 Read_Master_Log_Pos: 505 Relay_Log_File: mariadb-relay-bin.000002 Relay_Log_Pos: 531 Relay_Master_Log_File: mariadb-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: 505 Relay_Log_Space: 827 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) ERROR: No query specified
>> Testando a replicação
Para testar agora basta usar! …o que for criado no MASTER automaticamente será criado no SLAVE, lembrando que os dados tem que ser “INPUTADOS” no MASTER, todos os dados inseridos no SLAVE não são replicados para o MASTER
Ao consultar os status do MASTER e do SLAVE podemos ver que estão sincronizados!
>> Conclusão
Bom, é claro que existem MUITAS opções de configuração, e otimizações que farão com que seu ambiente esteja melhor preparado para receber cargas altas, nesse toturial abordei o funcionamento da replicação.
Criamos a replicação, e está funcional, Show!!! …
mais como nem tudo são Flores a replicação pode quebrar, podemos trocar de máquinas, o banco pode corromper, enfim, a administração desse ambiente ficará para próximos posts, vou tentar explicar aqui como gerenciar um ambiente MASTER/SLAVE de forma que sejamos capazes de lidar com as falhas corriqueiras do dia-a-dia.
Valeu galera!
2 Pingback