Migrando aplicações de banco de dados
Visão geral
Este tópico tem como objetivo mostrar como migrar aplicações de banco de dados MySQL, PostgreSQL, e MongoDB do OpenShift versão 2 (v2) para OpenShift versão 3 (v3).
Bancos de dados suportados
v2 | v3 |
MongoDB: 2.4 | MongoDB: 2.4, 2.6 |
MySQL: 5.5 | MySQL: 5.5, 5.6 |
PostgreSQL: 9.2 | PostgreSQL: 9.2, 9.4 |
MySQL
-
Exportar todos os bancos de dados para um arquivo de dump e copiá-lo para uma máquina local (no diretório atual):
$ rhc ssh <v2_application_name>
$ mysqldump --skip-lock-tables -h $OPENSHIFT_MYSQL_DB_HOST -P ${OPENSHIFT_MYSQL_DB_PORT:-3306} -u ${OPENSHIFT_MYSQL_DB_USERNAME:-'admin'}
/ --password = "$OPENSHIFT_MYSQL_DB_PASSWORD" --all-databases > ~/app-root/data/all.sql
$ exit
-
Baixar o dump para sua máquina local:
$ mkdir mysqldumpdir
$ rhc scp -a <v2_application_name> download mysqldumpdir app-root/data/all.sql
-
Crie uma aplicação mysql no v3:
$ oc new-app mysql-persistent -p MYSQL_USER=<your_V2_mysql_username> -p MYSQL_PASSWORD=<your_v2_mysql_password> -p MYSQL_DATABASE=<your_v2_database_name>
-
Verifique se o pod está pronto para usar:
$ oc get pods
-
Quando o pod estiver instalado e funcionando, copiar os arquivos de banco de dados para o seu pod MySQL no v3:
$ oc rsync /local/mysqldumpdir <mysql_pod_name>:/var/lib/mysql/data
-
Restaurar o banco de dados no pod v3 em execução:
$ oc rsh <mysql_pod>
$ cd /var/lib/mysql/data/mysqldumpdir
Você precisar acessar o pod como root para restaurar o banco de dados:
No v2, o $OPENSHIFT_MYSQL_DB_USERNAME tinha privilégios completos sobre todos os bancos de dados. No v3, você deve conceder privilégios para
$MYSQL_USER
para cada banco de dados.$ mysql -u root
$ source all.sql
Conceda todos os privilégios em <dbname> para
<v2_username>@localhost
-
Remova o diretório de dump do pod:
$ cd ../; rm -rf /var/lib/mysql/data/mysqldumpdir
Variável de ambiente suportadas no V3
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PostgreSQL
-
Para fazer o dump do banco de dados a partir do gear v2:
$ rhc ssh -a <v2-application_name>
$ mkdir ~/app-root/data/tmp
$ pg_dump <database_name> | gzip > ~/app-root/data/tmp/<database_name>.gz
-
Extraia o arquivo de backup de volta para sua máquina local:
$ rhc scp -a <v2_application_name> download <local_dest> app-root/data/tmp/<db-name>.gz $ gzip -d <database-name>.gz
Salve o arquivo de backup para uma pasta separada para a etapa 4. -
Criar o serviço PostgreSQL usando o nome do banco de dados do v2, nome de usuário e senha:
$ oc new-app postgresql -p POSTGRESQL_DATABASE=dbname -p POSTGRESQL_PASSWORD=password -p POSTGRESQL_USER=username
-
Verifique se o pod está pronto para usar:
$ oc get pods
-
Quando o pod estiver rodando, envie o arquivo de dump:
$ oc rsync /local/path/to/dir <postgresql_pod_name>:/var/lib/pgsql/data
-
Acesse o pod remotamente:
$ oc rsh <pod_name>
-
Restaure o banco de dados:
psql dbname < /var/lib/pgsql/data/<database_backup_file>
Variáveis de ambiente suportadas no v3
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MongoDB
-
Para OpenShift v3: MongoDB shell versão 3.2.6
-
Para OpenShift v2: MongoDB shell versão 2.4.9
-
Acessar remotamente o aplicativo v2 via ssh:
$rhc ssh <v2_application_name>
-
Execute mongodump, especificando um único banco de dados com
-d <database_name> -c <collections>
. Sem essas opções, todas as bases serão extraidas. Cada banco de dados é extraido em seu próprio diretório:$ mongodump -h $OPENSHIFT_MONGODB_DB_HOST -o app-root/repo/mydbdump -u 'admin' -p $OPENSHIFT_MONGODB_DB_PASSWORD
$ cd app-root/repo/mydbdump/; tar -cvzf dbname.tar.gz
$ exit
-
Baixe o dbdump para uma máquina local no directório mongodump:
$ mkdir mongodump
$ $ rhc scp -a download mongodump app-root/repo/mydbdump//dbname.tar.gz
-
Crie um pod MongoDB no v3. Como a imagem mais recente (3.2.6) não inclui mongo-tools, para usar o
mongorestore
ou omongoimport
. Você precisará editar o template padrão mongodb para especificar uma imagem que contenha omongo-tools,:"mongodb:2.4"
. Por isso você deve executar o oc export:$ oc export template mongodb -n openshift -o json > mongodb-24.json
Edite a Linha L83 do arquivo mongodb-24.json e substitua
mongodb:3.2
paramongodb:2.4
.$ oc new-app --template=mongodb -n MONGODB_USER=user_from_v2_app -p MONGODB_PASSWORD=password_from_v2_db -p MONGODB_DATABASE=v2_dbname -p MONGODB_ADMIN_PASSWORD=password_from_v2_db $ oc get pods
-
Quando o pod MongoDB estiver instalado e funcionando, copie os arquivos de arquivo de banco de dados para o pod v3:
$ oc rsync local/path/to/mongodump :/var/lib/mongodb/data $ oc rsh
-
No pod MongoDB, preencha o comando abaixo para cada banco de dados que pretende restaurar:
$ cd /var/lib/mongodb/data/mongodump $ tar -xzvf dbname.tar.gz $ mongorestore -u $MONGODB_USER -p $MONGODB_PASSWORD -d dbname -v /var/lib/mongodb/data/mongodump
-
Verifique se o banco de dados foi restaurado corretamente:
$ mongo admin -u $MONGODB_USER -p $MONGODB_ADMIN_PASSWORD $ use dbname $ show collections $ exit
-
Remova o diretório mongodump do pod:
$ rm -rf /var/lib/mongodb/data/mongodump
Variáveis de ambiente suportadas pelo MongoDB no V3
v2 | v3 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Comentários
0 comentário
Por favor, entre para comentar.