Menu fechado

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!

ProxySQL – Sincronizar / Importar usuários

No meu último post expliquei alguns fundamentos básicos do ProxySQL. Hoje eu vou falar como podemos importar os usuários do MySQL para o ProxySQL. Para realizar esta tarefa, vamos usar o proxysql-admin uma ferramenta criada pela Percona para auxiliar na administração do proxy. Se vocês está utilizando o ProxySQL da percona a ferramenta já vem instalada por padrão, caso contrário, pode baixar diretamente do repositório no Github. Vamos utilizar a opção –syncusers que vai se conectar no servidor MySQL indicado, vai buscar todos os usuários na tabela mysql.user e vai importar eles para o ProxySQL: proxysql-admin –cluster-username=[mysql-user] –cluster-password=[mysql-password] –cluster-port=[mysql-port] –cluster-hostname=[mysql-host] –syncusers A ferramenta foi criada originalmente para aumentar a compatibilidade entre o ProxySQL e o Percona XtraDB Cluster, então a terminologia dosparâmetros e mensagens vão sempre mencionar o cluster, porém a funcionalidade descrita deste . . .

Gostou ? Ajude e Compartilhe!

Como remover coluna de tabela no MySQL

Fala galera, Neste artigo para iniciantes vou mostrar como remover coluna de tabela no MySQL. Para este artigo vou utilizar uma tabela exemplo: CREATE TABLE tb( c1 INT PRIMARY KEY, c2 char(1), c3 varchar(2) ) ENGINE=InnoDB; Para remover qualquer coluna vamos utilizar o comando ALTER TABLE: ALTER TABLE tb DROP COLUMN c2; Vale lembrar que podemos remover várias colunas em ao mesmo tempo: ALTER TABLE tb DROP COLUMN c2, DROP COLUMN c3; Se você estiver utilizando MySQL 5.6 em diante, esta operação pode ser “online”, permitindo outras sessões ler e escrever na tabela enquanto o comando está sendo executado: ALTER TABLE tb DROP COLUMN c2, ALGORITHM=INPLACE, LOCK=NONE; Referencia: https://dev.mysql.com/doc/refman/5.7/en/alter-table.html https://dev.mysql.com/doc/refman/5.7/en/innodb-create-index-overview.html Gostou ? Ajude e Compartilhe!

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!