Mediawiki Search Engine

Recentemente realizei a instalação de um sistema de ajuda/knowledge base rodando com base em Mediawiki e MySQL, porém após alguns dias quando já havia muito conteúdo e diversos usuários registrados fui notificado que a pesquisa (search) não estava sendo realizada corretamente e não retornava nenhum resultado ao serem pesquisadas as palavras php e asp (que abrangem boa parte do conteúdo até o momento).

Após algum tempo pesquisando verifiquei que o sistema de busca padrão do Mediawiki é o “fulltext search”, que por padrão ignora quaisquer palavras com menos de 4 caracteres nas pesquisas.

Para contornar esta situação era necessário setar o padrão mínimo de caracteres para 3 diretamente no banco de dados através do próprio my.cnf setando a variável “ft_min_word_len” para o valor desejado e reiniciando o serviço do MySQL:

[mysqld]

ft_min_word_len=3

E após a alteração do banco de dados é necessário recriar os índices de pesquisa do Mediawiki para utilizar o novo padrão, para realizar esta operação entre com a seguinte query em sua base de dados:

REPAIR TABLE searchindex QUICK;

Lembrando que a tabela searchindex pode ter o nome diferente dependendo do prefixo utilizado durante a instalação do mediawiki / criação da base de dados, por exemplo, se meu prefix é “wiki_” a minha tabela terá o nome “wiki_searchindex”.

Maiores informações de fulltext search na documentação oficial do MySQL

Lembrando que existem diversas engines que aprimoram o sistema de busca do Mediawiki, como Lucene-search e Sphinx, se seu sistema de wiki for relativamente grande ou complexo recomendo dar uma olhada…

Firefox Download Day!

Com o lançamento do release candidate do Firefox 3 disponibilizado hoje no site oficial o número de downloads está crescendo incrívelmente rápido! A nova release está bem estável, rápida e completa, definitivamente vale a pena baixar e experimentar esta nova versão do navegador mais flexível da atualidade!

Para acompanhar o número de downloads oficiais do Firefox está disponível o download counter oficial da Mozilla!

Nagios PNP v0.4.4

The PNP Developer Team has just released their new version of the graphing addon.
The last version was mainly released for some improvements of the optional “Bulkmode with NPCD” (Nagios Perfdata C Daemon), interesting for huge Nagios installations to decrease check latencies without loosing performance data processing and minor bug fixes.
For more information, screenshots and downloads just have a look at http://pnp4nagios.sourceforge.net/

Published by: Nagios Community

Review Luizxx.COM: ^^

PNP is a great graphing tool for Nagios, building detailed graphs in a organized way. I’ve been using it in some small monitoring structuresand it’s working well… With this new update it’s possible to graph data present on large monitoring structures without overloading the server and with the correct check times without loosing performance and data.

Off course you need to have a complete, structured and well managed Nagios infra-structure to use efficiently any graphing tool, specially NagiosPNP (C + PHP) and NagiosGraph (Perl + CGI)!

MySQL Cluster (Master/Slave)

Um dos recursos mais interessantes presente no MySQL é a capacidade de replicação automatizada de bases de dados em servidores distintos de forma simples e rápida. Segue um breve tutorial para configuração de um servidor MySQL com replicação 1:1 (Master/Slave):

Primeiramente realize a instalação do MySQL em ambas as máquinas, lembrando que é altamente recomendável manter a mesma versão em todos os servidores participantes do cluster, e ative o acesso a conexões TCP (vem como padrão na maior parte das distribuições). Para prosseguir com o exemplo, consideraremos que o servidor master tem o IP 192.168.0.1 com hostname Naru e o slave tem o IP 192.168.0.2 com hostname Motoko.

Adicione os seguintes parâmetros na sessão [mysqld] do/etc/my.cnf no master:

log-bin=naru-bin
log-slave-updates
server-id=1

Agora, adicione os seguintes paramêtros no [mysqld] do /etc/my.cnf no slave:

relay-log=motoko-relay-bin
master-host=192.168.0.1
master-user=replication
master-password=mypassword
server-id=2

Inicie o serviço MySQL no servidor master e adicione um usuário com permissão de replication (em nosso caso o usuário é replication e a senha é mypassword), lembrando que esse usuário será utilizado para qualquer conexão entre os servidores :

GRANT REPLICATION SLAVE ON *.* TO ‘replication’@192.168.0.2 \
IDENTIFIED BY ‘mypassword’;

Reinicie o serviço MySQL no servidor master para fixar as alterações.

Após realizar as configurações no servidor master, inicie o serviço MySQL no servidor slave e inicie o serviço de replicação com:

START SLAVE;

Para verificar o status da replicação, utilize a seguinte sintaxe no servidor slave:

SHOW SLAVE STATUS\G;

A linha related_log_files deve indicar o arquivo correspondente, e as linhas Slave_IO_Running e Slave_SQL_Running devem estar setadas para Yes. Desta forma a replicação está sendo feita normalmente.

Lembrando que as bases devem estar em sincronia para o correto funcionamento, desta forma, os dados do servidor slave não podem ser alterados diretamente. Caso tenha algum erro ao iniciar a replicação consulte o log default do MySQL, pois os dados obtidos são bem completos e de fácil entendimento.

Normalmente o principal problema que acontece em servidores que já estão sendo utilizados em produção é a falta de sincronia entre as bases, que pode ser resolvida fazendo um dump da base master e replicando para a slave sem que haja alteração dos dados durante o processo.

Caso seja necessário realizar a alteração do servidor master enquanto a máquina slave está em produção, pode-se utilizar as seguintes sintaxes:

SLAVE STOP;
CHANGE MASTER TO master_host=”<IP do servidor master>”, \ maste_log_pos=0;
SLAVE START;

* Tendo em vista que a nova máquina master já está configurada corretamente.

A replicação pode ser realizada de várias outras formas, de acordo com as necessidades de cada ambiente, porém este tutorial indica sua utilização mais simples, normalmente utilizado em sistemas de consulta onde a carga é muito alta e deve ser distribuída.

Conector Python/PostgreSQL

Alguns dias atras resolvi instalar o Trac para gerenciar um projeto que desenvolvi, porem durante a instalacao resolvi armazenar meus dados em uma base PostgreSQL, e entao me deparei com a falta de um modulo para conexao Python com PostgreSQL presente na documentacao do Trac, o pyPgSQL.

Minha plataforma utilizada foi um RedHat Enterprise 5 rodando em 64bits, e acabei nao encontrando nenhum pacote pronto e atualizado para a instalacao. Para que nao fosse necessario compilar e instalar tudo manualmente resolvi criar o pacote com base em um spec ja existente e para aqueles que precisarem, vou disponibiliza-lo aqui para download:

Source: pyPgSQL-2.4-0.src.rpm
RedHat Advanced Server 5: pyPgSQL-2.4-0.x86_64.rpm