SaferNet Brasil Área Colaborativa

RT_MySQL2Pg

Migração no RT: MySQL => PostgreSQL


Motivação

O grande número de denúncias faz com que a base de dados usada pelo RT fique consideravelmente grande, o que traz diversos problemas, principalmente no quesito performance.

Além disso o PostgreSQL é conhecido pela sua robustez e apresenta diversas funcionalidades interessantes como triggers, view='s =stored procedures. O MySQL, na versão 5.0, também traz essas funcionalidades, embora de maneira mais limitada. O grande problema de peformance que o PostgreSQL tinha foi muito reduzido após o lançamento da série 8.x

Diante disso decidimos experimentar a migração.

Recorremos à documentação oficial e após diversas tentativas frustradas partimos para o desenvolvimento de um script próprio, quando finalmente obtivemos sucesso.

Procedimentos

  1. Crie um usuário no PostgreSQL, por exemplo rtuser
  2. Crie uma base no PostgreSQL, cujo dono seja rtuser e encoding latin1
  3. Execute o create_tables.sql: psql -U foo -h localhost -d rtdb < create_tables.sql
  4. Edite o mysql2pg.pl.txt, ajustando as credenciais para acesso aos bancos
  5. Execute perl mysql2pg.pl.txt
  6. Execute o add_constraints.sql: psql -U foo -h localhost -d rtdb < add_constraints.sql
  7. Ajuste as configurações do RT_SiteConfig.pm para que o RT acesse corretamente o Pg
  8. Concluído!

Problemas Comuns

Observações

Apesar do sucesso obtido na migração optamos por permanecer com o MySQL, devido à performance. Seguimos diversas instruções sobre melhoria de performance no Pg e mesmo assim ficou muito a desejar. Usamos o MySQL 5.0 e o PostgreSQL 8.1 nos testes.

Tendo em vista o problema inicial seguimos também instruções sobre melhoria de performance no MySQL. O desempenho melhora sensivelmente com o aumento do valor da variável innodb_buffer_pool_size. Cuidado para não aumentar muito e assim obrigar o SO a utilizar a swap. As instruções estão bem explicadas e explanam melhor esse tópico. smile

Referências

-- GilmarSantosJr - 27 Jan 2007

Topic attachments
I Attachment Action Size Date Who Comment
elsesql add_constraints.sql manage 4.3 K 27 Jan 2007 - 16:11 GilmarSantosJr  
elsesql create_tables.sql manage 9.8 K 27 Jan 2007 - 16:11 GilmarSantosJr  
txttxt mysql2pg.pl.txt manage 3.7 K 27 Jan 2007 - 16:15 GilmarSantosJr  

Copyright © 2006 - 2008 SaferNet Brasil