Menu fechado

Categoria: MySQL

ProxySQL Tutorial – Master e Slave

Seguindo a série de blog posts sobre ProxySQL. Hoje vamos falar de como podemos colocar o proxysql em frente ao seu conjunto de master e slave(s) e distribuir escritas para os slaves sem ter que alterar o código da aplicação. Você pode entender mais sobre como instalar o ProxySQL e seus conceitos básicos aqui. Neste tutorial, vamos utilizar 4 servidores: ProxySQL (192.168.112.60) Node1 – Master (192.168.112.61) Node2 – Slave-1 (192.168.112.62) Node3 – Slave-3 (192.168.112.63) Servidores Com o proxysql devidamente instalado vamos nos conectar na interface de administração e vamos adicionar nossos três servidores e configurar o Replication Hostgroup. Basicamente vamos dizer ao ProxySQL qual vai ser o HG do master e do slave. Lembrando que o ProxySQL diferencia master e slave baseado na variável read_only: $ mysql -u admin -padmin -h 127.0.0.1 . . .

Gostou ? Ajude e Compartilhe!

Desmistificando ProxySQL

Fala galera. Neste post vou falar um pouco sobre o ProxySQL . O ProxySQL é um proxysql para que implementa o protocolo do MySQL o que lhe permite fazer coisas que outros proxies não fazem. Ele vem ganhando muita atenção nos últimos tempos e é capaz de integrar com vários produtos do ecossistema MySQL, como Replicação (master – slave), Percona XtraDB Cluster e Group Replication. Uma  das funcionalidades mais úteis (que faz o produto se destacar perante os demais) é a habilidade de escalar escritas para os slaves , ele é capaz de identificar que tipo de query está sendo recebida (Escrita ou Leitura) e enviar a query para o master ou para o(s) slave(s). Isso tudo sem ter que alterar uma linha de código na aplicação. Neste artigo vou abordar alguns . . .

Gostou ? Ajude e Compartilhe!

Backup online no MySQL com xtrabackup

Meu último post referente a backups foi a bastante tempo atrás. Embora ainda válido, não é aconselhável para ser utilizado como backup diário, então resolvi mostrar uma outra opção, o XtraBackup. Com XtraBackup, você pode realizar backups sem interromper leituras e escritas (ele requer lock por um período bem curto de tempo para pegar coordenadas do binlog). Hoje vou mostrar como realizar backup completos utilizando a ferramenta. Instalação: Para realizar a instalação, eu aconselho utilizar os repositórios para Yum / Apt-get: Centos / Redhat: sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm sudo yum install percona-xtrabackup-24 Debian / Ubuntu wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb sudo apt-get update sudo apt-get install percona-xtrabackup-24 Backup: Para realizar o backup, vamos usar o script innobackupex: innobackupex –user=root –password=’Passw0rd!’ /backups/ O script irá produzir várias mensagens, . . .

Gostou ? Ajude e Compartilhe!

MySQL 8.0 – SET PERSIST

Fala galera. MySQL 8 DMR foi disponibilizado hohe e ele traz algumas novas funcionalidades bem legais. Uma delas é a habilidade de persistir variáveis/configurações entre restart’s. Essa opção é bastante interessante se trocamos variáveis dinâmicas. Isso nos poupa de ter que editar o arquivo .cnf toda a vez que executamos um SET no MySQL(Ou mesmo quando não temos acesso aos arquivos no disco). A nova sintaxe para o comando é a seguinte: SET PERSIST option=value; SET @@persist.option=value; O MySQL vai criar um arquivo chamado mysqld-auto.cnf. Este arquivo estará localizado na pasta do datadir. Este arquivo irá conter todas as variáveis que foram setadas com o PERSIST e este arquivo será carregado depois de todos os outos (my.cnf / –defaults-file / ~/.my.cnf / …). Isto quer dizer que as variáveis configuradas . . .

Gostou ? Ajude e Compartilhe!

MySQL 5.7 utilizando vagrant

Fala galera. Hoje vou escrever um post rapidinho pra mostrar uma maneira facil de configurar uma vm com mysql 5.7 usando vagrant. Vagrant é um utilitário de linha de comando que disponibiliza ferramentas para administrar softwares de máquinas virtuais, como por exemplo o virtualbox. Você pode encontrar mais detalhes sobre o Vagrant na documentação. Clique no link installation, se tiver dúvidas quanto a sua instalação. Eu escrevi um script que está disponível no github. Ele cria uma máquina virtual usando centos 7 e instala o mysql 5.7 nela: git clone https://github.com/altmannmarcelo/mysql-vagrant.git cd mysql-vagrant vagrant up vagrant ssh mysql57 mysql Se você olhar nos arquivos que foram clonados do git, vai ver um arquivo chamado bootstrap.sh. Este arquivo vai configurar o repositório do mysql, instalar o pacote do mysql 5.7 e . . .

Gostou ? Ajude e Compartilhe!

Incorrect datetime value – convertendo para timestamp

Fala pessoal. Hoje eu passei por um problema que em um primeiro momento parecia claramente um bug. Mas olhando um pouco melhor para ele, fez todo sentido. Eu tenho uma tabela, que aqui vou chamar de t1. Essa tabela tem um campo usando datetime. Durante um projeto de normalização do banco, estamos trocando alguns campos de datetime para timestamp. Quando eu tentei converter a tabela eu recebi o seguinte erro: mysql> show create table t1; +——-+——————————————————————————————-+ | Table | Create Table | +——-+——————————————————————————————-+ | t1 | CREATE TABLE `t1` ( `date` datetime DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +——-+——————————————————————————————-+ 1 row in set (0,00 sec) mysql> select * from t1; +———————+ | date | +———————+ | 2010-03-28 01:28:20 | +———————+ 1 row in set (0,00 sec) mysql> alter table . . .

Gostou ? Ajude e Compartilhe!

Forçando transação vitima de rollback em deadlock

Se você utiliza uma Storage Engine que suporta transações, você provavelmente já enfrentou ou ouviu falar de deadlock’s. Na Documentação do MySQL podemos ver: “Always be prepared to re-issue a transaction if it fails due to deadlock. Deadlocks are not dangerous. Just try again.” “Sempre esteja preparado para re-executar uma transação se ela falhar por causa de deadlock. Deadlocks não são perigosos. Apenas re-execute a transação.” Na empresa em que trabalho, temos um importante processo que de vez em quando falha por causa de deadlock. Decidi então melhorar este processo e fazer o que a documentação diz (re-executar a transação). Para fazer isso, Eu queria poder reproduzir o scenario do deadlock e a transação vitima do rollback teria que ser a do processo em questão. Criar um deadlock é simples, . . .

Gostou ? Ajude e Compartilhe!

MySQL 5.7 senha root gerada automaticamente

Fala pessoal. Vocês devem ter notado algo diferente quando instalaram o MySQL 5.7 do zero, seja via yum ou pelos binários que o MySQL disponibiliza. O password do usuário root é gerado automaticamente. Ok, e aonde eu posso encontra-lo ? Centos cat /var/log/mysqld.log | grep “A temporary password is generated for” | awk ‘{print $NF}’ Examplo: [root@master ~]# cat /var/log/mysqld.log | grep “A temporary password is generated for” | awk ‘{print $NF}’ a3BGf#TY.pBj Versão binária Quando você rodou o comando para inicializar o datadir mysqld –initialize você verá a seguinte mensagem na sua tela: . . . 2016-01-13T21:05:03.070322Z 1 [Note] A temporary password is generated for root@localhost: vL8n>Hs%kr>s . . . Você terá que alterar a senha do usuário no primeiro login. Você pode fazer isso seguindo o passo 2 . . .

Gostou ? Ajude e Compartilhe!

Adicionando nova collation no MySQL

Eu sou do tipo de DBA que prefere manter as coisas mais simples possíveis, mas, tem vezes em que não é possível. Alguns dias atrás, me deparei com um problema no qual, nenhuma das collations presentes no MySQL iria garantir a integridade do meu banco de dados, e para evitar uma grande re-escrita do código fonte, me deparei com uma opção até então desconhecida. Adicionar minha própria collation no MySQL Esta opção está descrita nesta sessão da documentação. Neste artigo, vou mostrar como fazer o MySQL identificar vogais com acento agudo como uma letra diferente. Primeiro, precisamos descobrir onde está o nosso diretório com os charset’s: mysql [localhost] {msandbox} ((none)) > SHOW VARIABLES LIKE ‘character_sets_dir’; +——————–+—————————————+ | Variable_name | Value | +——————–+—————————————+ | character_sets_dir | /mysql/sources/5.6.26/share/charsets/ | +——————–+—————————————+ 1 row . . .

Gostou ? Ajude e Compartilhe!

MySQL & NoSQL – Memcached Plugin

Muita gente já deve ter ouvido falar nos bancos de dados NoSQL e uma das ferramentas NoSQL muito utilizada é o memcached, no qual adicionamos uma camada de cache entre a aplicação e o banco de dados. Desde a versão 5.6 do MySQL, foi disponibilizado um plugin de integração entre o MySQL e o Memcached. Neste artigo publicado no iMasters eu mostro como instalar e configurar esta integração. Gostou ? Ajude e Compartilhe!

Gostou ? Ajude e Compartilhe!