Destroyed Migração sapl 2.5 para 3.1 (markdown)

master
Marcio Mazza 7 years ago
parent
commit
bad6f8a3a9
  1. 135
      Migração-sapl-2.5-para-3.1.md

135
Migração-sapl-2.5-para-3.1.md

@ -1,135 +0,0 @@
# Instruções para Importação da base mysql 2.5
O processo de migração do SAPL 2.5 para SAPL 3.1 é dividido em 4* sub tarefas:
*_É extremamente recomendável que durante o processo de migração o banco de dados do SAPL 2.5 (produção) esteja em modo 'read-only'_
* Alterar banco de dados 2.5 (produção) para read-only [(link para solução)](https://support.scalearc.com/kb/articles/how-to-set-a-mysql-database-to-read-only-mode).
* Migração da base de Dados;
* Migração de Documentos;
* Migração de usuários;
A imagem abaixo detalha o fluxo de tarefas a ser seguida na migração do SAPL.
[[/images/processo_migracao_sapl.png|Processo de Migração SAPL 2.5 para SAPL 3.1]]
[Imagem Expandida](https://raw.githubusercontent.com/wiki/interlegis/sapl/images/processo_migracao_sapl.png)
## Migração de Dados do sapl 2.5
* Gerar dump da base de dados sapl 2.5 mysql.
* Restaurar Base de dados Localmente (em uma máquina diferente da máquina de produção)
* iniciar migração de dados
* Gerar dump da base de dados migrada sapl 3.1 postgres.
Para entrar no ambiente virtual::
```
workon sapl
```
Instalar Dependências::
```
pip3 install -r requirements/migration-requirements.txt
```
Criar um arquivo /var/interlegis/sapl/sapl/legacy/.env
```
nano /var/interlegis/sapl/sapl/legacy/.env
```
com o seguinte conteúdo (parametros de acesso ao banco 2.5):
```
DATABASE_URL_FONTE = mysql://[usuario do mysql]:[senha do myuysql]@[host]:[porta]/[banco]
```
o conteúdo do arquivo será semelhante a isso::
```
DATABASE_URL_FONTE = mysql://sapl:sapl@localhost:3306/interlegis
```
Posteriormente rodar a seguinte sequencia de comandos estando no ambiente virtual::
```
./manage.py shell --settings=sapl.legacy_migration_settings
In [1]: from sapl.legacy.migracao import migrar_dados
In [2]: migrar_dados()
```
## Migração de documentos do sapl 2.5
No sapl 2.5 todos os documentos ficavam armazenados no ZODB (o banco do Zope).
No sapl 3.1 eles ficam no sistema de arquivos convencional e portanto precisam:
1. ser exportados para o sistema de arquivos
2. ser vinculados ao novo banco importado para o sapl 3.1
### Exportar os documentos para o sistema de arquivos
Exite um subprojeto no repositório do sapl na pasta Instale o projeto versionado em `sapl/legacy/scripts/exporta_zope`. Ele deve ser instalado em virtualenv separado com python 2.7
Siga os seguintes passos:
1. Crie um _virtualenv_ com python 2.7
2. Instale nesse _virtualenv_ as dependências em `sapl/legacy/scripts/exporta_zope/requirements.txt`
3. Coloque uma cópia do arquivo Data.fs (o arquivo de dados do zope) em uma pasta local. Não realize esse procedimento contra o arquivo em produção. Uma forma de obter uma cópia desse arquivo é fazer um pack no zope e copiar o arquivo Data.fs.old criado.
4. Limpe a pasta `media` de sua instalação do sapl. Se necessário faça um backup de seu conteúdo. A forma padrão deste procedimento extrai os arquivos do Data.fs nesta pasta.
5. Com o _virtualenv_ ativado e na pasta `sapl/legacy/scripts/exporta_zope` rode a exportação usando a função `exporta_zope.dump_sapl` com o caminho do `Data.fs` como parâmetro. A forma mais simples de fazer isso é rodar o script `exporta_zope` com o caminho do `Data.fs` como argumento. Por exemplo:
```
> ./exporta_zope.py caminho/para/Data.fs.old
```
Isso criará, na pasta `media` de sua instalação:
* um arquivo `usuarios.yaml` com todos os usuários do zope, seus perfis e hashes de suas senhas;
* uma pasta `sapl_documentos` com todo conteúdo extraído dessa pasta do zope;
* uma pasta `XSLT` com todo conteúdo extraído dessa pasta do zope;
### Vincular os documentos ao novo banco do sapl 3.1
1. Primeiramente migre o banco do sapl 2.5 para o sapl 3.1
2. Conserve o conteúdo da pasta `media` criado pela extração anterior
3. De forma semelhante ao realizado na migração do banco, dentro no mesmo ambiente virtual, rode os seguintes comandos::
```
./manage.py shell --settings=sapl.legacy_migration_settings
In [1]: from sapl.legacy.migracao import migrar_documentos, migrar_usuarios
In [2]: migrar_usuarios()
...: migrar_documentos()
```
Isto irá fazer as seguintes atualizações no banco do sapl 3.1:
* criará os usuários presentes no arquivo `media/usuarios.yaml` (ou atualizar os existentes) com seus perfis e senhas e apagará o arquivo;
* vinculará os documentos presentes na pasta `media/sapl_documentos` a seus registros (migrados anteriormente do sapl 2.5) e os moverá para os locais corretos dentro de `media/sapl`. Como os arquivos são movidos (e não copiados) este procedimento só pode ser realizado uma vez. Guarde um backup da pasta `media/sapl_documentos` extraída ou repita a extração do zope, se precisar repetir esse passo.
Após esse procedimento restarão na pasta `media/sapl_documentos` os documentos sem registro correspondente e, portanto, não migrados. Eles pertenciam a registros que foram excluídos no sapl 2.5. Guarde o conteúdo restante da pasta `media/sapl_documentos` **fora de sua instalação** para efeito histórico ou descarte se preferir reter apenas o Data.fs.
Sugerimos que sempre retenha seus dados originais (Data.fs, dump do mysql).
### Para indexar os arquivos para pesquisa textual
```
workon sapl
./manage.py rebuild_index
```
Dependendo da quantidade de arquivos a serem indexados, pode ser listado o seguinte erro 'Too many open files'
Isto está ligado a quantidade máxima de aquivos que podem ser abertos ao mesmo tempo pelo sistema operacional
Para aumentar este limite::
```
sudo nano /etc/security/limits.conf
```
Adicione a linhas seguintes no arquivo:
```
* soft nofile 9000
* hard nofile 65000
```
```
sudo nano /etc/pam.d/common-session
```
Adicione a linha seguinte no arquivo:
```
session required pam_limits.so
```
Após reiniciar, verificar se foram carregados os novos parâmetros com o comando::
```
ulimit -a
```
deve ser apresentado o seguinte::
```
open files (-n) 9000
```
Loading…
Cancel
Save