[SP-pm] Ferramentas para Administração de Bases de Dados MySQL [Was: [Announce] � do Net::Squid::Auth::Plugin::SimpleLDAP]

Luis Motta Campos luismottacampos at yahoo.co.uk
Mon Mar 8 07:19:35 PST 2010


Solli Honorio wrote:
> Luis Motta Campos wrote:
>> :) Obrigado pela parceiria, é divertido e estimulante programar
>> coisas assim. A gente poderia fazer isso outras vezes. Eu tenho
>> montes de tralhas de MySQL que eu quero construir, agora... estou
>> organizando uma listinha, vou publicar aqui assim que eu tiver uma
>> idéia boa do que eu quero...
> 
> Me inclua nesta, apesar de não ser DBA, tenho interesse nisto ...
> alias, pensando bem acho que sou quase um ornitorrinco, pois não sou
> programador mas programo, não sou DBA mas  fico dando manutenção nos
> bancos de dados, sou sysadmin mas também trabalho com o Windows.

Bom, para já, eu tenho um problema interessante: o pessoal aqui no eBay
usa replicação como backup - tem sempre um MySQL "Slave" replicando a
base de dados com 12 horas de atraso. Assim, se acontecer alguma coisa,
como por exemplo alguém fazer uma *osta e remover uma tabela do banco, é
fácil recuperar da base de dados "atrasada".

Para implementar replicação com atraso, o pessoal aqui usa um script PHP
que gerencia o MySQL SQL Thread (o thread que aplica binlogs copiados da
base de dados master para o slave local).

Para obter a quantidade de segundos de atraso, este script tem de ligar
o SQL Thread e dar um segundo para ele começar a replicar, e assim
construir uma estimativa. Claro, isso é um problema, já que quando o SQL
Thread liga, ele vai aplicar uns segundos de mudanças da base de dados
mestra no slave local, fazendo a replicação dar tranquinhos desnecessários.

O que eu quero fazer é construir um módulo de Perl que seja capaz de
olhar para o relay-log copiado da base de dados mestra e estimar quanto
tempo de atraso com relação à base de dados mestra está contido no
arquivo de log (evitando assim ter de ligar o SQL Thread para saber esta
informação).

Mais tarde, vou tentar substituir o PHP que faz isso por um daemon que
seja capaz de rodar tanto como um processo "standalone" como no cron, e
que permita que se configure quanto tempo de atraso um determinado
cliente deve ter, e que seja capaz de garantir este tempo de atraso com
95% de confiabilidade.

Que tal isso para começar, Solli?

Idéias, considerações, informações, sugestòes, e protótipos são todos
bem-vindos... :)

Putamplexos!
-- 
Luis Motta Campos is a DBA,
Perl Programmer, foodie and photographer.


More information about the SaoPaulo-pm mailing list