Banco de Dados

6 mar, 2015

Limpando todos os dados do PuppetDB (recursos exportados)

Publicidade

Tive um problema bem chato durante um teste de ambiente enquanto trabalhava com recursos exportados do Puppet, que foi causado por uma única violação de constante.

$ puppet agent -t
...
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to submit 'replace facts' command for $::fqdn to PuppetDB at $::puppetmaster:8081: [404 Not Found]
Problem accessing /v3/commands. Reason: Not Found
...
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Nos logs do PuppetDB, era possível ver sinais de violação no banco de dados.

...
org.hsqldb.HsqlException: error in script file line: 9621 org.hsqldb.HsqlException: integrity constraint violation: unique constraint or index violation; SYS_PK_10029 table: RESOURCE_PARAMS
...

Como era um ambiente de testes e eu não queria debugar tudo isso, considerei mais fácil apenas remover todos os dados do armazenamento built-in do PuppetDB e começar tudo de novo, pensando que isso fosse provavelmente causado por um user-error no meu lado.

Para limpar todos os dados do seu PuppetDB, siga os passos abaixo. Isso vai fazer o PuppetDB parar, remover o diretório de dados e reiniciar o PuppetDB para que ele possa reconstruir a estrutura de dados.

$ service puppetdb stop
$ cd /var/lib/puppetdb 
$ mv db db.old
$ service puppetdb start

Depois de reiniciar, os logs do seu PuppetDB vão conter os seguintes tipos de entrada

INFO  [c.p.p.s.migrate] Applying database migration version 1
INFO  [c.p.p.s.migrate] Applying database migration version 2
INFO  [c.p.p.s.migrate] Applying database migration version 3
...
INFO  [c.p.p.c.services] Starting broker

Ao final, as estruturas do seu diretório ficarão similar a isto.

$ ls -alh /var/lib/puppetdb/
drwxr-xr-x   6 puppetdb puppetdb 4.0K Jan 29 09:01 .
drwxr-xr-x. 30 root     root     4.0K Jul  2  2014 ..
lrwxrwxrwx   1 puppetdb puppetdb   20 Jan 14 13:05 config -> /etc/puppetdb/conf.d
drwxr-xr-x   3 puppetdb puppetdb 4.0K Jan 29 09:03 db
drwxr-xr-x   3 puppetdb puppetdb 4.0K Jan 29 09:01 db.old
drwxr-xr-x   3 puppetdb puppetdb 4.0K Oct 21 20:38 mq
drwxr-xr-x   2 puppetdb puppetdb 4.0K Oct 21 20:38 state

O db.old pode ser removido se você não precisar dele, ou colocá-lo de volta no lugar para debugar qualquer problema que você teve no início.

***

Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://ma.ttias.be/clearing-data-puppetdb-exported-resources/