manuales_desarrollo

Manuales de desarrollo de YeboYebo


Project maintained by yeboyebo Hosted on GitHub Pages — Theme by mattgraham

Docker Postgres / Instalación

Lee esto antes.

Pasos previos

Contraseña de postgres / usuario admin

Dado que vamos a hacer una copia de todos los usuarios del sistema a migrar, la contraseña del usuario que realizará las acciones del docker (típicamente postgres), es importante que conozcamos su contraseña. Si no la conocemos deberemos cambiarla en el postgres actual antes de continuar.

Copia de los datos a llevar a la nueva instalación

Hacer un dump de usuarios y roles y de las bds que vayamos a pasar

pg_dumpall --globals-only -U antonio -h localhost -p 54322 > roles.dump
pg_dump yeboyebo -U antonio -h localhost -p 54322 > yeboyebo.dump

Usuario de instalación

Si no podemos hacer la instalación con root, nos aseguramos que el usuario que usaremos pertenece al grupo docker.

sudo gpasswd -a $USER docker
newgrp docker

Descarga de Github

El servidor de Postgres es un proyecto de docker. Clonamos el proyecto con:

cd /opt
git clone https://github.com/yeboyebo/docker_postgres.git

Autenticar con el token generado en https://github.com/settings/tokens dando permiso a la parte de repos.

Obtendremos algo similar a:

Clonando en 'docker_postgres'...
Username for 'https://github.com': antonio-yeboyebo
Password for 'https://```antonio-yeboyebo@github.com': 
remote: Enumerating objects: 44, done.
remote: Counting objects: 100% (44/44), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 44 (delta 15), reused 35 (delta 9), pack-reused 0
Desempaquetando objetos: 100% (44/44), 11.30 KiB | 680.00 KiB/s, listo.

NOTA: Pensar política de tokens

Primer entorno

Para funcionar, el servidor debe detectar un fichero .env en el directorio principal. La estructura de este fichero debe ser:

En /opt/docker_postgres

Fichero .env

POSTGRES_USERNAME=**user**
POSTGRES_PASSWORD=**password**
## Carpeta externa donde generar las copias
EXTERNAL_VOLUME=/opt/postgres_data

External volume: Es aconsejable crear una carpeta externa distinta de la de la imagen de docker para guardar los datos externos.

Notas sobre el usuario: El usuario que creemos será el que se encargará de realizar todas las acciones automáticas (típicamente postgres). Como al finalizar la instalación restauraremos, en caso de que en el fichero de roles (p.e. roles.dump) ya exista el usuario, al restaurar su contraseña se cambiará a la de la instalación previa de postgres.

EXTERNAL_VOLUME: Cuando el docker se inicia la primera véz crea las carpetas de backup, cron, pgdata en la carpeta que especifiquemos como EXTERNAL_VOLUME. Desde aquí podemos hacer cambios en la configuración del docker , sin necesidad de entrar en el. No es necesario que sea la misma carpeta que hemos descargado de GIT.

Instalación

Si tenemos el servicio de postgres corriendo, lo paramos:

service postgres stop

Para mayor seguridad podemos cambiar el puerto de salida, por si postgres se reinicia, en el fichero postgresql.conf.

Una vez tengamos el fichero .env correcto podemos lanzar:

cd /opt/docker_postgres
docker-compose build

Para arrancar el docker

cd /opt/docker_postgres
docker-compose up

Al final nos debe aparecer database system is ready to accept connectios

Para dejar el docker levantado

cd /opt/docker_posgres
docker-compose start

En caso que necesitemos para o reiniciar el docker utilizar start o stop:

docker-compose up/stop

Cuando realizamos el primer “up”:

NOTA: Es recomendable realizar un backup previo por si la actualización de la versión produce algún problema con los datos existentes.

Restaurar roles y bases de datos

createdb yeboyebo -E UNICODE -h localhost -p 5432 -U [POSTGRES_USERNAME]
psql yeboyebo -h localhost -p 5432 -U [POSTGRES_USERNAME] < roles.dump
psql yeboyebo -h localhost -p 5432 -U [POSTGRES_USERNAME] < yeboyebo.dump
# resto de bds...

Evitar que el postgres nativo se levante al reiniciarse la máquina

systemctl disable postgresql

Configuración de las copias de seguridad

Indicar las BDs a copiar

En la carpeta EXTERNAL_VOLUME/backup/databases.txt

Progamar las copias

Para habilitar el cron, hay que entrar una primera vez en el docker y ejecutar ‘crontab -e’:

    docker ps // Para ver nuestro CONTAINER ID. Ejemplo 086bbf520c72
    docker exec -i -t 086bbf520c72 /bin/bash

Y ya en la consola de docker

    # root: crontab -e 

Mantenimiento

Podemos acceder a la consola a través de docker:

docker exec -i -t 14d21f0325e1 psql atalaya -U yeboyebo -h localhost

TO DO: Script de copia de seguridad, instalación y regeneración de BD

Copias de seguridad antes de instalar

docker exec -i -t e268c1ea92b4 /bin/bash -c "pg_dump yeboyebo -U antonio -h localhost -p 5432 > /backup/dumps/yeboyebo._prueba.dump"

Reinicio de postgres

Para reiniciar postgres, lo mejor es tirar y levantar el docker entero.

Más