[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