Mirajv1.0
FR

22. Miraj Server Manager

Miraj Server Manager (miraj-manager.exe) est l'outil graphique d'administration d'un serveur MIRAJ installé sur un poste ou un serveur Windows (une version macOS, Miraj Manager, est décrite en 22.13). Il vit dans la zone de notification de Windows et rassemble les gestes courants :

  • démarrer, arrêter et redémarrer le serveur ;
  • suivre son état et les ressources qu'il consomme (processeur, mémoire, disque) ;
  • suivre les requêtes : nombre total, requêtes par seconde, requêtes en cours, requêtes lentes ;
  • faire une sauvegarde complète de toutes les bases vers un dossier choisi, immédiatement ou selon une planification (heure, jours, nombre de sauvegardes gardées) ;

Il administre le serveur de la machine où il tourne : il agit sur le processus miraj-server.exe et sur les tâches planifiées de Windows, ce qui ne se fait pas à distance.

22.1 Installation et lancement#

L'assistant d'installation de Miraj Express dépose miraj-manager.exe dans le dossier du programme, à côté de miraj-server.exe (voir 2.2). Il ajoute un raccourci dans le menu Démarrer et propose deux options, cochées par défaut : démarrer le gestionnaire avec Windows (à l'ouverture de session des administrateurs, icône seule) et le lancer à la fin de l'installation.

Sans l'assistant, il suffit de copier miraj-manager.exe dans le dossier de miraj-server.exe (voir 22.2).

22.1.1 Ligne de commande#

CommandeEffet
miraj-managerIcône dans la zone de notification et fenêtre ouverte.
miraj-manager --trayIcône seule, fenêtre cachée : c'est ainsi qu'il est lancé à l'ouverture de session.
miraj-manager --scheduled-backupSauvegarde planifiée, sans fenêtre : lancée par la tâche Windows de la planification (voir 22.10), jamais à la main.
miraj-manager --no-elevationNe demande pas les droits d'administrateur (voir ci-dessous).

Les noms de tâches planifiées et de dossiers de ce chapitre sont ceux de l'édition Express (« Miraj Express ») ; dans une autre édition, ils portent son nom (« Miraj Entreprise », %ProgramData%\Miraj Entreprise\…), comme ceux de l'assistant d'installation de cette édition.

22.1.2 Droits d'administrateur#

Le gestionnaire demande les droits d'administrateur à son lancement (invite du contrôle de compte d'utilisateur). Ils sont nécessaires pour :

  • démarrer et arrêter le serveur installé, qui tourne sous le compte SYSTEM ;
  • créer ou supprimer les tâches planifiées (sauvegardes, lancement à l'ouverture de session) ;
  • lire la mémoire et les entrées-sorties d'un processus d'un autre compte ;
  • protéger le secret du compte de sauvegarde (voir 22.10).

Si l'élévation est refusée, le gestionnaire s'ouvre quand même et affiche en tête de fenêtre : « Sans droits d'administrateur : le démarrage et l'arrêt du serveur installé, la planification et les mesures mémoire peuvent échouer ». La consultation (état, requêtes) et la sauvegarde immédiate restent possibles.

22.1.3 Une seule instance#

Un seul gestionnaire tourne par session Windows. Le relancer (raccourci, double clic sur l'exécutable) affiche la fenêtre de celui qui tourne déjà, puis s'arrête.

22.2 Le serveur géré#

Le gestionnaire retrouve seul le serveur à administrer, dans cet ordre :

  1. l'exécutable et le dossier de données enregistrés dans ses réglages (manager.json, voir 22.11), s'ils y sont renseignés ;
  2. ceux de la tâche planifiée « Miraj Express » créée par l'assistant d'installation : la commande de la tâche et la valeur de son argument --root ;
  3. à défaut, miraj-server.exe placé à côté de miraj-manager.exe, avec le dossier de données par défaut de l'installation, %ProgramData%\Miraj Express\data.

Il lit ensuite le fichier de configuration du serveur, au même endroit que le serveur lui-même (voir 16.2) : miraj_config.xml à côté de miraj-server.exe s'il y existe, sinon dans le dossier de données. Il en retient :

VariableUsage dans le gestionnaireDéfaut
portPort d'écoute surveillé et port de connexion.7007
bindAdresse de connexion ; 0.0.0.0 (toutes les interfaces) donne la boucle locale 127.0.0.1.0.0.0.0
languageLangue des textes du gestionnaire (voir 22.4).en
backup_dirDossier de travail des sauvegardes (voir 22.10.1).aucun

Le fichier est relu toutes les deux secondes : une modification est prise en compte sans relancer le gestionnaire (le serveur, lui, ne la lit qu'à son redémarrage).

Le processus du serveur est reconnu au chemin complet de son exécutable. Un autre miraj-server.exe en cours, lancé depuis un autre dossier, n'est jamais arrêté ni mesuré : il est seulement signalé dans l'onglet État (« Autre serveur MIRAJ en cours : … »).

22.3 Zone de notification#

L'icône de Miraj Server Manager reste dans la zone de notification tant que le gestionnaire tourne. C'est le logo de Miraj, gris quand le serveur est arrêté et jaune quand il tourne (l'icône de la fenêtre suit la même règle). Son infobulle donne l'état du serveur (« Miraj Server Manager — En marche »).

  • Clic sur l'icône : ouvre la fenêtre.
  • Clic droit : menu.
Entrée du menuEffet
Miraj Server Manager — étatRappel de l'état (entrée grisée).
OuvrirOuvre la fenêtre.
DémarrerDémarre le serveur (grisé s'il tourne déjà).
ArrêterOuvre la fenêtre et demande confirmation, puis arrête le serveur.
RedémarrerOuvre la fenêtre et demande confirmation, puis redémarre le serveur.
Lancer le gestionnaire dans la zone de notification à l'ouverture de sessionCase à cocher : crée ou supprime la tâche planifiée « Miraj Express - gestionnaire », qui lance miraj-manager.exe --tray à l'ouverture de session, avec les droits d'administrateur sans invite.
QuitterFerme le gestionnaire. Refusé tant qu'une action (démarrage, sauvegarde…) est en cours.

Démarrer, Arrêter et Redémarrer sont grisés pendant une action en cours.

Fermer la fenêtre (croix) ne quitte pas : la fenêtre est rangée dans la zone de notification, et une bulle le rappelle la première fois. Seul Quitter arrête le gestionnaire.

Arrêt inattendu. Si le serveur s'arrête sans que l'arrêt vienne du gestionnaire (arrêt par un autre outil, panne), une bulle de notification l'annonce : « Le serveur MIRAJ s'est arrêté. »

Lancement à l'ouverture de session. L'assistant d'installation crée la même tâche « Miraj Express - gestionnaire » pour tous les membres du groupe Administrateurs. La case du menu la reflète : la décocher la supprime pour tous ; la recocher la recrée pour le seul compte Windows courant.

22.4 Langue#

Les textes du gestionnaire suivent la langue du serveur : la variable language de miraj_config.xml, anglais par défaut. Les dix langues des messages d'erreur du serveur sont disponibles : anglais, français, chinois, hindi, espagnol, arabe (disposition de droite à gauche), portugais, russe, allemand, japonais. Une modification de language s'applique au gestionnaire dans les deux secondes, menus et bulles compris, sans attendre le redémarrage du serveur.

22.5 La fenêtre#

En tête de fenêtre :

  • le nom Miraj Server Manager et la pastille d'état du serveur, avec sa durée de fonctionnement ;
  • trois grands boutons : Démarrer (vert), Arrêter (rouge), Redémarrer (bleu). Un bouton sans objet est estompé : Démarrer quand le serveur tourne, Arrêter et Redémarrer quand il est arrêté, les trois pendant une action en cours ;
  • à droite, la connexion au serveur (voir 22.6) ;
  • dessous, le suivi de l'action en cours : titre et indicateur d'attente, puis chaque étape et le résultat final, précédé de ✔ (réussite) ou ✖ (échec, avec la cause) ;
  • enfin les quatre onglets État, Ressources, Requêtes et Sauvegardes.

Chaque onglet commence par une rangée de tuiles (les chiffres principaux, en grand) suivie de cartes. Un chemin ou un texte trop long est tronqué ; le survol l'affiche en entier.

PastilleSignification
● En marcheLe processus du serveur tourne et écoute sur son port.
◐ Démarrage en cours, ou port ferméLe processus tourne mais n'écoute pas (encore) sur le port.
⚠ Port occupé par un autre programmeLe serveur est arrêté, mais un autre programme écoute sur son port : le serveur ne pourrait pas démarrer.
■ ArrêtéAucun processus du serveur.

Sous Windows, le gestionnaire ne se connecte jamais au port pour le tester : il lit la liste des ports en écoute tenue par Windows. Le journal du serveur (server.log) n'est donc pas encombré par sa surveillance (sous macOS, voir 22.13).

22.5.1 Démarrer, arrêter, redémarrer#

Démarrer. Si la tâche planifiée « Miraj Express » de l'installation existe, le gestionnaire la lance : le serveur tourne alors sous le compte SYSTEM, comme au démarrage de Windows. Sinon, il lance directement miraj-server.exe --root <dossier des données> --log. Il attend ensuite que le serveur écoute sur son port, 30 secondes au plus. Le démarrage est refusé d'emblée si le serveur tourne déjà ou si le port est pris par un autre programme ; il échoue si le processus s'arrête aussitôt lancé (le message renvoie alors à server.log).

Arrêter. Après confirmation (« Les connexions ouvertes seront coupées et leurs transactions en cours annulées »), le gestionnaire arrête la tâche « Miraj Express » si elle existe, met fin au processus du serveur, puis attend que le processus ait disparu et que le port soit libéré, 15 secondes au plus. Comme tout arrêt de miraj-server, c'est un arrêt sans séquence d'extinction : aucune transaction validée n'est perdue, le journal d'écriture étant rejoué au démarrage suivant (voir 16.1.2 et 12.4).

Redémarrer. Arrêt puis démarrage, après la même confirmation.

22.6 Connexion au serveur#

L'état du processus et les ressources sont mesurés sans connexion. Les informations SQL (version, connexions, bases, requêtes) et les sauvegardes demandent une connexion au serveur : saisir le compte et le mot de passe en haut à droite, puis Connecter (ou Entrée). Une fois connecté, le gestionnaire affiche « ● Connecté : root » et un bouton Déconnecter.

  • Le compte saisi est retenu d'un lancement à l'autre ; le mot de passe n'est jamais enregistré : il est redemandé à chaque lancement du gestionnaire.
  • Un mot de passe refusé n'est pas réessayé : le serveur bloque une adresse après une suite d'échecs d'authentification (voir 16.5.2). Le message du serveur s'affiche sous les boutons ; corrigez le mot de passe et reconnectez-vous.
  • Après un redémarrage du serveur, la connexion est rétablie d'elle-même.

Utilisez un compte administrateur, root par exemple. Un compte aux droits réduits voit ce que ses privilèges lui permettent : SHOW FULL PROCESSLIST ne montre que ses propres connexions sans le privilège PROCESS (ou SUPER), la sauvegarde exige BACKUP_ADMIN, le réglage du journal des requêtes lentes exige SUPER ou SYSTEM_VARIABLES_ADMIN, la planification des sauvegardes exige de pouvoir créer un compte et lui accorder BACKUP_ADMIN (voir 22.10).

Toutes les deux secondes, connecté, le gestionnaire lit SHOW GLOBAL STATUS, quelques variables (version, slow_query_log, long_query_time, log_output, miraj_edition), SHOW DATABASES, les 200 dernières lignes de miraj.slow_log et SHOW FULL PROCESSLIST.

Le gestionnaire se connecte au serveur dans le protocole de son langage (MIRAJ ou PostgreSQL), reconnu à la connexion : ses requêtes (variables @@, SHOW STATUS, SHOW PROCESSLIST, BACKUP ALL DATABASES, SET GLOBAL) sont valables dans les deux langages.

22.7 Onglet État#

Tuiles : durée de fonctionnement, connexions ouvertes, nombre de bases, taille du dossier de données (avec l'espace libre du disque qui le porte). Les chiffres SQL affichent « — » sans connexion.

Carte Serveur :

LigneContenu
Processusmiraj-server.exe, PID …, ou « aucun ».
Démarré leDate et heure de démarrage du processus.
ÉcouteAdresse et port de miraj_config.xml, suivis de « (répond) » ou « (fermé) ».
VersionVersion du serveur (connecté).
Langage SQLLangage de l'instance, MIRAJ ou PostgreSQL (connecté).
Connexions ouvertesThreads_connected, et le maximum depuis le démarrage (Max_used_connections).
BasesListe des bases visibles du compte connecté.
Détails SQLSans connexion, à la place des quatre lignes précédentes : « connectez-vous pour la version, les connexions et les bases ».
Démarrage automatique« oui, tâche planifiée « Miraj Express » (compte SYSTEM) », ou « non (serveur lancé directement par le gestionnaire) ».
Exécutable, Dossier des donnéesChemins du serveur géré (voir 22.2).

Le bouton Modifier miraj_config.xml… ouvre le fichier de configuration du serveur dans l'éditeur de configuration (miraj-config-editor.exe, présent à côté du serveur dans une installation par l'assistant ; bouton estompé s'il est absent). Les modifications prennent effet au redémarrage du serveur.

Carte Journal du serveur : les 60 dernières lignes de <données>\miraj\server.log, la plus récente en haut, avec un bouton Actualiser. Ce fichier ne reçoit que les erreurs (voir 16.6.3) : vide, il indique qu'aucune erreur n'a été signalée.

22.8 Onglet Ressources#

Les mesures portent sur le seul processus du serveur, relevé toutes les deux secondes. Serveur arrêté, l'onglet affiche « Serveur arrêté : aucune mesure ».

Tuiles :

TuileMesure
ProcesseurPart du processeur de la machine, tous cœurs confondus : 100 % signifie que tous les cœurs sont occupés par le serveur. Le nombre de cœurs est rappelé dessous.
Mémoire utiliséeMémoire physique occupée par le processus (ensemble de travail), et sa part de la mémoire de la machine.
Lectures disque, Écritures disqueDébits de lecture et d'écriture du processus, par seconde, tels que Windows les compte : les échanges réseau avec les clients y sont inclus avec les accès aux fichiers.

Courbes : processeur et mémoire sur les dix dernières minutes, un point toutes les deux secondes. Au survol, une ligne verticale donne la valeur du point et son âge (« il y a 12 s »). L'historique commence au lancement du gestionnaire.

Carte Détails : temps processeur cumulé depuis le démarrage, mémoire privée (mémoire propre au processus, qu'il ne partage avec aucun autre), pic de mémoire, mémoire libre de la machine, lectures et écritures (débit et total depuis le démarrage), fils d'exécution, handles, et, connecté, fils parallèles occupés sur le total du budget de parallélisme (Miraj_parallel_workers_busy / Miraj_parallel_workers).

22.9 Onglet Requêtes#

L'onglet demande une connexion (voir 22.6).

Tuiles :

TuileSource
Nombre total de requêtesQuestions : instructions exécutées depuis le démarrage du serveur, toutes sessions confondues (voir 16.6.1). Dessous, la durée correspondante (Uptime). Les grands nombres sont abrégés (12,9 k, 4,2 M).
Requêtes par secondeDébit mesuré sur les deux dernières secondes ; dessous, la moyenne depuis le démarrage. Les lectures du gestionnaire lui-même sont retirées du compte.
Requêtes lentesSlow_queries : instructions plus longues que le seuil long_query_time, rappelé dessous.
En coursInstructions en cours d'exécution.

Courbe : requêtes par seconde sur les dix dernières minutes.

Carte Journal des requêtes lentes. Case Activé, Seuil (secondes) et bouton Appliquer : le gestionnaire exécute SET GLOBAL long_query_time = … et SET GLOBAL slow_query_log = ON|OFF. Ces réglages sont perdus au redémarrage du serveur, sauf si la case Garder au redémarrage (miraj_config.xml) est cochée (par défaut) : les variables slow_query_log et long_query_time sont alors écrites aussi dans miraj_config.xml, sans toucher au reste du fichier (commentaires compris). Journal désactivé, seul le compteur Slow_queries avance.

Le tableau des requêtes lentes lit la table miraj.slow_log. Quand le journal est actif, le gestionnaire ajoute donc la sortie TABLE à la sortie fichier (SET GLOBAL log_output = 'FILE,TABLE') : le fichier slow.log continue d'être écrit.

Carte Requêtes en cours (SHOW FULL PROCESSLIST, sans les connexions inactives) : identifiant, compte, base, durée, état et texte de la requête. Une durée d'au moins 10 secondes est marquée ⚠. Le texte est abrégé sur une ligne ; le survol l'affiche en entier et un clic le copie dans le presse-papiers.

Carte Requêtes lentes enregistrées : les 200 dernières lignes de miraj.slow_log (début, durée, lignes lues, lignes rendues, compte, base, requête), triées Plus récentes ou Plus longues, avec un Filtre sur le texte de la requête. Vider exécute TRUNCATE TABLE miraj.slow_log. Les durées de la table sont à la seconde près.

22.10 Onglet Sauvegardes#

Le gestionnaire fait des sauvegardes complètes : toutes les bases, par BACKUP ALL DATABASES (voir 19.1). Le serveur reste en service pendant la sauvegarde.

22.10.1 Dossier de travail du serveur (backup_dir)#

Le serveur n'écrit une sauvegarde que dans son dossier de sauvegardes, la variable backup_dir (voir 19.1.1). La carte Dossier de travail des sauvegardes du serveur l'affiche. S'il n'est pas défini, elle le signale et propose un dossier backups à côté du dossier de données (jamais dedans). Définir et redémarrer, après confirmation, crée le dossier, l'écrit dans miraj_config.xml et redémarre le serveur, qui ne lit ce réglage qu'au démarrage.

22.10.2 Sauvegarde immédiate#

Carte Sauvegarde complète : choisir la Destination des sauvegardes (saisie ou Parcourir… ; Ouvrir l'affiche dans l'explorateur), puis Sauvegarde complète maintenant. Le bouton demande une connexion et un backup_dir défini. La destination est retenue d'un lancement à l'autre ; par défaut, c'est le dossier proposé pour backup_dir.

Déroulement, affiché étape par étape :

  1. BACKUP ALL DATABASES dans <backup_dir>\miraj-AAAA-MM-JJ_HHMMSS (date et heure locales) ;
  2. vérification de chaque base sauvegardée : présence, taille et somme de contrôle de chaque fichier (« 3 base(s) sauvegardée(s) et vérifiée(s), 1,2 Gio ») ;
  3. déplacement du dossier dans la destination, si elle est ailleurs que backup_dir (par un simple renommage sur le même disque, par une copie vers un autre disque) ;
  4. ligne ajoutée au journal des sauvegardes.

La destination ne doit pas se trouver dans le dossier de données. Chaque base a son sous-dossier dans la sauvegarde :

D:\Sauvegardes\miraj-2026-09-25_020000\
  gestion\      manifest.json, fichiers .mrj, journal…
  compta\

Une sauvegarde immédiate ne supprime jamais d'anciennes sauvegardes.

22.10.3 Sauvegarde planifiée#

Carte Sauvegarde planifiée : cocher Sauvegarde complète automatique, choisir l'heure, les jours (tous par défaut) et le nombre de sauvegardes gardées (7 par défaut ; 0 les garde toutes), puis Enregistrer la planification. Tant qu'elle n'est pas enregistrée, une modification est signalée « modifiée, non enregistrée ». L'enregistrement demande une connexion avec un compte administrateur, pour les raisons suivantes :

  • le gestionnaire crée (ou met à jour) le compte miraj_backup@localhost, qui n'a que le privilège BACKUP_ADMIN : il peut sauvegarder, ni lire ni modifier les données. Son mot de passe, de 32 caractères tirés au sort, est renouvelé à chaque enregistrement ;
  • ce mot de passe est chiffré pour la machine (DPAPI de Windows) dans %ProgramData%\Miraj Express\manager\backup.key, fichier accessible seulement à SYSTEM et aux administrateurs ;
  • la tâche planifiée « Miraj Express - sauvegarde » est créée : elle lance miraj-manager.exe --scheduled-backup sous le compte SYSTEM aux jours et à l'heure choisis. Si la machine était éteinte à l'heure prévue, la sauvegarde est faite au plus tôt après son démarrage ; elle est abandonnée au bout de 12 heures.

À l'heure dite, le gestionnaire se connecte avec miraj_backup, fait la sauvegarde comme en 22.10.2, puis supprime les plus anciennes sauvegardes de la destination au-delà du nombre à garder. Seuls les dossiers nommés miraj-AAAA-MM-JJ_HHMMSS sont comptés et supprimés : les autres fichiers de la destination ne sont jamais touchés. La sauvegarde planifiée n'a besoin ni de la fenêtre ni d'une session ouverte.

Sous la carte, la ligne « Prochaine : … Dernière : … Résultat : … » reprend l'état de la tâche tel que Windows le donne (résultat 0 : réussite). Décocher la case puis enregistrer supprime la tâche ; le compte miraj_backup reste en place (DROP USER pour le supprimer).

Sauvegarde incrémentielle continue (éditions Entreprise et Cluster ; la case n'existe pas dans le gestionnaire Express, et elle est grisée si le serveur connecté est une édition Express). Sous la planification, la case Sauvegarde incrémentielle continue (journal archivé en temps réel) fait archiver par le serveur chaque modification entre deux sauvegardes complètes (voir 19.1.5). Cochée :

  • la sauvegarde complète devient quotidienne : les sept jours sont cochés et grisés ;
  • le champ Dossier de l'archive apparaît (par défaut archive, à côté du dossier de données ; jamais dedans) ;
  • Enregistrer la planification écrit journal_archive et journal_archive_dir dans miraj_config.xml (ils valent à chaque démarrage) et les applique aussitôt par SET GLOBAL. Si le serveur n'est pas joint, le réglage prend effet au prochain démarrage.

Décocher la case (ou toute la planification) puis enregistrer arrête l'archivage : le serveur cesse d'archiver et journal_archive passe à false dans la configuration. L'archive déjà écrite est gardée. Une réactivation ouvre une nouvelle lignée, et le serveur prend aussitôt une nouvelle base.

Quand l'archivage est actif, une ligne d'état s'ajoute sous la carte : « Archive du journal : ON retard … dernier passage … bases en attente … ». Elle passe en rouge (ERROR) si le serveur ne parvient plus à écrire l'archive, par exemple si le disque est plein ou débranché ; la cause est dans le journal du serveur. Après chaque sauvegarde planifiée, le gestionnaire purge l'archive de ce qui ne prolonge plus aucune sauvegarde gardée. Les suppressions figurent dans le journal des sauvegardes.

22.10.4 Liste et journal#

La carte Sauvegardes dans la destination liste les sauvegardes présentes, de la plus récente à la plus ancienne, avec leur taille. La carte Journal des sauvegardes montre les dernières lignes de backup.log : sauvegardes manuelles réussies, sauvegardes planifiées réussies avec leurs étapes, et échecs de sauvegarde planifiée avec leur cause.

22.10.5 Restaurer une sauvegarde#

La restauration se fait en SQL, base par base, par RESTORE DATABASE (voir 19.1.4). Le serveur ne lit une sauvegarde que dans son backup_dir : si la destination est ailleurs, recopiez d'abord le dossier de la sauvegarde dans backup_dir, puis nommez le sous-dossier de la base :

-- D:\Sauvegardes\miraj-2026-09-25_020000 recopié dans backup_dir
RESTORE DATABASE gestion_hier FROM 'miraj-2026-09-25_020000\gestion';

Avec la sauvegarde incrémentielle continue, ajoutez WITH ARCHIVE pour rejouer l'archive jusqu'à la dernière modification, ou jusqu'à un instant donné :

RESTORE DATABASE gestion_1530 FROM 'miraj-2026-09-25_020000\gestion'
    WITH ARCHIVE UNTIL TIME '2026-09-25 15:30:00';

Choisir backup_dir lui-même comme destination évite cette copie, au prix de garder les sauvegardes sur le même disque que le dossier de travail du serveur. Une sauvegarde physique ne contient pas les comptes : gardez aussi de temps en temps un export miraj-dump --users (voir 19.4).

22.11 Fichiers et tâches planifiées#

Les fichiers du gestionnaire sont dans %ProgramData%\Miraj Express\manager :

FichierContenu
manager.jsonRéglages : exécutable du serveur (server_exe), dossier de données (data_dir), compte de connexion (user, root par défaut), destination des sauvegardes (backup_target), dossier de l'archive du journal (archive_dir), planification (schedule : enabled (false), hour (2), minute (0), days du lundi au dimanche (tous), keep (7), incremental (false)).
backup.keyMot de passe du compte miraj_backup, chiffré pour la machine.
backup.logJournal des sauvegardes, une ligne horodatée par événement.

manager.json est écrit à la connexion (compte) et à chaque changement de destination ou de planification. Pour administrer un autre serveur que celui trouvé automatiquement (voir 22.2), renseignez-y server_exe et data_dir, gestionnaire fermé ; laissés vides, ils sont de nouveau cherchés à chaque lancement.

Tâches planifiées de Windows utilisées :

TâcheCréée parLance
Miraj ExpressL'assistant d'installationmiraj-server.exe --root <données> --log au démarrage de Windows, compte SYSTEM. Le gestionnaire la lance et l'arrête.
Miraj Express - sauvegardeLe gestionnaire (planification)miraj-manager.exe --scheduled-backup, compte SYSTEM.
Miraj Express - gestionnaireL'assistant ou le menu de l'icônemiraj-manager.exe --tray à l'ouverture de session, droits d'administrateur.

La désinstallation supprime ces tâches ; le dossier du gestionnaire et ses fichiers restent.

22.12 Messages courants#

MessageCause et remède
le serveur est déjà démarréDémarrer alors que le processus tourne.
le port N est déjà occupé par un autre programmeUn autre programme (souvent un autre serveur MIRAJ ou SQL) écoute sur le port de miraj_config.xml. Arrêtez-le ou changez port.
le serveur s'est arrêté au démarrage ; voir …Le serveur a refusé de démarrer : la cause est dans le fichier server.log indiqué (configuration invalide, backup_dir mal placé…).
le serveur ne répond pas sur le port N après 30 sDémarrage anormalement long ou serveur bloqué : voir server.log.
le processus N ne s'arrête pasArrêt impossible, souvent faute de droits d'administrateur (voir 22.1.2).
… introuvableL'exécutable du serveur n'existe pas au chemin retenu (voir 22.2).
Connexion : …Connexion refusée (mot de passe, compte verrouillé, adresse bloquée) : le message du serveur suit.
le serveur n'a pas de dossier de sauvegarde (backup_dir)Définissez-le (voir 22.10.1).
le dossier de destination ne doit pas se trouver dans le dossier des donnéesChoisissez une destination hors du dossier de données.
base … : …Une base sauvegardée n'a pas passé la vérification : la sauvegarde est laissée dans backup_dir pour examen et n'est pas déplacée.
connectez-vous au serveur (compte administrateur) pour créer le compte de sauvegardeEnregistrer une planification demande une connexion (voir 22.10.3).
aucun jour choisiCochez au moins un jour.
Échec de la sauvegarde planifiée : … (backup.log)Serveur arrêté à l'heure prévue, compte miraj_backup supprimé ou modifié, backup_dir retiré… Enregistrer de nouveau la planification recrée le compte et son secret.
Jeton : …Jeton saisi mal formé (attendu : nom.secret) ; le texte saisi n'est jamais recopié dans le message.
Adresses autorisées : …Une adresse ou un réseau de la liste blanche est mal écrit.

22.13 Version macOS#

Le paquet MIRAJ-<version>-Express-macos-<arch>.pkg installe le serveur, miraj-cli, miraj-config-editor, miraj-backup dans /usr/local/miraj-express/bin, et dépose deux applications dans /Applications : Miraj Manager (ce chapitre) et Miraj Uninstaller. Les données du serveur sont dans /Library/Application Support/Miraj Express/data et les clés du coffre des comptes dans keys (dossiers réservés à root et au groupe admin) ; la configuration miraj_config.xml est à côté de miraj-server. Les fichiers des gestionnaires (réglages, journal des sauvegardes) restent dans ~/Library/Application Support/Miraj Express/manager. Le serveur est un LaunchDaemon (com.cirtasoft.miraj.express.server, démarrage de la machine, relance après un arrêt imprévu) ; Miraj Uninstaller (dans /Applications) désinstalle le produit sans terminal : une fenêtre propose de garder les données (par défaut) ou de les supprimer, puis macOS demande le mot de passe d'administrateur. Même effet en ligne de commande : sudo /usr/local/miraj-express/bin/miraj-uninstall.sh (--yes sans question, --purge pour supprimer aussi données et clés). Si les données ont été gardées, la réinstallation ne relance pas le serveur et ouvre la page de configuration de Miraj Manager (ci-dessous) : garder les comptes existants (mot de passe root actuel) ou définir un nouveau mot de passe root (les autres comptes sont alors supprimés, les bases restent). Le paquet installe aussi le pilote ODBC /usr/local/miraj-express/lib/libmiraj_odbc.dylib et le déclare dans /Library/ODBC/odbcinst.ini (installation et désinstallation : chapitre 29).

FonctionmacOS
Démarrer, arrêter, redémarrer le serveur ; état ; ressources ; requêtesDisponibles. Le serveur tourne sous root par son LaunchDaemon : démarrer et arrêter demandent les droits d'administrateur (fenêtre de mot de passe de macOS). Au premier démarrage, une page de configuration remplace la fenêtre (ci-dessous). La carte Serveur indique « oui, LaunchDaemon « com.cirtasoft.miraj.express.server » (sous root) » pour le démarrage automatique.
Sauvegarde immédiate et restaurationDisponibles.
Sauvegarde planifiéeDisponible, par un LaunchDaemon (ci-dessous).
Démarrage automatique du serveurDisponible : LaunchDaemon du serveur. Pas de démarrage automatique du gestionnaire.
Icône de la zone de notification, instance unique, --trayAbsents : le gestionnaire n'est qu'une fenêtre, fermer la fenêtre le quitte.
Demande des droits d'administrateur au lancementAbsente : les gestionnaires s'ouvrent avec les droits de l'utilisateur.

Première configuration sous macOS. Le paquet n'a pas d'assistant : quand le dossier de données est absent ou vide (ou après une réinstallation qui a gardé les données), et que le serveur ne tourne pas, la page Configuration du serveur remplace la fenêtre de Miraj Manager :

ChampContenu
Mot de passe root, Confirmer le mot de passeObligatoire. Générer et copier tire au sort un mot de passe de 32 caractères, le place dans les deux champs et le copie dans le presse-papiers : collez-le dans votre gestionnaire de mots de passe.
Port7007 par défaut, de 1 à 65535.
Accepter les connexions d'autres machines (toutes les interfaces)Décochée par défaut : le serveur n'écoute que sur la boucle locale (bind = 127.0.0.1) ; cochée, bind = 0.0.0.0.
Langage SQL de l'instanceLe langage MIRAJ (défaut) ou PostgreSQL. PostgreSQL ajoute POSTGRESQL en tête de sql_mode dans miraj_config.xml ; un avertissement rappelle que le serveur ne parlera alors que le protocole PostgreSQL (psql, pilotes PostgreSQL), que Gestium et les outils du protocole hérité demandent le langage MIRAJ, et que l'éditeur de configuration permet de changer ce choix plus tard (pris en compte au redémarrage du serveur).

Créer et démarrer crée le dossier de données et le compte root (le mot de passe est transmis au serveur par son environnement, jamais par une ligne de commande), écrit port, bind et, au besoin, sql_mode dans miraj_config.xml, puis démarre le serveur. Erreurs signalées sur la page : « le mot de passe root est obligatoire », « les deux mots de passe sont différents », « le port doit être un nombre de 1 à 65535 », « impossible de créer les comptes : … ».

Après une réinstallation qui a gardé les données, la page affiche en plus la case Conserver les comptes existants (mot de passe root actuel), cochée par défaut : le serveur repart alors tel quel, sans toucher aux comptes ni à la configuration, et les champs sont estompés. Décochée, les champs servent à définir un nouveau mot de passe root, comme au premier démarrage.

État du port sous macOS. macOS ne laisse pas l'application voir les sockets du serveur lancé sous root par son LaunchDaemon. Quand la liste des ports en écoute ne montre rien, Miraj Manager fait une connexion d'essai sur 127.0.0.1 ; tant que le serveur tourne, un essai réussi est gardé 30 s, pour ne pas laisser une ligne dans le journal du serveur à chaque mesure.

Sauvegarde planifiée sous macOS. Même fenêtre et mêmes réglages que sous Windows (22.10.3) ; l'enregistrement demande une connexion administrateur et les droits d'administrateur de macOS :

  • le compte miraj_backup@localhost est créé comme sous Windows ; son mot de passe est rangé dans le trousseau du système (/Library/Keychains/System.keychain, service « Miraj Express - sauvegarde »), que root lit sans session ouverte, et non dans un fichier ;
  • le LaunchDaemon /Library/LaunchDaemons/com.cirtasoft.miraj.express.backup.plist lance miraj-manager --scheduled-backup sous root aux jours et à l'heure choisis, avec les réglages et le journal backup.log de l'utilisateur qui a planifié (MIRAJ_MANAGER_DIR). Une sauvegarde manquée parce que le Mac dormait est lancée au réveil ; pas si le Mac était éteint ;
  • l'état affiche l'heure suivante calculée d'après la planification et la dernière ligne de résultat du journal ;
  • désactiver la planification décharge le LaunchDaemon, supprime son .plist et retire le secret du trousseau.