跳到主要内容

单节点

服务器IP主机角色
192.168.10.4MongoDB Rtandalone

开始部署​

  1. 下载 mongodb 安装包

    wget https://pdpublic.mingdao.com/private-deployment/offline/common/mongodb-linux-x86_64-3.4.24.tgz
  2. 解压至安装目录

    tar -zxvf mongodb-linux-x86_64-3.4.24.tgz
    mv mongodb-linux-x86_64-3.4.24 /usr/local/mongodb
  3. 创建 mongodb 用户

    useradd -M -s /sbin/nologin mongodb
  4. 创建数据、日志目录并授予权限

    mkdir -p /data/mongodb/ /data/logs/mongodb
    chown -R mongodb:mongodb /usr/local/mongodb/ /data/mongodb/ /data/logs/mongodb
  5. 关闭透明大页 (THP)

    MongoDB 在启用 THP 时可能出现性能下降和内存碎片问题,建议在启动 MongoDB 前通过 systemd 服务将其关闭

    cat > /etc/systemd/system/disable-thp.service <<\EOF
    [Unit]
    Description=Disable Transparent Huge Pages (THP)
    DefaultDependencies=no
    After=sysinit.target local-fs.target
    Before=mongodb.service
    [Service]
    Type=oneshot
    ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'
    ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'
    [Install]
    WantedBy=basic.target
    EOF

    systemctl daemon-reload
    systemctl enable disable-thp
    systemctl start disable-thp
  6. 配置 systemd 管理文件

    cat > /etc/systemd/system/mongodb.service <<EOF
    [Unit]
    Description=MongoDB
    After=network-online.target
    Wants=network-online.target
    [Service]
    User=mongodb
    Group=mongodb
    LimitNOFILE=1000000
    LimitNPROC=1000000
    LimitMEMLOCK=infinity
    ExecStart=/usr/local/mongodb/bin/mongod --logpath /data/logs/mongodb/mongodb.log --dbpath /data/mongodb --auth --port 27017
    ExecStop=/usr/bin/kill \$MAINPID
    Restart=on-failure
    RestartSec=5
    TimeoutStopSec=300
    [Install]
    WantedBy=multi-user.target
    EOF
  7. 加入开机自启动

    # 安装后还没创建用户,所以先不用 systemctl start mongodb 启动服务
    systemctl daemon-reload
    systemctl enable mongodb

创建数据库用户​

在 MongoDB Node01 节点上操作

  1. 临时启动一个未开启连接认证的 mongodb 服务

    su -c '/usr/local/mongodb/bin/mongod --fork --logpath /data/logs/mongodb/mongodb.log --dbpath /data/mongodb --noauth --port 27017' -s /bin/bash mongodb
  2. 登录 MongoDB

    在系统终端执行:

    /usr/local/mongodb/bin/mongo --host 127.0.0.1 --port 27017

    后续创建用户的语句在 mongo 中执行。

  3. 创建管理员用户

    db.getSiblingDB("admin").createUser({
    user: "root",
    pwd: "123456",
    roles: [{role: "root", db: "admin"}]
    });
    • 命令中指定的 mongodb admin 库权限 root 用户密码为 123456 ,实际部署必须修改为强口令
  4. 创建业务用户

    var businessUser = "hap";
    var businessPassword = "123456";
    var databases = [
    "MDLicense",
    "ClientLicense",
    "commonbase",
    "MDAlert",
    "mdapproles",
    "mdapprove",
    "mdapps",
    "mdattachment",
    "mdcalendar",
    "mdcategory",
    "MDChatTop",
    "mdcheck",
    "mddossier",
    "mdemail",
    "mdform",
    "MDGroup",
    "mdgroups",
    "MDHistory",
    "mdIdentification",
    "mdinbox",
    "mdkc",
    "mdmap",
    "mdmobileaddress",
    "MDNotification",
    "mdpost",
    "mdreportdata",
    "mdroles",
    "mdsearch",
    "mdservicedata",
    "mdsms",
    "MDSso",
    "mdtag",
    "mdtransfer",
    "MDUser",
    "mdworkflow",
    "mdworksheet",
    "mdworkweixin",
    "mdwsrows",
    "pushlog",
    "taskcenter",
    "mdintegration",
    "mdactionlog",
    "mdworksheetlog",
    "mdworksheetsearch",
    "mddatapipeline",
    "mdwfplugin",
    "mdpayment",
    "mdwfai",
    "mdopenauth",
    "mdaisearch",
    "MDAgentInfra"
    ];
    for (var i = 0; i < databases.length; i++) {
    var database = databases[i];
    db.getSiblingDB(database).createUser({
    user: businessUser,
    pwd: businessPassword,
    roles: [{role: "readWrite", db: database}]
    });
    }
    • 命令中指定的 mongodb 业务库权限 hap 用户密码为 123456 ,实际部署必须修改为强口令
    • 若密码中包含特殊字符,仅允许 - 或 _,禁止使用 @ ! # & 等字符,以避免兼容性问题
  5. 退出 mongo

    exit();
  6. 关闭临时启动的 MongoDB

    回到系统终端执行:

    kill $(pgrep -f 'mongod')

启动 MongoDB​

systemctl start mongodb