01 julho 2016

Mais eventos com MySQL em Julho de 2016

Mais alguns eventos com MySQL (e outros bancos) em SP:

05/07/16 (terça-feira) a partir das 9h00
The Developers Conference São Paulo (TDC 2016)
Trilha Banco de Dados - MySQL como Document Store
Local: Rua Casa do Ator, 275, Vila Olímpia, São Paulo
Mais info e inscrições: http://www.thedevelopersconference.com.br/tdc/2016/saopaulo/trilha-banco-de-dados

30/07/16 (sábado) a partir das 8h00
Alta Disponibilidade no MySQL 5.7
Local: Hotel Blue Tree Morumbi - Av. Roque Petroni Júnior, 1000, São Paulo
Inscrições: http://www.guobtechday2016.eventize.com.br

Até lá!

17 junho 2016

MySQL no Oracle Open World Latin America 2016


Será nos dias 28, 29 e 30 de junho de 2016 o evento Oracle Open World 2016. O time MySQL estará presente com vários conteúdos:

Palestra: Participe da transformação digital com o MySQL [SES11981]
Quarta-feira 29/06/2016 16:45-17:30 Sala Mezanino 13

Theater Sessions: MySQL Enterprise Edition
Terça-feira 28/06/2016 17:30-17:50 Theater Infrastructure
Quinta-feira 30/06/2016 17:00-17:20 Theater Infrastructure

Demos (sob demanda):

MySQL Enterprise Monitor
Monitore e otimize o MySQL
Aumente a performance, segurança e disponibilidade do seu MySQL com a ferramenta feita pelos engenheiros desenvolvedores do MySQL para DBAs MySQL.

Oracle Enterprise Manager for MySQL
Integre o MySQL ao Oracle EM
A ferramenta de administração do stack Oracle Enterprise também monitora o MySQL. Entenda as funcionalidades do Oracle EM para MySQL para integrá-lo à sua operação.

MySQL Enterprise - Visão Geral
Surpreenda-se com o MySQL 5.7
O MySQL agora também é NoSQL com suporte à chave-valor e modelo orientado a documentos. Confira estas e outras melhorias em performance, segurança e replicação.

MySQL Transparent Data Encryption
Segurança com criptografia
Cumpra requisitos regulamentares, aumente proteção, privacidade e impeça violações de dados críticos com Criptografia Transparente de Dados (TDE) para MySQL Enterprise.

MySQL Security Features - Audit and Authentication
Auditoria e autenticação
Implemente auditoria e autenticação externa em repositórios LDAP com plugins do MySQL Enterprise Edition.

MySQL High Availability Options
Opções de Alta Disponibilidade
O MySQL conta com diversas opções de Alta Disponibilidade. Entenda vantagens e desvantagens de cada uma de acordo com seu cenário de uso.

MySQL Cluster Carrier Grade Edition
Edição do MySQL NDB Cluster
MySQL Cluster é um banco de dados transacional que combina a flexibilidade do relacional SQL full-ACID, interfaces NoSQL, alta disponibilidade e alto desempenho.

MySQL Enterprise Backup
Backups à quente para MySQL
O MySQL Enterprise Backup é o equivalente ao Oracle RMAN para MySQL, com tempos muito menores de backup e restore quando comparado com o mysqldump.

MySQL with NoSQL
Chave-valor e Documentos MySQL
O MySQL é o banco de dados relacional Open Source mais popular do mundo e agora também é NoSQL, com suporte à chave-valor e modelo orientado a documentos.

Nos vemos lá!

18 maio 2016

Monitorando Amazon RDS com MySQL Enterprise Monitor



Neste post mostrarei como fazer o monitoramento avançado de uma instância MySQL no serviço Amazon RDS usando o MySQL Enterprise Monitor.


A Amazon hoje é o principal fornecedor de cloud pública do mercado. Entre seus diversos serviços está o famoso Amazon RDS (Relational Database Service), que facilita as tarefas de configurar, operar e escalar um banco de dados relacional na nuvem, ou seja, trata-se de um DBaaS ou Database as a Service. O primeiro banco de dados disponibilizado pela Amazon no RDS foi o MySQL, apesar de hoje contar com outras opções.


O MySQL Enterprise Monitor (MEM) é uma ferramenta de administração avançada do MySQL Server, permitindo, além do monitoramento e manutenção do histórico de status dos servidores, notificações de potenciais problemas, dicas sobre como corrigí-los, análise de queries, etc. O MEM permite monitorar instâncias do MySQL localmente ou remotamente, como por exemplo num serviço de nuvem como o RDS. Por ser criado e mantido pelo time de engenharia MySQL da Oracle, o MEM é uma das opções mais avançadas de monitoramento disponíveis para MySQL.


Confira uma breve demonstração do MEM monitorando Amazon RDS aqui:



Nota: Para testar o procedimento abaixo, usei o MEM 3.2.1 numa Virtual Machine com Oracle Linux 7. Criei a VM usando o Vagrant e Virtual Box. Você pode utilizar o MEM em distribuições Enterprise Linux, Windows, Solaris ou OS X.


Criando uma instância Amazon RDS



Se você não possui uma instância MySQL no RDS, você pode gratuitamente criar uma para testes. Atualmente a  Amazon disponibiliza instâncias pequenas, mas gratuitas do RDS por 1 ano. Nos testes abaixo, usei uma instância gratuita db.t2.micro com o MySQL 5.6.27.


Instalação do MySQL Enterprise Monitor



O MEM possui 2 componentes: Service Manager e Agent. O Agent coleta os dados de monitoramento diretamente dos hosts e instâncias MySQL e envia para o Service Manager, que consolida as informações de todos hosts e instâncias monitorados. Tipicamente o Agent é instalado no host que o MySQL Server está presente, porém, neste tutorial usaremos o monitoramento remoto, que dispensa a necessidade de instalar o Agent. Portanto, a seguir instalaremos apenas o Service Manager.


  1. Faça o download do MySQL Enterprise Monitor Service Manager em edelivery.oracle.com (se ainda não tiver, você precisará criar uma conta no oracle.com); para este tutorial, você precisará baixar apenas o MySQL Enterprise Monitor Service Manager 3.2.x;
    edelivery_download_mem.png
  2. Descompacte o ZIP e copie o arquivo mysqlmonitor-3*installer.bin para o host onde será instalado o MySQL Enterprise Monitor Service Manager e execute:
    $ sudo mysqlmonitor-3*installer.bin
  3. Siga o passo a passo para instalação. As opções padrão vão funcionar para a maioria dos casos.


Se quiser automatizar esta tarefa, você pode facilmente instalar o MEM com uma única linha de comando (unattended mode). Veja aqui um exemplo de instalação do Service Manager via shellscript.


Nota: O MEM é um software comercial que faz parte do MySQL Enterprise Edition e sua licença para uso em produção deve ser adquirida junto à Oracle. Porém, você pode utilizá-lo em ambiente não-produtivo por 30 dias.


Adicionando uma instância MySQL RDS no MEM



  1. No RDS Dashboard, anote qual seu Endpoint; no meu caso, ficou algo como mysql-rds-test1.xxxxxxxxxxxx.us-west-2.rds.amazonaws.com;
  2. No RDS, certifique-se de permitir que o host do MEM possa acessar a instância; no meu caso, modifiquei o Security Group para aceitar tráfego inbound/outbound do meu IP (CIDR/IP);
  3. Na linha de comando da máquina do MEM, verifique se consegue conectar-se na instância RDS com:
    $ /opt/mysql/enterprise/monitor/mysql/bin/mysql -uroot -p -h<seu_endpoint> -P3306
  4. Aproveite a conexão do passo anterior e crie um database para o MEM na sua instância RDS:
    mysql> CREATE DATABASE mem;
  5. [opcional] Como boa prática, crie um usuário específico de monitoramento na instância RDS. Aproveite a conexão do passo anterior e faça:
    mysql> CREATE USER 'memadmin'@'%' IDENTIFIED BY '<senha_memadmin>';
    mysql> GRANT ALL PRIVILEGES ON `%`.* TO 'memadmin'@'%';
  6. No MEM, menu Dashboards > Add MySQL Instance, crie a conexão remota com sua instância RDS.
    Importante: Para ‘Auto-Create Less Privileged Users’ selecione ‘No’ e na aba ‘Advanced Settings’, campo ‘Inventory Table Schema’ digite ‘mem’ (ou database criado no passo 4).
    mem_add_rds1.png
    mem_add_rds2.png
  7. Se tudo ocorreu bem, você já deve ver a nova instância RDS adicionada no Dashboard.
    mem_add_rds3.png


Query Analyzer e Reports avançados



Para explorar capacidades de monitoramento mais avançadas no MEM, é necessário que o Sys Schema instalado e Performance Schema esteja habilitado. A partir do MySQL 5.6 esse recurso já é habilitado por padrão, porém este não é o caso se você estiver usando configurações padrão da Amazon. Faça o seguinte:
  1. No RDS Dashboard, crie um Parameter Group e edite o parâmetro performance_schema = 1;
  2. No RDS, modifique a instância selecionando em Database Options o novo DB Parameter Group.
  3. No RDS, faça um Reboot da instância para aplicar a nova configuração.
  4. Na linha de comando da máquina do MEM, verifique se o Performance Schema foi habilitado:
    $ /opt/mysql/enterprise/monitor/mysql/bin/mysql -uroot -p -h<seu_endpoint> -P3306
    mysql> SHOW VARIABLES LIKE 'performance_schema';
    +--------------------+-------+
    | Variable_name      | Value |
    +--------------------+-------+
    | performance_schema | ON    |
    +--------------------+-------+
  5. Habilite a coleta de métricas das Queries:
    mysql> UPDATE performance_schema.setup_consumers SET enabled = 'YES' WHERE name = 'statements_digest';
    ...
    mysql> SELECT * FROM performance_schema.setup_consumers WHERE name = 'statements_digest';
    +-------------------+---------+
    | NAME              | ENABLED |
    +-------------------+---------+
    | statements_digest | YES     |
    +-------------------+---------+
  6. Certifique-se de que o ‘sys’ schema está presente:
    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | ...                |
    | performance_schema |
    | sys                |
    +--------------------+
    Caso necessário, instale o sys schema disponível em https://github.com/mysql/mysql-sys.
  7. No MEM, verifique se o menu Query Analyzer está funcional.
    mem_qan_rds.png
  8. Verifique também em Reports & Graphs se Processes e File I/O estão funcionais
    mem_reports_rds1.png
    mem_reports_rds2.png


Conclusão



O MySQL Enterprise Monitor pode ser utilizado para monitoramento avançado de uma instância MySQL no serviço Amazon RDS. Estamos limitados ao monitoramento remoto, porém ainda é possível utilizar esta ferramenta para melhor compreensão de eventuais gargalos e notificações pró-ativas de problemas com as instâncias MySQL na nuvem.


Referências


24 março 2016

Eventos em abril de 2016 com MySQL


Próximos eventos com MySQL (e outros bancos) em SP:

06/04/16 (quarta-feira) 19h00
Meetup Totvs Tech Trends
A união dos opostos: NoSQL e SQL
Local: Avenida Braz Leme, 1717 - Santana, São Paulo
Inscrições: www.meetup.com/Tech-Trends/events/229233424

16/04/16 (sábado) a partir das 9h00
DBA Brasil 1.0
Local: Bandtec (Colégio Bandeirantes), Rua Estela, 268 – Vila Mariana, São Paulo – SP
Inscrições: www.dbabr.com.br/blog/index.php/dba-brasil-1-0

Nos vemos lá!

21 fevereiro 2016

Instalação MySQL 5.7 no Ubuntu 15.10


Ubuntu é hoje uma das distribuições Linux mais populares, principalmente pela facilidade de instalação e configuração. O MySQL 5.7 oferece novos recursos interessantes, como o suporte nativo a JSON e melhor performance e segurança. Neste tutorial veremos como instalar o MySQL 5.7 no Ubuntu 15.10.


Nota: usei o Ubuntu em uma Virtual Machine para testar este procedimento. Criei a VM usando o Vagrant e Virtual Box. Depois de instalados, basta executar:
shell> vagrant init boxcutter/ubuntu1510
shell> vagrant up --provider virtualbox


3 opções de instalação

Temos 3 opções para prosseguir com a instalação:
  1. usar o APT como gerenciador de pacotes (recomendado)
  2. usar binários pré-compilados (mais flexível, permite por exemplo mudar o diretório de instalação)
  3. compilar seus próprios binários (avançado)
A seguir estão os passos para opções 1 e 2.
Nota: se você tiver alguma instalação anterior de MySQL, faça backup antes de realizar qualquer procedimento.

Versão mais atualizada do MySQL

A maneira mais fácil de instalar o MySQL no Ubuntu é utilizar o gerenciador de pacotes APT. Porém, o repositório APT padrão do Ubuntu não possui as versões mais atuais do MySQL e é necessário instalar o repositório oficial do MySQL.
Para confirmar a versão do MySQL disponível no seu repositório APT padrão, execute:
shell> sudo apt-get update
shell> sudo apt-get -s install mysql-server
A opção -s do comando acima apenas simula uma instalação e de fato não altera nada.
No momento que escrevo este tutorial, a versão mais atual do MySQL disponível no repositório padrão do Ubuntu é a 5.6, que não é a mais atual. Contudo, é muito simples configurar o Ubuntu para utilizar o repositório oficial MySQL e manter as versões mais atualizadas. Veremos a seguir.


Instalação do repositório oficial MySQL

  1. Baixe o repositório APT para MySQL em http://dev.mysql.com/downloads/repo/apt. É o mesmo pacote tanto para Debian, quanto para Ubuntu. No meu caso, baixei para o diretório /home/vagrant/downloads. Dica: na tela de login, veja o link em “No thanks, just start my download”;
  2. Instale o repositório APT com o comando:
    shell> cd /home/vagrant/downloads
    shell> sudo dpkg -i mysql-apt-config*.deb
    Após executar o comando, você terá a liberdade de escolher qual versão do MySQL vai usar e se vai querer outros componentes, como conectores ou ferramentas. Neste tutorial escolheremos a versão 5.7.
  3. (Opcional) Remova o arquivo do repositório que acabou de baixar:
    shell> rm mysql-apt-config*.deb
  4. (Opcional) Verifique que agora temos o MySQL 5.7 disponível para instalação:
    shell> sudo apt-get update
    shell> sudo apt-get -s install mysql-server


Instalação do MySQL via APT

Uma vez que o repositório oficial MySQL esteja configurado (veja seção anterior), para instalar o MySQL 5.7 basta executar:
  1. shell> sudo apt-get update
    shell> sudo apt-get install mysql-server
    No processo de instalação, será solicitada a criação da senha do usuário root do MySQL. Senhas devem conter pelo menos 1 caractere numérico, uma minúscula e letra maiúscula e 1 caractere especial (não alfanumérico).
  2. (Opcional) Veja se o servidor MySQL foi inicializado com:
    shell> sudo service mysql status
  3. (Opcional) Veja o que foi instalado com:
    dpkg -l | grep mysql | grep ii


Instalação do MySQL “na unha” via binários pré-compilados

Esta opção de instalação é mais trabalhosa, pois não utiliza o gerenciador de pacotes APT, porém dá mais flexibilidade. Por exemplo: permite escolher quais diretórios serão utilizados pelo MySQL, executar múltiplas instâncias, etc.
  1. Como pré-requisito, certifique-se que a dependência libaio está presente:
    shell> ldconfig -p | grep libaio
    libaio.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libaio.so.1
    Veja que a libaio está presente. Caso não tenha a libaio, instale com:
    shell> apt-get install libaio1
  2. Baixe os binários em dev.mysql.com, selecione “Linux - Generic” como plataforma. No meu caso, baixei para o diretório /home/vagrant/downloads. Dica: na tela de login, veja o link em “No thanks, just start my download”;
  3. Remova qualquer instalação prévia ou variante de MySQL com:
    shell> sudo dpkg -P mysql
  4. Executar a seguinte sequência de comandos no shell:
    sudo groupadd mysql
    sudo useradd -r -g mysql -s /bin/false mysql
    cd /home/vagrant
    tar zxvf /home/vagrant/downloads/mysql-5.7*.tar.gz
    ln -s mysql-5.7* mysql
    cd mysql
    mkdir mysql-files
    chmod 750 mysql-files
    sudo chown -R mysql .
    sudo chgrp -R mysql .
    sudo bin/mysqld --initialize --user=mysql --log-error=/tmp/mysqld.log --datadir=/home/vagrant/mysql/data
    sudo cat /tmp/mysqld.log
  5. Se tudo correu bem até aqui, o diretório de dados foi criado e uma senha temporária atribuída ao usuário root do MySQL:
    shell> sudo cat /tmp/mysqld.log
    [Note] A temporary password is generated for root@localhost: xxxxxxxxxxxx
  6. Continue com o procedimento de pós-instalação com os seguintes comandos:
    sudo bin/mysql_ssl_rsa_setup --datadir=/home/vagrant/mysql/data
    sudo chown -R root .
    sudo chown -R mysql data mysql-files
  7. Neste ponto o MySQL já está pronto para rodar. Para iniciar o processo mysqld (server):
    shell> sudo bin/mysqld_safe --user=mysql &
    (pressione Enter 2 vezes)
  8. Conecte-se com o MySQL com:
    shell> bin/mysql -uroot -p'xxxxxxxxxxxx'
  9. Na versão 5.7, é obrigatório trocar a senha na primeira conexão. Veja o exemplo para a nova senha “Root123!”:
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123!';
    mysql> quit
  10. (Opcional) Depois que tudo estiver funcionando, remova o arquivo de instalação:
    rm /usr/local/downloads/mysql-5.7*.tar.gz


Observações:
  • É usual manter um arquivo /etc/my.cnf para alterar as configurações padrão do MySQL. Você pode copiá-lo do template:
    sudo cp support-files/my-default.cnf /etc/my.cnf
    sudo chown root:sys /etc/my.cnf
    sudo chmod 644 /etc/my.cnf
  • Neste tipo de instalação manual, o MySQL não é inicializado no boot. Para inicializar manualmente:
    shell> sudo /home/vagrant/mysql/bin/mysqld_safe --user=mysql &
  • Para finalizar o processo mysqld, ao invés de forçar um kill, prefira usar:
    shell> /home/vagrant/mysql/bin/mysqladmin -uroot -p shutdown
  • Adicione os executaveis do MySQL no PATH do seu usuário:
    echo 'PATH="$HOME/mysql/bin:$PATH"' >> ~/.profile
    source ~/.profile


Para saber mais detalhes como remover o MySQL ou mudar a versão major, consulte os links nas referências abaixo. Deixe seu comentário caso algo não funcione ou se tiver alguma sugestão.

Referências