Database Disaster Resilience (3/3)

Maio 27, 2007 on 10:58 pm | In database, linux, MySQL, networking, open-source, storage | No Comments

(Continuação deste outro post)

Para encerrar este tema, a solução final passou por replicar duas partições de alguns GBs usando DRBD 0.7, e montar o /var/lib/mysql lá em cima.

Como storage engine ficou o InnoDB, mas com tablespaces individuais por cada tabela, para ser mais fácil gerir o espaço em disco (e também dá jeito para backup/restore binário).

Ainda não simulei desastres com o sistema em carga, mas conto fazê-los em breve, se houver novidades dignas de registo, avisarei.

Só mais uma nota, durante o setup foi necessário sincronizar a partição entre duas localizações remotas e fiquei agradavelmente surpreendido com o desempenho de rede do DRBD.

PS: A história das maçãs serve apenas para facilitar a escrita e evitar mencionar o objectivo real da aplicação que está em cima desta infra-estrutura. Como é ortogonal em relação aos temas discutidos, julgo que ninguém sai lesado.

Share

SLED 10 on Lenovo T60 – s2ram

Maio 22, 2007 on 3:19 pm | In ibm, linux, mobile, MySQL | 1 Comment

Tenho estado a fazer alguns testes com SLED 10 em portáteis Thinkpad (aliás Lenovo…) T60.
São umas belas máquinas, pesadotas mas poderosas, pelo menos para os meus padrões de exigência.

A instalação reconheceu o hardware todo sem problemas. Houve só duas coisas que não ficaram a funcionar out-of-the-box. Uma foi o suspend-to-ram, outra foi a autenticação biométrica.

Ainda não me dediquei à segunda, mas a primeira já ficou resolvida. Este modelo de Thinkpad não está na whitelist do s2ram, por isso, para evitar potenciais chatices, o instalador desactiva esta opção sem dizer nada a ninguém. Este artigo ajudou-me a configurar as opções correctas para o s2ram e neste momento já funciona sem problemas. Resumidamente, é preciso acrescentar ao seguinte ficheiro:

/etc/powersave/sleep

as seguintes opções:

SUSPEND2RAM_FORCE=”yes”
SUSPEND2RAM_ACPI_SLEEP=”3″

Curiosamente, o suspend-to-disk funcionou sem problemas logo após a instalação.

PS: compiz rocks ;)

Share

wget + fiddler

Maio 18, 2007 on 9:19 pm | In linux, MySQL, open-source, windows | No Comments

Quem está habituado a trabalhar em Linux conhece o wget desde os primeiros contactos com a plataforma. Só há alguns meses descobri que também havia binários para Windows. Comecei a usá-lo diariamente para evitar alguns problemas conhecidos com os downloads directos do Internet Explorer.

Para downloads de sites públicos funciona lindamente. Para downloads de sites protegidos com autenticação por http basic também, basta usar as opções:

--http-user
--http-password

Para downloads de sites ftp autenticados existem opções equivalentes, mas e para todos os sites com esquemas de autenticação baseados em cookies, a esmagadora maioria?

Ao bom estilo do software open-source, também existe uma opção! :) A opção --header permite especificar qualquer cabeçalho http que se pretenda acrescentar ao pedido original. Isto significa que é possível acrescentar um cabeçalho do tipo:

Cookie: __utmz=17373.1172.2.1.utmccn=(direct)

para especificar o cookie que deve ser usado para autenticar o utilizador que tenta fazer o download (este exemplo – alterado – é parte de um cookie usado pelo Gmail). Mas, e como obter este cookie? Ele está guardado algures nas directorias temporárias do browser, mas há uma extensão brilhante para o Internet Explorer que pode dar uma ajudinha: o Fiddler. Trata-se de uma extensão que permite fazer debugging ao protocolo http que o browser usa para “falar” com os servidores web. De facto não é mais do que um proxy transparente com uma interface bonitinha para espiolhar o que lá passa, mas dá muito, muito jeito.

Basta abrir o Fiddler, iniciar o download através do Internet Explorer, identificar o pedido correspondente no inspector do Fiddler, mudar para a vista “Raw”, et voilà, estarão à vista todos os cabeçalhos, incluindo o cookie que tanta falta faz ao wget. Agora é só fazer copy/paste e está o problema resolvido.

Share

TSM Live CD

Maio 14, 2007 on 10:53 pm | In ibm, linux, MySQL, storage, tivoli | No Comments

No mundo empresarial de data protection, é mais ou menos assumido que há poucos rivais para o Tivoli Storage Manager (TSM) da IBM. É um produto maduro, com muitos anos de existência e conceitos pouco intuitivos mas extremamente eficazes (ao contrário da maior parte do software de backup, é data-oriented e não media-oriented, o que significa que gere a informação e não os mídias onde a informação é guardada). Para além disso é verdadeiramente multi-plataforma (Windows, Linux, AIX, z/OS, i5/OS, etc.).

Recentemente estive envolvido na realização de backups para Disaster Recovery (DR) recorrendo precisamente ao TSM. A mim couberam-me os servidores Linux. Para garantir backups completos com o filesystem em estado consistente, é importante que o sistema operativo que lança o cliente de backup não toque no disco, o que equivale a dizer que é preciso um live-cd com Linux.

Ainda tentei usar o bootcd do Debian para tentar gerar um Live CD de um sistema que já tinha o cliente de backup instalado, mas ficaram muitas arestas por limar. Finalmente decidi dar uma hipótese ao Ubuntu, e seguir este tutorial para criar um Dapper Drake à minha maneira. Correu às mil maravilhas. Bastou-me copiar as directorias do cliente de backup para o /opt, dar-lhe uma ajudinha a encontrar as bibliotecas com o ldconfig e ficou a funcionar.

No final, o procedimento para fazer backups/restores de DR ficou com o seguinte aspecto:

Backup

  1. arrancar com live cd
  2. abrir terminal
  3. setxkbmap pt
  4. sudo su -
  5. sfdisk para gerar dump das partições (ex. sfdisk -d /dev/sda > partition-dump.txt)
  6. criar mount points (ex. mkdir /mnt/sda1)
  7. mount nos sitios certos (ex. mount -t ext3 /dev/sda1 /mnt/sda1)
  8. encher de zeros os blocos vazios do filesystem para melhor compressão (ex: dd if=/dev/zero of=/mnt/sda1/dummy; rm -f /mnt/sda1/dummy)
  9. mudar node name para o valor correcto e acrescentar “compression yes” ao ficheiro /opt/tivoli/client/ba/bin/dsm.sys
  10. fazer o backup dos vários discos (ex: /opt/tivoli/tsm/client/ba/bin/dsmc image backup /mnt/sda1 -imagetype=static)

Restore

  1. arrancar com live cd
  2. abrir terminal
  3. setxkbmap pt
  4. sudo su -
  5. sfdisk para criar as partições (ex. sfdisk /dev/sda
  6. mkfs.* para criar filesystems (ex. mkfs.ext3 /dev/sda1)
  7. mkswap para criar swap (ex. mkswap /dev/sda2)
  8. criar mount points (ex. mkdir /mnt/sda1)
  9. mount nos sitios certos (ex. mount -t ext3 /dev/sda1 /mnt/sda1)
  10. mudar node name no ficheiro /opt/tivoli/client/ba/bin/dsm.sys
  11. fazer o restore dos vários discos (ex. /opt/tivoli/tsm/client/ba/bin/dsmc image restore /mnt/sda1 /mnt/disco1)
Share

Gestão de dados hierárquicos em (My)SQL

Maio 2, 2007 on 9:33 pm | In database, MySQL | 1 Comment

A Diana escreveu recentemente sobre este tema, chamando-me à atenção este artigo de Mike Hillier.
O artigo é muito bom, obrigado pelo link Diana.

A grande sedução do modelo da lista de adjacências vem da facilidade com que se implementam as operações de inserção de nós (por onde normalmente se começa) e só se perde quando se chega ao ponto de precisar de alguma recursividade para percorrer convenientemente uma árvore com profundidade arbitrária.

Por oposição, o modelo dos “conjuntos encaixados” torna a operação de inserção bem mais difícil de escrever, mas, em contrapartida, facilita muito a tarefa de percorrer a árvore.

Em aplicações OLTP convencionais do tipo loja on-line, a árvore (de produtos e categorias) é criada uma vez e depois raramente é mexida. Mesmo que surjam novos produtos, estes irão usualmente encaixar em categorias pré-existentes, portanto a necessidade de criar novos nós intermédios na árvore é realmente baixa. Pelo contrário, a necessidade de apresentar uma lista de categorias com vários níveis de indentação que possam ser progressivamente expandidos até se chegarem aos produtos é crucial. Todos os clientes da loja on-line terão que passar por lá várias vezes durante a sua visita.

Nesta perspectiva, é bem mais compensador recorrer ao modelo dos conjuntos encaixados. Como também é normal, provavelmente o inverso é verdade se estivermos a falar de aplicações OLAP…

Share

© procself. Este blog está alojado no FEUP Blogs. Crie também o seu blog.
Subscreva os Artigos (RSS) e os Comentários (RSS) do procself.