O que é um SGBD?

Na maioria dos sistemas de hoje em dia é necessário o armazenamento de dados em um local seguro e confiável. Hoje em dia podemos dizer que um banco de dados é o coração de uma aplicação ou sistema. Além de facilitar o desenvolvimento é com este banco de dados que podemos tomar as decisões de negócio de uma empresa ou melhorar a experiência do usuário na hora de uma compra ou preenchimento de um formulário para que não precise digitar todas estas informações novamente.

Mas, e se perdermos o banco de dados? Ou se ele for roubado? Precisamos ter um sistema de gerenciamento que tenha controle de usuários, controle de dados a serem inseridos no banco e gravados no disco e que faça isso tudo com uma alta performance para que não prejudique o desenvolvedor e o usuário final.

Tudo isso pode é feito pelo SGBD!

 

Definição de SGBD

"Um Sistema de Gerenciamento de Banco de …
[Leia mais]
Segurança no MySQL – vulnerabilidades ou pontos fortes?

O banco de dados é parte fundamental de um sistema, sendo o provedor dos dados, ou seja, o sistema realiza uma série de validações e aplica as  regras de negócio e os demais controles de acesso a informação para por fim armazenar e buscar os dados segundo tais políticas no database.

Fica claro que um dos pontos fracos e de maior importância em tal sistema é o banco de dados, e por isso o administrador deve providenciar e implementar estratégias de segurança que impeçam acessos indevidos e indisponibilidades do banco de dados.

O MySQL tem determinadas peculiaridades que podem se tornar vulnerabilidades ou pontos fortes na segurança do sistema, isso dependerá do uso de tais recursos pelo administrador. Meu objetivo aqui é explanar esses recursos exibindo as vulnerabilidades e erros mais comuns cometidos, bem como as implementações necessárias para ter um ambiente seguro.

Instalação e Sistema …

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