ERROR al arrancar un contenedor de MySQL 5.7

Es común desplegar una base de datos MySQL sobre Kubernetes cuando una aplicación no requiere almacenar muchos datos.

Si el procedimiento para crear bbdd en MySQL 5.6 estaba más que probado en Kubernetes, muchos nos hemos encontrado con la desagradable sorpresa de que no podemos reutilizar nuestros manifiestos para desplegar la nueva versión. Y un desagradable mensaje de error aparece cuando intentando modificar la versión de la imagen.

[ERROR] –initialize specified but the data directory has files in it. Aborting.

Este mensaje no aporta mucha información al respecto de cuál es el problema. Por suerte otros han dado con la causa por nosotros y ahora es fácil comprender que es lo que está pasando.

El contenedor espera que el directorio donde se almacenan los ficheros de datos de la base de datos esté completamente vacío cuando estamos inicializando la base de datos. Por desgracia es común que este directorio al ser un volumen montado procedente de Physical Volume y en última instancia un volúmen físico de uno de los nodos contenga la carpeta “lost+found” propia de los sistemas Linux.

Para evitar este problema debemos decirle a MySQL que arranque con una opción que le lleve a ignorar esta carpeta. La opción en cuestión es:

–ignore-db-dir=lost+found

En la definición de nuestro contenedor debemos pasar esta como una argumento en el arranque. Como se indica a continuación.

spec:
  containers:
    - image: mysql:5.7
      name: mysql
      args:
        - "--ignore-db-dir=lost+found"

Con esto evitamos que se vuelva a dar el error , y podremos migrar de version nuestras cargas de trabajo.

Comments are closed, but trackbacks and pingbacks are open.