Skip to main content

📂 Detall del Servei 🐬 MysqlDB (MySQL 8.4)

Base de dades relacional utilitzada per a dades estructurades que requereixen integritat referencial i transaccionalitat. És el motor estàndard per a aplicacions web i metadades d'eines d'anàlisi. Estem integrant diverses bases de dades, una de l'aplicació DiscoveryPlus, una còpia de Kraken, etc.

Aquest contenidor s'executa actualment en mode root.

A. Cicle de Vida i Reconstrucció

Per a la recreació del contenidor mantenint la persistència de les taules i l'accés pel port 8001:

podman run -d \
--name MysqlDB \
--restart on-failure \
-p 8001:3306 \
-e MYSQL_ROOT_PASSWORD=la_teva_clau_segura \
-v /dades/var/lib/mysql8:/var/lib/mysql:Z \
mysql:8.4

Nota d'Arquitectura:

  • Persistència: S'utilitza la ruta /dades/var/lib/mysql8. El flag :Z és crític per evitar errors de permisos de MySQL en intentar escriure els fitxers d'índex i logs binaris.

  • Versió: S'especifica la branca 8.4 (LTS) per garantir estabilitat a llarg termini en el laboratori. A més l'eina de CDC de Flink necessita aquesta versió pel format del journal.

B. Configuració del Servei (Systemd)

El servei es gestiona des de la unitat /etc/systemd/system/container-mysqldb.service.

  • Tipus: simple (amb RemainAfterExit=yes).
  • Dependències: RequiresMountsFor=/dades/var/lib/mysql8. MySQL no arrencarà si el directori de dades no és accessible o està buit si s'espera una DB existent.
[Unit]
Description=Podman container-mysqldb.service
After=network-online.target local-fs.target
RequiresMountsFor=/dades/var/lib/mysql8

[Service]
Environment=PODMAN_SYSTEMD_UNIT=%n
Environment=CONTAINERS_CONF_LOG_LEVEL=error
Restart=on-failure
RestartSec=20s
Type=simple

ExecStartPre=-/usr/bin/podman stop -t 10 MysqlDB
ExecStart=/usr/bin/podman --log-level=error start MysqlDB
RemainAfterExit=yes

ExecStop=/usr/bin/podman stop -t 10 MysqlDB

[Install]
WantedBy=multi-user.target

C. Receptes d'Operació (Cheat Sheet)

Gestió del Servei

  • Estat: systemctl status container-mysqldb.service
  • Logs: podman logs -f MysqlDB

Interacció amb la Base de Dades (CLI)

  • Usar el client mysql al propi host o al que tingueu accés
  • Usar eines com el DBeaver

Còpia de seguretat (Dump)

Per extreure un backup de totes les bases de dades des de fora del contenidor:

podman exec MysqlDB /usr/bin/mysqldump -u root -p --all-databases > backup_ymir_$(date +%F).sql