Contenido del curso
Configuración de MySQL en Traccar 6.14 y copias de seguridad
Guía paso a paso para configurar una base de datos MySQL/MariaDB en Traccar 6.14, configurar copias de seguridad automáticas y optimizar la base de datos.
Emmanuel Díaz Leal Hernández
Para proyectos con más de un par de dispositivos en Traccar 6.14, es altamente recomendable migrar de la base de datos H2 por defecto a un motor de bases de datos robusto como MySQL o MariaDB. Esta última versión incluye la optimización de batching de base de datos para escrituras eficientes, lo que reduce de manera drástica el uso de disco y CPU cuando hay múltiples reportes simultáneos.
1. Configuración de MySQL en Traccar
Un problema común al configurar la base de datos es utilizar el host localhost en la cadena de conexión JDBC, lo cual puede dar fallos de resolución en ciertos entornos (especialmente bajo Docker o configuraciones locales restrictivas). Cambiarlo por el bucle de retorno numérico 127.0.0.1 soluciona este problema.
Edita tu archivo de configuración traccar.xml dentro del bloque <properties> de la siguiente manera:
<entry key='database.driver'>com.mysql.cj.jdbc.Driver</entry>
<entry key='database.url'>jdbc:mysql://127.0.0.1:3306/traccar?serverTimezone=UTC&useSSL=false&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=''</entry>
<entry key='database.user'>traccar1</entry>
<entry key='database.password'>TU_CONTRASEÑA_AQUÍ</entry>
(Asegúrate de que la dirección URL JDBC tenga una sola barra antes del nombre de la base de datos /traccar y no doble barra //).
2. Comandos SQL para crear la Base de Datos y Usuario
Desde tu consola de MySQL o phpMyAdmin, puedes ejecutar la creación del esquema y usuario de la siguiente forma:
CREATE DATABASE traccar;
CREATE USER 'traccar1'@'127.0.0.1' IDENTIFIED BY 'TU_CONTRASEÑA_AQUÍ';
GRANT ALL PRIVILEGES ON traccar.* TO 'traccar1'@'127.0.0.1';
FLUSH PRIVILEGES;
3. Borrado automático de historial viejo
Para evitar que tu disco se llene por exceso de logs de posicionamiento históricos, añade la siguiente directiva en traccar.xml para limpiar registros automáticamente cada 365 días:
<entry key='database.positionsHistoryDays'>365</entry>
4. Copias de seguridad automáticas (Script en Bash para Synology/Linux)
A continuación, te compartimos un script en bash para automatizar las copias de seguridad de todas tus bases de datos mediante mysqldump. Puedes configurarlo para ejecutarse en el Programador de tareas de tu NAS Synology o el servicio cron de Linux.
#!/bin/sh
# Basado en la guía de lowendguide para mysqldump
## VARIABLES PERSONALIZADAS
MYSQL_USER="root"
MYSQL_PASSWORD="tu_password_root"
MYSQL_BACKUP_DIR="/volume1/homes/copiador/MYSQLDUMP"
if [ ! -d $MYSQL_BACKUP_DIR ]; then
mkdir -p $MYSQL_BACKUP_DIR
fi
chmod -R 700 $MYSQL_BACKUP_DIR
case $1 in
run)
BASES_LIST="$(/usr/local/mariadb10/bin/mysql --user=$MYSQL_USER -p$MYSQL_PASSWORD -e 'show databases' | tr -d '| ' | grep -v 'Database' | grep -v 'information_schema' | grep -v 'performance_schema')"
echo "Respaldando bases de datos MySQL en $MYSQL_BACKUP_DIR"
for db in $BASES_LIST; do
/usr/local/mariadb10/bin/mysqldump --user=$MYSQL_USER -p$MYSQL_PASSWORD --verbose $db | gzip > $MYSQL_BACKUP_DIR/$db.sql.gz
done
echo "Respaldadas bases: $(echo $BASES_LIST | tr "\n" "," | sed 's/,$//'; echo '')";;
clean)
echo "Borrando backups de bases de datos en $MYSQL_BACKUP_DIR"
rm -f $MYSQL_BACKUP_DIR/*.sql.gz 2>&1;;
*)
echo "Opciones de ejecución: $0 {run|clean}"
esac
Para programar que se ejecute de forma automática, crea una tarea programada con la opción run (ejemplo: /volumen1/scripts/backup.sh run).