I decided to run Kanboard, an open source project management application, in a rootless Podman pod as a small weekend project. The pod consists of three containers, an infra-container, a kanboard-container, and a postgresql-container. That deployment went well, but eventually, the image I used for the postgresql-container became deprecated, meaning it was no longer receiving updates. It was time to move to a different image, but that meant migrating a database between containers. It sounds intimidating, but the process is actually straightforward. Here's how to do it.
Migrate to an upgraded PostgreSQL
The process for migrating a database in containers is mostly the same as it is for any other database, but with an additional step to manage containers. Here's an outline of the steps I took:
- Back up the current database.
- Stop and remove the container.
- Delete the directory and files of the old PostgreSQL version from the Podman volume.
- Move the SQL dump file to the Podman volume.
- Start the pod with the rhel8/postgresql-13 container.
- Restore the database.
[ Download the Bash shell scripting cheat sheet. ]
Here are the steps broken down.
First, back up the database:
$ podman exec -t [container name] \
/usr/bin/pg_dump [database name] > dump.sql
Next, empty the Podman volume of the database:
$ podman volume inspect [volume name]
$ sudo rm -rf \
~/.local/share/containers/storage/volumes/[volume name]/_data/*
Now move the database dump to the Podman volume:
$ mv dump.sql \
~/.local/share/containers/storage/volumes/[volume name>]/_data/
Note: be sure to start the postgresql-cotainer using the new container image rhel8/postgresql-13:
$ podman run -d --pod [pod name] --name [container name] \
-e POSTGRESQL_USER=root \
-e POSTGRESQL_PASSWORD=SecretPassword \
-e POSTGRESQL_DATABASE=[database name] \
-v [volume name]:/var/lib/pgsql/data:Z rhel8/postgresql-13
And finally, restore the database to the container:
$ podman exec -it [container name] bash
$ psql -U [user name] -d [database name] \
< /var/lib/pgsql/data/dump.sql
Give it a try
Migrating to a new database release in containers is not difficult when you know the steps. I also think you can apply these procedures to other databases that run in containers.
Haven't started your container journey yet? Well, you might begin with Alexon Oliveira's article on Podman scripting.
Sobre o autor
Jörg has been a Sysadmin for over ten years now. His fields of operation include Virtualization (VMware), Linux System Administration and Automation (RHEL), Firewalling (Forcepoint), and Loadbalancing (F5). He is a member of the Red Hat Accelerators Community and author of his personal blog at https://www.my-it-brain.de.
Mais como este
F5 BIG-IP Virtual Edition is now validated for Red Hat OpenShift Virtualization
More than meets the eye: Behind the scenes of Red Hat Enterprise Linux 10 (Part 4)
Are We As Productive As We Think We Are? | Compiler
The Developer Advocate And The Exchange | Compiler: Re:Role
Navegue por canal
Automação
Últimas novidades em automação de TI para empresas de tecnologia, equipes e ambientes
Inteligência artificial
Descubra as atualizações nas plataformas que proporcionam aos clientes executar suas cargas de trabalho de IA em qualquer ambiente
Nuvem híbrida aberta
Veja como construímos um futuro mais flexível com a nuvem híbrida
Segurança
Veja as últimas novidades sobre como reduzimos riscos em ambientes e tecnologias
Edge computing
Saiba quais são as atualizações nas plataformas que simplificam as operações na borda
Infraestrutura
Saiba o que há de mais recente na plataforma Linux empresarial líder mundial
Aplicações
Conheça nossas soluções desenvolvidas para ajudar você a superar os desafios mais complexos de aplicações
Virtualização
O futuro da virtualização empresarial para suas cargas de trabalho on-premise ou na nuvem