Pour faire suite au précédent tutoriel, où je vous expliquer comment migrer Zigbee2MQTT sur une VM dédiée en conteneur avec Docker, on va aujourd’hui passer à MariaDB, toujours pour les même raisons, séparer les services et éviter la perte de données en cas de restauration de votre serveur Home Assistant.
Concernant les prérequis, je vous invite à lire ce tutoriel : Home Assistant : migrer Zigbee2MQTT en conteneur sur une machine virtuelle dédiée
Voici comment nous allons procéder :
- Activer l’accès distant au conteneur MariaDB sur Home Assistant, il faut pour cela dans la configuration du module complémentaire indiquer un port dans la partie réseau.
- Configuration du nouveau conteneur Docker MariaDB sur la seconde VM.
- Préparation des paramètres de configuration dans Home Assistant pour se connecter au nouveau serveur MariaDB
- Transfert des données d’un serveur MariaDB à l’autre en utilisant HeidiSQL
- Bascule vers le nouveau serveur dans MariaDB
- Vérification
- Activer l'accès distant sur MariaDB Add-on
- Configuration du nouveau conteneur pour MariaDB
- Préparation de la configuration dans Home Assistant
- Copie des données de MariaDB Addon vers le conteneur MariaDB
- Basculer Home Assistant sur la nouvelle base de données
- Vérification du changement de serveur MariaDB
- Arrêt du module complémentaire MariaDB
Activer l’accès distant sur MariaDB Add-on
Depuis Home Assistant, aller dans les modules complémentaires : Paramètres -> Modules complémentaire.
Cliquer sur le module MariaDB 1.
Depuis la page du module complémentaire MariaDB, aller sur l’onglet Configuration 1.
Dans la partie Réseau, indiquer un port (3306) 1 puis cliquer sur Enregistrer 2.
Redémarrer le module MariaDB pour la prise en compte.
Ayant déjà fait cette manipulation avant le tutoriel, je n’ai pas toutes les captures.
Depuis Windows, vous pouvez tester le bon prise en compte de la modification avec la commande PowerShell suivante :
Test-NetConnection ip-ha -Port 3306
Configuration du nouveau conteneur pour MariaDB
Sur le serveur dédié aux conteneurs, on va commencer par créer un dossier dédié au conteneur MariaDB. J’ai pour habitude de stocker mes conteneurs dans le dossier /containers
.
Pour créer un dossier entre la commande suivante :
sudo mkdir ha_mariadb
Ensuite aller dans ce dossier
cd ha_mariadb
Pour la création de ce conteneur, on va utiliser un dépôt qui contient le fichier docker-compose.yml
et le fichier .env
pour la configuration.
Cloner le dépôt :
sudo git clone https://git.rdr-it.io/docker/mariadb-or-mysql-container.git .
Une fois cloner, vérifier le conteneur avec la commande ll
ou ls -l
en fonction de votre distribution.
On peut voir que l’on a le contenu de dépôt.
Si vous le souhaiter supprimer le contenu inutile :
sudo rm .git/ -R && sudo rm README.md
La configuration du conteneur MariaDB va se faire en éditant le fichier .env
.
sudo nano .env
Voici le contenu par défaut :
Modifier les variables pour notre conteneur MariaDB :
Explication :
NAME_CONTAINER
: nom du conteneurDB_ENGINE
: mariadb ici on va utiliser MariaDBDB_VERSION
: version de MariaDB au moment du la rédaction de ce tutoriel j’ai choisi la version 11.4.2PORT_EXPOSE
: le port qui sera exposé sur le serveur hôte Docker, j’ai utilise le port 40001MYSQL_DATABASE
: nom de la base de donnéeMYSQL_ROOT_PASSWORD
: mot de passe du compte rootMYSQL_USER
: nom de l’utilisateur qui sera créé pour l’accès à la base de donnéesMYSQL_PASSWORD
: mot de passe de l’utilisateur
Une fois le fichier modifié, sauvegarder le modification.
Maintenant, on va télécharger l’image du conteneur :
sudo docker compose pull
Démarrer le conteneur :
sudo docker compose up -d
Entrer la commande suivant pour vérifier les logs :
sudo docker compose logs -f
La conteneur est bien démarré et il n’y a pas d’erreur, pour sortie des logs utiliser la combinaison de touche
Ctrl + C
.
Le conteneur pour MariaDB est prêt.
Préparation de la configuration dans Home Assistant
Sur Home Assistant, à l’aide de File editor, ouvrir le fichier qui contient la configuration actuelle de votre liaison MariaDB.
Dans le fichier ajouté la ligne qui va permettre la connexion au nouveau serveur qui sera commenté pour le moment :
#mariadb_url: 'mysql://homeassistant:password@ip-server-docker:port-expose/homeassistant?charset=utf8mb4'
Sauvegarder les modifications
Copie des données de MariaDB Addon vers le conteneur MariaDB
On va maintenant passer à la copie des données d’un serveur à un autre, pour cela on va utiliser HeidiSQL qui permet de faire cette manipulation facilement.
Commencer par télécharger HeidiSQL (Vous pouvez utiliser la version portable).
Sur HeidiSQL commencé par configurer les sessions pour vous connectez aux deux serveurs.
Connecter vous aux deux serveurs simultanément.
Sur le serveur source (celui sur HA), faire un clic droit sur la base de données 1 puis cliquer sur Exporter la base de données en SQL 2.
Valider que la base de données source 1 est sélectionné, cocher Créer 2 pour les tables, puis dans destination sélectionner le serveur 3 où l’on a créé le conteneur MariaDB puis choisir la base de données 4 et enfin cliquer sur Exporter 5.
Patienter pendant la copie de la base de données entre les deux serveurs …
Une fois la copie terminée, cliquer sur Fermer 1.
Les données sont copiés sur le nouveau serveur MariaDB.
Comment on peut le voir sur la capture, les bases de données n’ont pas la même taille, ce qui est normale car les index ne sont pas encore créer sur la nouvelle base de données.
Basculer Home Assistant sur la nouvelle base de données
Retourner sur Home Assistant dans l’éditeur de fichier, pour faire la bascule de base de données.
Commenter la ligne qui sert à la connexion à MariaDB Addon et décommenter la ligne que l’on ajouté.
Aller dans les Outils de développement 1 et cliquer sur VERIFIER LA CONFIGURATION 2.
S’il n’y a pas d’erreur bloquante, cliquer sur REDEMARRER 1.
Cliquer ensuite sur Redémarrer Home Assistant 1.
Cliquer sur REDEMARRER 1.
Patienter pendant le redémarrage …
Vérification du changement de serveur MariaDB
La premier vérification que l’on va faire est sous heidiSQL, sélectionner la base de données 2 sur le nouveau serveur et actualiser l’affichage 2. Vérifier la colonne Mise à jour 3 pour les tables events et states.
Si entre deux actualisations, vous n’avez pas de mise à jour de la date, il peut y avoir un problème, pour cela regarder dans les logs de Home Assistant, il y a deux grandes chances que le problème soit au niveau de la configuration de la connexion.
Si tout est bon, vérifier l’historique des données dans Home Assistant, pour ma part j’ai regardé au niveau du table de bord énergie.
La bascule de serveur a été effectuée avec un minimum de perte de données.
Arrêt du module complémentaire MariaDB
Aller sur la page du module MariaDB, désactiver les différentes options 1 puis cliquer sur ARRETER 2.
Le module complémentaire MariaDB est arreté.
Je vous conseille de garder encore quelques jours le module complémentaire MariaDB en cas de problème et vous pourrez ensuite le désinstaller.
Vous savez maintenant comment migrer votre serveur MariaDB vers un autre serveur indépendant de Home Assistant.
Vous pouvez également utiliser ce tutoriel pour installer directement sur un serveur MariaDB indépendant, il suffit de ne pas prendre en compte la partie copie des bases de données et mettre directement la chaine de connexion dans Home Assistant.
Avec cette configuration, vous pouvez faire une restauration à une date antérieure de Home Assistant sans perdre de données.