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
- Crie um usuário no PostgreSQL, por exemplo
rtuser
- Crie uma base no PostgreSQL, cujo dono seja
rtuser e encoding latin1
- Execute o create_tables.sql:
psql -U foo -h localhost -d rtdb < create_tables.sql
- Edite o mysql2pg.pl.txt, ajustando as credenciais para acesso aos bancos
- Execute
perl mysql2pg.pl.txt
- Execute o add_constraints.sql:
psql -U foo -h localhost -d rtdb < add_constraints.sql
- Ajuste as configurações do
RT_SiteConfig.pm para que o RT acesse corretamente o Pg
- Concluído!
Problemas Comuns
-
ERROR: invalid byte sequence for encoding "UTF8": A base de dados no Pg deve ter encoding latin1 (a instalação padrão no MySQL usa essa codificação, por isso essa restrição)
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.
Referências
--
GilmarSantosJr - 27 Jan 2007