GUOB Tech Day 2017

20 fevereiro 2015

Instalação do MySQL no SUSE 12


No post de dezembro de 2014 comentamos sobre os novos repositórios oficiais Oracle para SUSE. Agora o repositório foi expandido e suporta também o SUSE 12.

A instalação da versão mais atual do MySQL Server no SUSE 12 continua bem simples:

Baixe o RPM com o repositório para SUSE em http://dev.mysql.com/downloads/repo/suse/ e instale o pacote com:
$ sudo rpm -Uvh mysql-community-release-sles12-2.noarch.rpm

Em seguida, importe a chave que será usada para verificar os pacotes que vêm do repo:
$ sudo rpm --import /etc/RPM-GPG-KEY-mysql

Finalmente, proceda normalmente com a instalação do pacote MySQL Server a partir do repositório:
$ sudo zypper install mysql-community-server

Pronto!

Todos pacotes MySQL foram testados pelo time de engenharia da Oracle para funcionar como substitutos de qualquer variante MySQL que você já possa ter em seu sistema. Os pacotes passaram por rigorosos testes de diferentes fluxos de upgrade, e o gerenciador de pacotes SUSE irá recomendar diferentes opções de substituição para você.

19 fevereiro 2015

Eventos MySQL em Porto Alegre, Brasília e Rio de Janeiro



Teremos eventos presenciais com o time MySQL da Oracle. Serão palestras técnicas e um bate-papo sobre negócios no mundo Open Source. Veja a agenda e inscreva-se nos links abaixo:

26-fev-15 - Porto Alegre, RS, Blue Tree Millenium - Inscreva-se
04-mar-15 - Brasília, DF, Mercure Brasília Eixo - Inscreva-se
05-mar-15 - Rio de Janeiro, RJ, Centro de Convenções RB1 - Inscreva-se

A agenda para Porto Alegre e Rio de Janeiro é a seguinte:
14h00 Credenciamento e Welcome Coffee
14h15 Boas Vindas
14h30 Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterprise Edition
15h30 Coffee Break
15h45 Arquiteturas de referência MySQL: Melhores Práticas para Web, Mobile e Nuvem
17h00 Encerramento

No evento de Brasília teremos a conosco nossos colegas de Oracle Linux, com a seguinte agenda:
9h00 Credenciamento e Welcome Coffee
9h15 Boas Vindas
9h30 Reduzindo TCO, entregando mais valor com OL, OVM
10h30 Coffee Break
10h45 Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterprise Edition
12h00 Encerramento 

As vagas são limitadas. Inscreva-se nos links acima.

Nos vemos lá!

11 fevereiro 2015

Tutorial: Replicação MySQL em 5 minutos

A replicação é um recurso nativo do MySQL e tem vários usos, tais como como: backup, alta-disponibilidade, redundância e distribuição geográfica de dados, escalabilidade horizontal, etc... O melhor: configurar a replicação do MySQL é extremamente simples!

Para testar, vamos usar o Linux e configurar a replicação no MySQL 5.6 entre 2 instâncias: uma master e outra slave. Serão criadas 2 instâncias MySQL partir do zero, ou seja, sem dados. Elas estarão na mesma máquina, mas respondendo em portas diferentes: 3310 e 3311.


Pré-requisito

O único pré-requisito é ter o MySQL 5.6 instalado.
  • Se já tiver o MySQL 5.6 instalado, basta usar o caminho onde está o bin/mysqld como basedir nos passos abaixo. Por exemplo, no Oracle Linux 7 ou RHEL 7 o binário fica em /usr/sbin/mysqld, portanto basedir=/usr;
  • Caso ainda não tenha os binários do MySQL 5.6, basta baixar o arquivo TAR e descompactar em algum diretório conveniente que será seu basedir, como por exemplo /opt/mysql/mysql-5.6:
    • # mkdir /opt/mysql
    • # cd /opt/mysql
    • # wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
    • # tar xvzf mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
    • # rm mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
    • # mv mysql-5.6.23-linux-glibc2.5-x86_64 mysql-5.6
    • Observações: neste caso considere para os passos abaixo basedir=/opt/mysql/mysql-5.6; tente trabalhar sempre com as versões mais recentes – substitua 5.6.23 nos comandos acima caso outra mais atual esteja disponível em http://dev.mysql.com/downloads/mysql .
Para um tutorial completo de como criar uma VM com MySQL para testes, veja http://www.alastori.com.br/2014/11/tutorial-ambiente-de-testes-com-mysql.html .

Replicação simples

1.   Crie uma instância para ser o Master:
# mkdir /opt/mysql/master /opt/mysql/master/data /opt/mysql/master/tmp
# cd /opt/mysql/master
# nano master.cnf
[client]
port=3310
socket=/opt/mysql/master/tmp/my-master.sock
[mysql]
prompt=master>\\_
[mysqld]
server-id=10
port=3310
basedir=/usr
datadir=/opt/mysql/master/data
socket=/opt/mysql/master/tmp/my-master.sock
log-bin=master-bin.log
innodb_flush_log_at_trx_commit=1
sync_binlog=1
# chown mysql:mysql *
# /usr/bin/mysql_install_db --defaults-file=/opt/mysql/master/master.cnf --user=mysql


2.   Inicie e teste a nova instância:
# /usr/bin/mysqld_safe --defaults-file=/opt/mysql/master/master.cnf &
# mysql --defaults-file=/opt/mysql/master/master.cnf -uroot -p
master> SHOW VARIABLES LIKE 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port       | 3310  |
+---------------+-------+
Observação: quando necessário, para parar o processo mysqld faça um shutdown limpo:
# mysqladmin --defaults-file=/opt/mysql/master/master.cnf -uroot –p shutdown


3.   Abra outro terminal e crie outra instância para ser o Slave:
# mkdir /opt/mysql/slave /opt/mysql/slave/data /opt/mysql/slave/tmp
# cd /opt/mysql/slave
# nano slave.cnf
[client]
port=3311
socket=/opt/mysql/slave/tmp/my-slave.sock
[mysql]
prompt=slave>\\_
[mysqld]
server-id=11
port=3311
basedir=/usr
datadir=/opt/mysql/slave/data
socket=/opt/mysql/slave/tmp/my-slave.sock
log-bin=slave-bin.log
innodb_flush_log_at_trx_commit=1
sync_binlog=1
# chown mysql:mysql *
# /usr/bin/mysql_install_db --defaults-file=/opt/mysql/slave/slave.cnf --user=mysql


4.   Inicie e teste a nova instância:
# /usr/bin/mysqld_safe --defaults-file=/opt/mysql/slave/slave.cnf &
# mysql --defaults-file=/opt/mysql/slave/slave.cnf -uroot -p
slave> SHOW VARIABLES LIKE 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port       | 3311  |
+---------------+-------+


5.   Agora que temos duas instâncias com server-id’s diferentes e log-bin habilitado, crie um usuário na instância master para que a slave consiga conectar-se a ela:
master> CREATE USER repl_user@127.0.0.1;
master> GRANT REPLICATION SLAVE ON *.* TO repl_user@127.0.0.1 IDENTIFIED BY 'repl_user_password';
Observação: em uma instalação real a instância slave provavelmente estará em outro host – substitua 127.0.0.1 pelo IP do host onde está sua instância slave.


6.   Antes de iniciar a replicação, verifique o status no master:
master> SHOW MASTER STATUS \G
*************************** 1. row ***************************
         File: master-bin.000003
     Position: 433


7.   Use os dados do status acima e inicie a replicação no slave:
slave> CHANGE MASTER TO
   MASTER_HOST='127.0.0.1',
MASTER_PORT=3310,
   MASTER_USER='repl_user',
   MASTER_PASSWORD='repl_user_password',
   MASTER_LOG_FILE='master-bin.000003',
   MASTER_LOG_POS=433;
slave> START SLAVE;


8.    Teste básico:
master> CREATE DATABASE teste_repl;
master> CREATE TABLE teste_repl.simples (id INT NOT NULL PRIMARY KEY);
master> INSERT INTO teste_repl.simples VALUES (999),(1),(20),(5);
slave> SELECT * FROM teste_repl.simples;

Conclusão



Como vimos, é muito simples fazer funcionar a replicação no MySQL. Mais adiante veremos opções mais avançadas para tornar a replicação mais resiliente a erros (crash-safe) e implementar failover automático.
Referências: