L'équipe a migré une production complète de DigitalOcean vers un serveur dédié Hetzner pour réduire drastiquement les coûts en raison de l'inflation et de la dépréciation de la lire turque, passant d'un coût de 1 432 $/mois à 233 $/mois, soit une économie annuelle de 14 388 $.
La pile en production comprenait 30 bases MySQL (248 Go), 34 virtual hosts Nginx, GitLab EE, Neo4j, des workers supervisés et plusieurs applications mobiles desservant des centaines de milliers d'utilisateurs, et a été migrée de CentOS 7 vers AlmaLinux 9.7.
La migration en six phases a assuré zéro temps d'arrêt en réalisant d'abord une installation complète et une configuration identique sur le nouveau serveur, puis un clonage des fichiers avec rsync, la mise en place d'une réplication MySQL, la réduction des TTL DNS, la conversion de l'ancien Nginx en reverse proxy et enfin le basculement DNS automatisé.
Pour MySQL, l'équipe a utilisé mydumper/myloader en parallèle pour exporter et importer les 248 Go, a démarré la réplication depuis la position de binlog, a résolu des erreurs de clé dupliquée avec SET GLOBAL slave_exec_mode='IDEMPOTENT' et a corrigé un problème lié au schéma sys après la montée de version de 5.7 vers 8.0.
Les enseignements clés sont d'utiliser la réplication pour des migrations sans coupure, de vérifier et retirer les privilèges SUPER qui contournent read_only, d'automatiser les opérations (DNS, nginx, webhooks) et de profiter des scripts open source fournis sur GitHub pour reproduire le processus.