Particionamento no MySQL

A ideia aqui é introduzir os conceitos de particionamento, exibir os recursos disponíveis no MySQL e passar um exemplo prático de como uma tabela pode ser particionada e quais os benefícios dessa prática. Futuramente abordarei o “subparticionamento”, veja os tópicos que serão abordados:

  • Conceitos de particionamento
  • Tipos de particionamento
  • Elegendo as clausulas de particionamento
  • Exemplo prático de particionamento
  • Manutenção
  • Limitações no MySQL (atualmente)

Conceitos:

O particionamento é um recurso clássico de banco de dados que resolve muitos problemas de escalabilidade e performance além de facilitar o gerenciamento e armazenamento de grandes volumes de dados. Com esse recurso é possível segregar o armazenamento dos dados em segmentos segundo uma clausula, ou seja, por determinado dado presente no registro o mesmo será …

[Leia mais]
Adicionando nova collation no MySQL

Trabalhar com banco de dados, às vezes, não é uma tarefa muito fácil. Eu sou do tipo de DBA que prefere manter as coisas o mais simples possível, porém, tem vezes em que não é possível. Alguns dias atrás, me deparei com um problema o qual nenhuma das collations presentes no MySQL resolveria. Para evitar uma grande re-escrita do código, descobri uma opção até então desconhecida, adicionar minha própria collation no MySQL.

Esta opção está descrita na 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';
+--------------------+---------------------------------------+
| …
[Leia mais]
DBLink do Oracle para o MySQL

É comum a necessidade de integração entre diferentes SGBD para finalidades diversas, tais como relatórios, DW, iteração de sistemas secundários, entre outras.  O Oracle disponibiliza um recurso chamado DBLINK que proporciona a conexão a databases remotos, sendo esses Oracle ou NON-ORACLE. As conexões NON-ORACLE são realizadas com o auxilio do ODBC, a ideia aqui é exemplificar passo a passo como é configurado esse recurso no Oracle e também abordar os possíveis erros que venham a ocorrer e as diferenças entre o Oracle 10 e 11g.

O exemplo a seguir foi executado em um servidor Oracle Linux 6.5 com unix-ODBC 64bits, MySQL-ODBC 64bits e Oracle 11.2.0.4.

1 – Instalação do unix-ODBC:

yum install unixODBC

2- Download do mysql-connector-odbc:

Faça o download do driver correspondente a sua distribuição Linux em:

[Leia mais]
DatabaseCast: Currículo de DBA

Olá, pessoal! Neste episódio do DatabaseCast, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e os convidados Rodrigo Almeida (@dbarodrigo) e Airton Lastori (@alastori) abrem a caixa de entrada e analisam currículos para a vaga de DBA Oracle, SQL Server e MySQL. Neste episódio você vai descobrir o que colocar em um currículo para vagas de DBA júnior, pleno e sênior, indicar o quanto quer ganhar, citar sua experiência no condomínio, gastar um tempo no LinkeIn, contar sua história e como (não) mentir no currículo. …

[Leia mais]
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';

[Leia mais]
Script de backup (Mydumper + retenção + monitoramento)

A ideia aqui é mostrar uma rotina de backup lógico alternativa ao convencional mysqldump, realizando um backup lógico na menor janela de disponibilidade possível, se comparado ao dump convencional.

  • Backup full online e comprimido;
  • Retenção de logs binários;
  • Controle de espaço em disco através do expurgo dos backups mais antigos;
  • Catalogo de backup;
  • Monitoramento do backup;
  • Backup lógico e organizado sem o uso do convencional Mysqldump.

Lembrando que já foram postadas soluções de backup iguais a essa utilizando o Xtrabackup e o Mysqldump. Neste artigo vou abordar a solução Mydumper, então sugiro a leitura dos artigos “Soluções de Backup no MySQL” e “ …

[Leia mais]
Mydumper & Myloader- substituindo o MySQLdump

Como assim substituindo? É uma nova versão do MySQLdump? Não, é uma ferramenta disponibilizada pela comunidade para realizar o dump do MySQL de forma mais otimizada. E por isso você não vai mais querer utilizar o convencional MySQLdump em seus backups lógicos. Ele vai parecer tão defasado que você só vai utilizá-lo para backups ou export muito simples e com pequeno volume de dados.

O Mydumper é uma ferramenta de dump otimizada que possibilita gerar o dump de um banco de dados até seis vezes mais rápido que o MySQLdump convencional. Faz o dump de forma mais organizada e paralela.

Guia de instalação

É necessário instalar algumas dependências, já que o Mydumper será compilado localmente. O guia a seguir já possui as dicas de instalação de dependências e …

[Leia mais]
Evite erros ajustando case sensitive do MySQL

Uma situação muito comum: ambiente de desenvolvimento Windows e ambiente de homologação e produção Linux. Se você se enquadra nela, uma maneira prática de evitar problemas relacionados aos nomes de tabelas é usar a configuração lower_case_table_names=1 em ambas plataformas.

Como o MySQL faz referências às tabelas

No MySQL, databases/schemas são diretórios, e tabelas são arquivos no filesystem do SO. É fácil verificar criando uma tabela e listando os arquivos do datadir. Veja este exemplo no Windows:

mysql> CREATE DATABASE meudb;
mysql> USE meudb;
mysql> CREATE TABLE MinhaTabela(id INT PRIMARY KEY NOT NULL AUTO_INCREMENT);


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| meudb              |
| mysql              |
| performance_schema |
+--------------------+


mysql> SELECT @@datadir; …
[Leia mais]
Como o Docker pode resolver problemas do mundo real para desenvolvedores web

Trabalhando com desenvolvimento web? Bem, então você provavelmente já ouviu falar sobre Docker e seus desdobramentos recentes. Recipientes Docker podem ser um verdadeiro reforço de produtividade para as suas próximas aplicações web. Para um desenvolvedor web, não é tão fácil de entender a essência do Docker.

É por isso que eu gostaria de dar uma olhada nos recipientes Docker e mostrar alguns problemas do mundo real que o Docker está resolvendo para desenvolvedores web.

O que é o Docker?

Docker é basicamente uma ferramenta de código aberto para a execução de containers isolados no Linux fazendo o deploy de aplicativos dentro de containers isolados mais rapidamente. O Docker cria recipientes autossuficientes e portáteis a partir de qualquer aplicativo.

O mesmo recipiente que o desenvolvedor …

[Leia mais]
Script de backup (Xtrabackup + retenção + monitoramento)

A ideia desse artigo é mostrar um processo/ política de backup por completo, contemplando:

  • Backup full online e comprimido;
  • Retenção de logs binários;
  • Controle de espaço em disco através do expurgo dos backups mais antigos;
  • Catálogo de backup;
  • Monitoramento do backup;

Para que seja possível acompanhar esse artigo, recomendo que leia primeiramente este e este artigo. Eles lhe darão uma base conceitual de DBA e uma apresentação inicial das capacidades da ferramenta Xtrabackup. Instale o Xtrabackup como mencionado no artigo “backup com xtrabackup”. Para começar, configure o log binário do MySQL; isso possibilitará o famoso …

[Leia mais]