SELINUX MySQL – Liberando o datadir para outro diretório

É comum ver administradores desativando o SELINUX para possibilitar alterações nas configurações do MySQL, tais como a mudança do diretório de armazenamento de dados o “datadir”, porém essa não é uma prática muito segura, em alguns casos de corporações que passam por processos de auditoria ou de ambientes que exigem altos padrões de segurança, o correto é configurar o SELINUX adequadamente, alterando a parametrização. O erro mais comum encontrado é o seguinte:

130321 11:50:51 mysqld_safe Starting mysqld daemon with databases from /datadir
...
2013-03-21 11:50:52 2119 [Warning] Can't create test file /datadir/boxy.lower-test
2013-03-21 11:50:52 2119 [Warning] Can't create test file /datadir/boxy.lower-test
2013-03-21 11:50:52 2119 [ERROR] /usr/sbin/mysqld: Can't create/write to file
'/datadir/boxy.pid' (Errcode: 13 - Permission denied)
2013-03-21 11:50:52 2119 [ERROR] Can't start server: can't …
[Leia mais]
O que é Codename: BlueMix?

IBM Codename: BlueMix é a oferta de nuvem mais recente da IBM. Permite que as organizações e os desenvolvedores criem, implementem e gerenciem aplicativos na nuvem de maneira fácil e rápida. O BlueMix é uma implementação da Arquitetura de Nuvem Aberta da IBM baseada em Cloud Foundry, uma plataforma como serviço (PaaS) de código aberto. O BlueMix oferece serviços em nível empresarial que podem ser facilmente integrados aos seus aplicativos de nuvem sem que seja necessário saber como instalá-los ou configurá-los. Este artigo oferece uma descrição de alto nível sobre o Cloud Foundry e o IBM BlueMix e define as características e os serviços que fazem parte do BlueMix e que o tornam uma plataforma como serviço muito atraente para o mercado atual.

O que é Cloud Foundry?

[Leia mais]
DatabaseCast: Dashboards

Olá, pessoal! Neste episódio do DatabaseCast Mauro Pichiliani (Twitter | Blog) e Wagner Crivelini (@wcrivelini) ficam olhando para a tela junto com a convidada Viviane Ribeiro (@viviane_sql). Neste episódio, você vai saber como a interface de um BI pode ajudar os usuários, quais são os elementos visuais que mais confundem do que ajudam, como uma pizza pode não se redonda, quem gosta de visitar submarinos, como um triângulo pode dar muito dor de cabeça e mandar um olá para o cara que sempre pede para exportar para a planilha e imprimir o relatório.

Não deixe de nos incentivar …

[Leia mais]
Fragmentação dos Objetos no InnoDB

Se o seu banco de dados passa por constantes operações de “DELETE” ou “UPDATE” ele provavelmente ficará fragmentado, fazendo com que os índices já não sejam tão eficientes como antes e os datafiles ocupem mais espaço do que o necessário em disco. Seria, algo similar a fragmentação de filesystem.

Através do catalogo do MySQL é possível identificar quanto espaço livre existe no datafile e assim identificar uma margem ou porcentagem de fragmentação por objeto. Até a versão 5.1.21 essa margem era descrita através da coluna “TABLE_COMMENT” da tabela “INFORMATION_SCHEMA.TABLES”, sendo assim bastava executar a seguinte consulta:

SELECT table_schema,
table_name,
table_comment
FROM information_schema.tables
WHERE engine LIKE 'InnoDB'
AND table_comment RLIKE 'InnoDB free: ([0-9]{6,}).*';

Da versão 5.1.28 em diante isso foi corrigido, sendo possível avaliar a …

[Leia mais]
MySQL Workbench 6.2.1 Beta

Foi disponibilizada uma nova versão Beta do MySQL Workbench, essa versão conta principalmente com recursos desenvolvidos para o MySQL 5.7, porém ainda existem novidades para a versão 5.6.

Os recursos que mais me chamaram a atenção e me interessam a principio, são as melhorias no Explain Visual, o que auxilia bastante na exibição gráfico dos planos de execução, principalmente quando existe a necessidade do DBA explicar ao Desenvolvedor como melhorar as consultas. Além disso as novas integrações com o MySQL Fabric parecem muito promissoras.

O “Processlist” ou “Administration – Client Connections”, ficou muito melhor, agora eles utilizam o mesmo conceito já usado no SQL Server e Oracle, exibindo o nome do programa, e traz mais informações a respeito da sessão do usuário, exibindo inclusive as “THREADS” da sessão:

 

[Leia mais]
Rotina de Rebuild – MySQL

Com o constante uso do banco de dados, operações como “delete” e “update”  acabam causando a fragmentação dos objetos nos datafiles, e isso muitas vezes prejudica a performance do banco de dados e aloca espaço desnecessariamente. Com isso torna-se necessário implementar uma rotina de manutenção capaz de otimizar o ambiente, evitando o uso de espaço desnecessário e desfragmentando os índices da tabela para uma melhor performance.

Geralmente isso é feito manualmente ou através de shell scripts, mas preferi criar um “PROCEDURE” e implementar uma rotina via “SCHEDULE” próprio MySQL, segue:

#
use mysql;
#
# TABELA DE LOG PARA MONITORAR O PROCESSO
DROP TABLE IF EXISTS mysql.mantained_table_history;
CREATE TABLE mysql.mantained_table_history(
mantained_table_schema  VARCHAR(255),
mantained_table_name VARCHAR(255),
mantained_type  VARCHAR(255),
mantained_status VARCHAR(10),
mantained_date …
[Leia mais]
Analisando o tamanho das tabelas,indices primários e secundários do InnoDB

É possível analisar o tamanho dos objetos do banco de dados através do catalogo do Innodb, mas para que essas informações sejam precisas, as estatisticas devem estar atualizadas!

Veja como atualizar as estatisticas no post:

http://mathiasbrem.com.br/update-statistics-mysql-innodb/

http://mathiasbrem.com.br/rotina-analyze-automatizada-via-schedule-mysql/

A consulta a seguir ajuda a avaliar o tamanho dos objetos do banco de dados:

select
INNODB_SYS_TABLESTATS.NAME,
INNODB_SYS_TABLESTATS.NUM_ROWS,
concat(round(((INNODB_SYS_TABLESTATS.CLUST_INDEX_SIZE+OTHER_INDEX_SIZE) * round(INNODB_SYS_TABLESPACES.PAGE_SIZE/1024,0)) / 1024 / 1024, 2),'G') AS TOTAL_SIZE, …
[Leia mais]
Rotina Analyze – Automátizada via Schedule MySQL

Essa rotina foi desenvolvida com o intuito de atualizar as estatisticas de todos os databases da instância automaticamente, de forma dinâmica.

#
use mysql;
#
# TABELA DE LOG PARA MONITORAR O PROCESSO
DROP TABLE IF EXISTS mysql.mantained_table_history;
CREATE TABLE mysql.mantained_table_history(
TABLE_SCHEMA  VARCHAR(255),
TABLE_NAME VARCHAR(255),
MANTEINED_TYPE  VARCHAR(255),
STATUS VARCHAR(10),
DATE datetime,
STARTIME datetime,
ENDTIME datetime
)engine=MyISAM;
#
#
#ROTINA DE ANALYZE COM LOG + MONITORAMENTO
#
use mysql;
#
# PROCEDURE QUE REALIZA O ANALYZE
#
DELIMITER $$
DROP PROCEDURE IF EXISTS RotinaAnalyze $$
CREATE PROCEDURE RotinaAnalyze()
BEGIN
#
DECLARE done INT DEFAULT FALSE;
DECLARE query_analyze varchar(255);
DECLARE ANALYZE_TABLE_SCHEMA varchar(255);
DECLARE ANALYZE_TABLE_NAME varchar(255);
DECLARE date_analyze datetime;
DECLARE startime_analyze datetime;
DECLARE endtime_analyze datetime;
DECLARE analyze_tables CURSOR FOR select TABLE_SCHEMA, …
[Leia mais]
MySQL Foreign Chaves Exemplo & ERROR 1452

Original post - http://anothermysqldba.blogspot.com/2014/08/mysql-foreign-keys-example-error-1452.html

 Então, eu encontrei uma situação hoje lidar com a necessidade de atualizar um campo, mas o usuário não foi capaz de fazê-lo por causa das restrições de chave estrangeira relacionados. 

Este blog com ser um exemplo simples que mostra uma chave estrangeira e como atualizá-los se você tiver que fazê-lo. 

Primeiro vamos criar uma tabela simples e preenchê-lo com dados aleatórios. 

CREATE TABLE `table_w_code` ( 
`SOMECode` varchar(50) COLLATE utf8_unicode_ci NOT NULL, 
`NameofCode` varchar(50) COLLATE utf8_unicode_ci NOT NULL, 
PRIMARY KEY (`SOMECode`) 
) ENGINE=InnoDB ; 

[Leia mais]
Update Statistics InnoDB – MySQL

¿Qué pasa?

Simples! Atualização de estatistas do MySQL

Os bancos de dados utilizam estatísticas para definir seus planos de acesso aos dados e assim executar o caminho mais eficiente na busca pelos dados solicitados por determinada consulta. Para isso o banco de dados deve manter suas estatísticas sempre atualizadas. Por padrão o InnoDB já realiza essa atualização automaticamente, evitando que haja qualquer tipo de problema de performance por falta de informações de acesso.

Essa atualização forçada ou automatizada é controlada pela variável:

innodb_stats_persistent

Mais informações a respeito dessa configuração estão disponiveis em:

http://dev.mysql.com/doc/refman/5.6/en/innodb-persistent-stats.html

Ok, …

[Leia mais]