Using DMK
Tutorial for using DMK
Usually, DMK configures the environment automatically. In some rare cases it must be adapted. DMK also allows you to define your own aliases and environment variables.
Alias and variable management
Here is an example of a DMK configuration file:
[GLOBAL]
var::MONGO_BASE::=::nooption::"/u01/app/mongodb":: # Global MongoDB directory
# ...
[INSTANCE]
alias::cda::novar_noforce::'cd ${MONGO_BASE}/admin/${MONGO_INSTANCE}'::
# ...
[mdb01]
var::MONGO_URI::=::nowarn::"mongodb://root:mypassword@host1:27001,host2:27001,host3:27001/?replicaset=rs1&readPreference=secondaryPreferred"::
DMK sets the environment using two different configuration files:
$DMK_HOME/etc/dmk.conf.default
: Default configuration file that defines common MongoDB environment variables and aliases.~/.dmk/dmk.conf.local
: Your local configuration file. It is initially empty and can be freely customized. Every setting made here will overwrite the default ones.
Configuration files are divided into three sections:
[GLOBAL]
: Global settings, loaded at login.[INSTANCE]
: MongoDB instance settings, loaded for each MongoDB instance when switching to it.[<instance_name>]
: Specific settings for a MongoDB instance, loaded when switching to it.
Declare an alias
Aliases are declared using the following syntax:
alias::<name>::[var|novar]_[force|noforce]::<your code>::# comment
[var|novar]
var
: Automatically creates a variable with the name of the alias with the path specified in the alias. For instance, the aliascdh='cd $MONGO_HOME'
creates a variablecdh=$MONGO_HOME
.novar
: Does not create the above variable.
[force|noforce]
force
: If a command or an alias already exists, it is overwritten.noforce
: A warning is printed instead of overwriting the existing alias or command.
If you specify an alias for PS1
and it is enclosed in brackets (...) it will be used as-is as a function definition (aliases are implemented as functions). Otherwise, DMK tries to reformat it as a function.
Declare a variable
Variables are declared using the following syntax:
var::<name>::[ =|+|-]::[ begin|end|nooption|warn|nowarn]::<your value>::
[=|+|-]
=
: Equal operator+
: expand an existing path variable-
: contract, remove element from a path variable
[begin|end|nooption|warn|nowarn]
begin/end
: works only with the operators[+|-]
nooption|warn
: default behavior is to print a warning in case the variable existsnowarn
: disable warning and overwrites the variable
Environment loading
When you log into the mongodb
user after a complete DMK installation, the DMK environment will be loaded automatically, and the current state of the MongoDB instances will be displayed:
[root@vm00 ~]# su - mongodb
Last login: Mon Jun 30 05:20:36 EDT 2025 on pts/2
Instance State Version Port Bind IPs
----------------------------------------------------------------------
mdb01 STOPPED 8.0.11 27017 0.0.0.0
mdb02 STOPPED 8.0.11 27102 0.0.0.0
mongodb@vm00:/home/mongodb/ [DUMMY]
To know which instances are present, DMK uses the $MONGO_BASE/etc/mongodb.lst
file:
mongodb@vm00:/home/mongodb/ [DUMMY] cat ${MONGO_BASE}/etc/mongodb.lst
mdb01:/u01/app/mongodb/product/8.0.11:Y # Generated by DMK - dmk_dbcreate.py
mdb02:/u01/app/mongodb/product/8.0.11:Y # Generated by DMK - dmk_dbcreate.py
mdb03:/u01/app/mongodb/product/8.0.11:N # Generated by DMK - dmk_dbcreate.py
For each line:
The first element is the instance name.
The second element is the binary folder associated with the instance. This is useful for upgrading specific instances individually.
The last element is whether the instance is considered active (
Y
) or inactive (N
). If it's considered inactive, it will not be considered when analyzing the instances. Here, for instance,mdb03
is considered inactive, so it's not shown when displaying the status of all instances.
Switching between environments
At login, no specific instance environment is loaded. To load a specific environment, use the corresponding <instance_name>
or <INSTANCE_NAME>
alias.
mongodb@vm01:/home/mongodb/ [DUMMY] mdb01
---------- dbi services ----------
INSTANCE : mdb01
STATUS : STOPPED
VERSION : 8.0.11
BIND : 0.0.0.0
PORT : 27017
REPLICA SET STATUS : N/A (instance STOPPED)
CONFIGURATION FILE : /u01/app/mongodb/admin/mdb01/etc/mdb01.conf
DATA PATH : /u02/mongodb/data/mdb01
LOG FILE : /u04/mongodb/logs/mdb01/mdb01.log
------------------------------------
mongodb@vm01:/home/mongodb/ [mdb01]
This command loads the [INSTANCE]
and [mdb01]
sections of your configuration files.
Last updated