Configurando MySQL en Managed Database de Digital Ocean
Digital Ocean, al igual que muchos otros proveedores cloud, ofrece servicios de base de datos administrados, siendo uno de los motores de base de datos disponibles y de los más utilizados es MySQL.
La idea de este tipo de servicios es facilitar al usuario la creación y administración del mismo, con interfaces web intuitivas y limitadas a lo imprescindible. Además, incluye tareas administrativas como los backups, por lo que es un servicio que está listo para utilizar.
Por lo tanto, mediante la interfaz web de Digital Ocean podemos llevar a cabo las tareas más comunes, como dimensionar la instancia de bbdd incluyendo añadir réplicas, o, modificar el sql mode.
Pero, ¿qué pasa si necesitamos modificar otras configuraciones propias del servicio de MySQL?
Para esto Digital Ocean dispone de una API con la que se puede acceder a configuraciones más avanzadas que las disponibles en la interfaz web.
Uso de la API de Digital Ocean
Para utilizar la API de Digital Ocean lo primero que necesitamos es un token de acceso. Este debe crearse desde el panel de control en API > Tokens:
Dado que vamos a modificar configuraciones de MySQL, necesitamos otorgar a este token permisos de escritura además de lectura, pudiendo elegir el tiempo de validez del mismo. Es importante almacenar este token ya que no se va a volver a mostrar, no obstante siempre puede regenerarse.
Ya disponemos del token para hacer las peticiones a la API de Digital Ocean, pero antes de modificar la configuración de nuestra instancia de bbdd debemos obtener el ID de la misma. Esta información no se puede obtener desde la interfaz web, por lo que tenemos que realizar también una llamada a la API. Para realizar las llamadas a la API podemos lanzar las peticiones con curl incluyendo el token de autenticación.
Con el siguiente snippet obtendremos el id de la bbdd con nombre $DB_NAME utilizando el token $DIGITALOCEAN_TOKEN
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
"https://api.digitalocean.com/v2/databases" \
| jq -c '.databases[] | select(.name=="$DB_NAME") | .id '
Una vez obtenido el id de la instancia, podemos modificar la configuración de la misma sustituyendo $DIGITALOCEAN_TOKEN y $DB_ID e incluyendo los pares de clave valor deseados.
Con esta llamada se pueden modificar varios valores de la configuración al mismo tiempo incluyéndose en una lista:
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"config": {"clave": valor}}' \
"https://api.digitalocean.com/v2/databases/$DB_ID/config"
El uso de la API no se limita a estas configuraciones y está disponible para tareas avanzadas en múltiples servicios de Digital Ocean.
Puedes obtener más información sobre sus funcionalidades en la documentación oficial.