Para realizar o restore manual: - Temos que baixar o backup dentro do pod do dbaccess e descompactar o arquivo baixado (se for o caso);
- Dropar o banco de dados a ser restaurado, lembrando que temos que ter a exclusividade no banco de dados.;
- Criar o banco de dados manualmente, obedecendo o encoding do banco original do cliente;
- Criar a extensão uuid-ossp (Utilizando a senha de SU do postgres para o banco que acabou de criar);
- Executar o pg_restore no banco, solicitando para que ignore o owner e os tablespaces;
Criar a tabela de controle de restore do banco de dados :
| Bloco de código |
|---|
CREATE TABLE DUMP_OK (); |
Reiniciar o dbaccess.
Para ajudar no processo, desenvolvemos um bash para montar as sentenças a serem executadas: | Bloco de código |
|---|
#!/bin/bash
set +ef
set +x
ccode=$1
type=$2
if [ "$ccode" = "" ]; then
echo "Required env variable ccode"
exit 0
fi
if [ "$type" = "" ]; then
type="producao"
fi
kubectl -n $ccode scale deploy -l base=true --replicas=1
dbaccess=$(kubectl -n $ccode get pod --no-headers | grep -i dbaccess | awk '{print $1}')
echo "kubectl -n $ccode exec -it $dbaccess -- bash"
endpoint=$(kubectl -n $ccode get configmap protheus-config -o json | jq -r .data.DATABASE_ENDPOINT)
password=$(kubectl -n $ccode get secrets protheus-secrets-db-master -o json | jq -r .data.DATABASE_PASSWORD | base64 -d)
user=$(kubectl -n $ccode get secrets protheus-secrets-db-master -o json | jq -r .data.DATABASE_USER | base64 -d)
echo "PGPASSWORD=$password psql -U $user -h $endpoint -d postgres -c "'"DROP DATABASE '$type';"'
echo "PGPASSWORD=$password psql -U $user -h $endpoint -d postgres -c "'"CREATE DATABASE '$type' WITH LC_COLLATE='"'C'"' LC_CTYPE='"'C'"' ENCODING='"'WIN1252'"' TEMPLATE=template0;"'
echo "PGPASSWORD=$password psql -U $user -h $endpoint -d $type -c 'CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";'"
echo "PGPASSWORD=$""DATABASE_PASSWORD_$type pg_restore -U $""DATABASE_USER_$type -h $""DATABASE_ENDPOINT -d $type --no-tablespaces --no-owner --no-acl --verbose < /tmp/"
echo "PGPASSWORD=$""DATABASE_PASSWORD_$type psql -U $""DATABASE_USER_$type -h $""DATABASE_ENDPOINT -d $type -c "CREATE TABLE DUMP_OK ();"
|
|