2. Installation
2.1 Prérequis#
MIRAJ est distribué sous forme de binaires prêts à l'emploi pour Windows 64 bits (éditions Standard et Express), sans dépendance externe à installer. Choisissez l'archive correspondant à l'édition souhaitée (voir 1.3) : elle contient miraj-server.exe, miraj-cli.exe et, pour l'usage embarqué depuis une application Delphi, C++ ou tout langage capable de charger une DLL C, miraj.dll.
Une bibliothèque 32 bits (miraj.dll compilée pour des applications Win32) est disponible séparément pour les applications qui en ont besoin ; l'exécutable 64 bits par défaut ne peut pas être chargé par un processus 32 bits.
Aucune installation au sens d'un programme d'installation n'est nécessaire : copiez les exécutables où vous le souhaitez et lancez-les. Le dossier depuis lequel miraj-server ou miraj-cli est lancé n'a pas d'importance : c'est le dossier de données (--root) qui détermine où vivent vos bases.
Pour compiler MIRAJ vous-même (autres plateformes, débogage, contribution), voir 2.7.
2.2 Démarrer miraj-server#
miraj-server.exe --root D:\donnees --logCette commande ouvre (ou crée s'il n'existe pas) le dossier de données D:\donnees, puis se met à l'écoute sur 127.0.0.1:7007. Le compte root local, sans mot de passe, est créé automatiquement à la première ouverture du dossier.
Options de la ligne de commande#
Toutes les options acceptent un nom insensible à la casse (--Root et --root sont équivalents). miraj-server --help affiche la liste complète.
| Option | Valeur par défaut | Effet |
|---|---|---|
--root <dossier> | data | Dossier de données à ouvrir (créé s'il n'existe pas). |
--config <fichier.xml> | <dossier>/miraj_config.xml | Fichier de configuration à utiliser à la place de celui du dossier de données. |
--bind <adresse> | 127.0.0.1 | Adresse d'écoute du serveur. |
--port <port> | 7007 | Port TCP d'écoute (--port 0 laisse le système choisir un port libre). |
--log | désactivé | Tient à jour <dossier>/miraj/server.log (erreurs SQL, bugs, incidents du serveur ; les requêtes réussies n'y figurent pas). |
--lang <code> | en | Langue des messages d'erreur des sessions : en, fr, zh, hi, es, ar, pt, ru, de, ja. |
--result-buffer <Mo> | 64 | Mémoire gardée par connexion pour un client lent à lire son résultat. |
--write-timeout <secondes> | 60 | Attente maximale d'un client qui ne lit plus son résultat, avant déconnexion (net_write_timeout). |
--connect-timeout <secondes> | 10 | Délai maximal pour achever la poignée de main d'un client (connect_timeout). |
--idle-timeout <secondes> | 28800 (8 h) | Délai maximal entre deux commandes d'un client déjà connecté (wait_timeout). |
--lock-wait-timeout <secondes> | 50 | Attente maximale d'un verrou de table explicite (LOCK TABLES) avant l'erreur 1205. |
--deferred-update ON|OFF | ON | Mise à jour différée des UPDATE d'une ligne désignée par sa clé : réévalués au COMMIT plutôt que de prendre la ligne (voir 9. Transactions et concurrence). |
--concurrency mvocc|pessimistic | mvocc | Modèle de concurrence : contrôle multiversion optimiste (aucune attente sur les lignes) ou verrous de ligne classiques. Option temporaire, le temps de comparer les deux modèles. |
--key-dir <dossier> | profil du compte qui lance le serveur | Dossier des clés du coffre chiffré des comptes, tenu hors du dossier de données (voir 11. Administration du serveur). |
--reset-accounts | — | Recrée le coffre des comptes avec le seul root local, sans mot de passe (utilisé seul, avec --root et éventuellement --key-dir). |
--secure-file-priv <dossier> | vide (LOAD_FILE désactivé) | Seul dossier lisible par LOAD_FILE, pour les comptes ayant le privilège FILE. |
--lob-threshold <octets> | 8192 | Taille à partir de laquelle une valeur BLOB quitte la table pour le magasin séparé de la table. |
--lob-cache <Mo> | 128 | Taille du cache de lecture des BLOB externalisés. |
--event-scheduler ON|OFF|DISABLED | OFF | État du planificateur d'événements au démarrage (DISABLED interdit de l'activer ensuite). |
--parallel-threads <n> | un par cœur | Fils que toutes les requêtes du serveur peuvent occuper en tout (édition Standard/Cluster ; sans effet en Express). |
--save-policy relaxed|statement|periodic | relaxed | Politique de durabilité des écritures (voir 11. Administration du serveur). |
--save-interval <millisecondes> | 5000 | Intervalle du vidage périodique du journal (save-policy relaxed ou periodic). |
--slow-query-log | désactivé | Active le journal des requêtes lentes. |
--slow-query-log-file <fichier> | <dossier>/miraj/slow.log | Fichier du journal des requêtes lentes (l'active aussi). |
--long-query-time <secondes> | 10 | Durée au-delà de laquelle une instruction est une requête lente. |
--max-statement-time <secondes> | 0 (sans limite) | Durée au-delà de laquelle une instruction est abandonnée automatiquement. |
--tls-cert <fichier.pem> / --tls-key <fichier.pem> | aucun | Certificat et clé privée TLS ; le serveur propose alors le chiffrement à la connexion. Ces deux options vont ensemble. |
--require-tls | désactivé | Refuse les clients qui ne se connectent pas en TLS (suppose --tls-cert/--tls-key). |
--cluster-config <cluster.toml> | fichier cluster.toml à côté de l'exécutable | Fichier de configuration du nœud, édition Cluster uniquement. |
--help, -h, /? | — | Affiche l'usage et quitte. |
Chaque option de la ligne de commande peut aussi être fixée durablement dans miraj_config.xml (voir 2.4) ; en cas de conflit, la ligne de commande l'emporte.
2.3 Installer et utiliser miraj-cli#
miraj-cli n'a besoin d'aucune installation particulière : c'est un exécutable autonome qui ouvre directement un dossier de données, sans passer par un serveur réseau.
miraj-cli.exe --root D:\donneesMIRAJ 1.0.0 Standard - tapez \help pour l'aide, \q pour quitter.
miraj>Options de la ligne de commande#
| Option | Effet |
|---|---|
--root <dossier> | Dossier de données à ouvrir (data par défaut). |
--config <fichier.xml> | Fichier de configuration à utiliser à la place de celui du dossier de données. |
-d <base> | Sélectionne une base au démarrage (équivalent à USE <base>). |
-e "<SQL>" | Exécute l'instruction donnée puis quitte, sans lancer le mode interactif. |
--lang <code> | Langue des messages d'erreur : en, fr, zh, hi, es, ar, pt, ru, de, ja. |
--json | Affiche les résultats au format JSON plutôt qu'en tableau. |
--timing | Affiche le temps d'exécution de chaque instruction. |
--no-history | Ne lit ni n'écrit l'historique des instructions saisies. |
<fichier.sql> | Exécute le fichier donné puis quitte. |
Voir 13. miraj-cli pour la référence complète des commandes du mode interactif (\d, \l, \history, source, etc.).
2.4 Fichier de configuration#
À l'image d'un fichier de configuration classique d'un serveur SQL, MIRAJ lit un fichier XML au démarrage :
<dossier de données>/miraj_config.xml— vos réglages, lu au démarrage. S'il n'existe pas encore, MIRAJ en crée un squelette commenté.<dossier de données>/miraj_default.xml— régénéré à chaque démarrage, liste toutes les variables reconnues avec leur valeur par défaut. C'est un document de référence uniquement : il n'est jamais relu par le serveur.
Ordre de priorité, du plus faible au plus fort : valeur par défaut du moteur, puis miraj_config.xml, puis argument de la ligne de commande.
2.5 Organisation du dossier de données#
Le dossier de données (--root) est l'unité d'administration d'un serveur ou d'une console MIRAJ : tout ce qui appartient à une installation y réside.
D:\donnees\
├── miraj_config.xml (vos réglages)
├── miraj_default.xml (référence, régénéré à chaque démarrage)
├── miraj\
│ ├── accounts.mra (coffre chiffré des comptes)
│ ├── server.log (avec --log : erreurs, bugs, incidents)
│ └── slow.log (avec --slow-query-log)
└── ma_base\ (une base = un sous-dossier)
├── journal.mrl (journal d'écriture de la base)
├── clients.mrj (une table = un fichier .mrj)
└── clients.bmrj (BLOB externalisés de la table, si présents)- Une base = un sous-dossier du dossier de données.
- Une table = un fichier
.mrjdans le sous-dossier de sa base, au format interne MIRA v2. - Les valeurs
BLOBd'une table dont la taille dépasse--lob-thresholdsont conservées dans un magasin séparé,<table>.bmrj, à côté du fichier.mrj. - Chaque base a son propre journal d'écriture,
journal.mrl, rejoué à l'ouverture si le dernier arrêt n'a pas été propre. - Le coffre des comptes (
accounts.mra) est commun au dossier de données ; il est chiffré, et sa clé est rangée par défaut hors du dossier de données (voir ci-dessous et 11. Administration du serveur).
2.6 Sécurité par défaut#
- Écoute locale uniquement. Sans
--bind,miraj-servern'écoute que sur127.0.0.1: aucune machine distante ne peut s'y connecter tant que vous n'avez pas explicitement choisi une autre adresse d'écoute. - Compte administrateur créé au premier lancement. À la création du dossier de données, un compte
rootlocal, sans mot de passe, est créé automatiquement ; c'est le seul type de compte habilité à gérer les autres comptes. Donnez-lui un mot de passe dès que possible :ALTER USER root@localhost IDENTIFIED BY 'un-mot-de-passe-solide'; - Clés du coffre des comptes rangées hors du dossier de données, par défaut dans le profil du compte qui exécute le serveur (
--key-dirpour choisir un autre emplacement).
Le détail de la gestion des comptes, des privilèges, du chiffrement en transit (TLS) et de la supervision est traité dans 11. Administration du serveur et 10. Comptes et privilèges.
2.7 Compiler depuis les sources#
Cette section s'adresse aux utilisateurs avancés qui veulent compiler MIRAJ eux-mêmes (autre plateforme, débogage, intégration continue).
Prérequis#
- rustup ; la chaîne de compilation exacte (1.98.1) est installée automatiquement grâce au fichier
rust-toolchain.tomldu dépôt. - Sous Windows, si
cargon'est pas dans lePATH:$env:Path = "$env:USERPROFILE\.cargo\bin;$env:Path"
Compiler l'édition Standard (multi-cœur)#
cargo build --workspace --releaseCompiler l'édition Express (gratuite, mono-fil)#
Les éditions sont choisies par la fonctionnalité Cargo parallel, active par défaut :
cargo build --workspace --release --no-default-featuresVérifier la compilation#
cargo test --workspace
cargo test --workspace --no-default-features
cargo clippy --workspace --all-targetsDémarrer les binaires compilés#
target/release/miraj-server --root D:\donnees --lang fr
target/release/miraj-cli --helpL'édition Cluster se compile avec la fonctionnalité Cargo cluster (cargo build --workspace --release --features cluster) ; voir 12. Cluster et réplication.