美文网首页mongodb
【MongoDB】一键搭建 MongoDB 3.4.9 复制集

【MongoDB】一键搭建 MongoDB 3.4.9 复制集

作者: Bogon | 来源:发表于2024-05-13 23:56 被阅读0次

    为了确保MongoDB复制集的安全性,我们应该为它设置一个超管密码。

    在初始化复制集时添加了设置超管密码的步骤:

    
    #!/bin/bash
    
    # 定义MongoDB版本和副本集名称
    
    MONGO_VERSION="3.4.9"
    
    REPLICA_SET_NAME="myReplicaSet"
    
    # 定义副本集中的MongoDB服务器的主机名或IP地址
    
    # 请替换以下IP地址或主机名为你的服务器的实际地址
    
    MONGO_HOST1="mongodb1.example.com"
    
    MONGO_HOST2="mongodb2.example.com"
    
    MONGO_HOST3="mongodb3.example.com"
    
    # MongoDB超管用户名和密码
    
    MONGO_ADMIN_USER="admin"
    
    MONGO_ADMIN_PASSWORD="yourStrongPassword"
    
    # 安装MongoDB
    
    echo "Installing MongoDB version $MONGO_VERSION..."
    
    yum install -y mongodb-org-$MONGO_VERSION mongodb-org-server-$MONGO_VERSION mongodb-org-shell-$MONGO_VERSION --disablerepo=*
    
    # 停止MongoDB服务
    
    echo "Stopping MongoDB service..."
    
    systemctl stop mongod
    
    # 为每个MongoDB实例创建数据目录和日志目录
    
    echo "Creating data and log directories..."
    
    mkdir -p /data/db1 /data/db2 /data/db3
    
    mkdir -p /var/log/mongodb1 /var/log/mongodb2 /var/log/mongodb3
    
    # 为每个MongoDB实例配置mongod服务
    
    echo "Configuring mongod services..."
    
    cat <<EOF > /etc/systemd/system/mongod1.service
    
    [Unit]
    
    Description=MongoDB Server 1
    
    After=network.target
    
    [Service]
    
    User=mongod
    
    ExecStart=/usr/bin/mongod --replSet $REPLICA_SET_NAME --bindIp $MONGO_HOST1 --port 27017 --dbpath /data/db1 --logpath /var/log/mongodb1/mongod.log
    
    Restart=always
    
    RestartSec=5
    
    [Install]
    
    WantedBy=multi-user.target
    
    EOF
    
    cat <<EOF > /etc/systemd/system/mongod2.service
    
    [Unit]
    
    Description=MongoDB Server 2
    
    After=network.target
    
    [Service]
    
    User=mongod
    
    ExecStart=/usr/bin/mongod --replSet $REPLICA_SET_NAME --bindIp $MONGO_HOST2 --port 27017 --dbpath /data/db2 --logpath /var/log/mongodb2/mongod.log
    
    Restart=always
    
    RestartSec=5
    
    [Install]
    
    WantedBy=multi-user.target
    
    EOF
    
    cat <<EOF > /etc/systemd/system/mongod3.service
    
    [Unit]
    
    Description=MongoDB Server 3
    
    After=network.target
    
    [Service]
    
    User=mongod
    
    ExecStart=/usr/bin/mongod --replSet $REPLICA_SET_NAME --bindIp $MONGO_HOST3 --port 27017 --dbpath /data/db3 --logpath /var/log/mongodb3/mongod.log
    
    Restart=always
    
    RestartSec=5
    
    [Install]
    
    WantedBy=multi-user.target
    
    EOF
    
    # 设置适当的权限
    
    chown -R mongod:mongod /data/db* /var/log/mongodb*
    
    # 启动MongoDB服务
    
    echo "Starting MongoDB services..."
    
    systemctl daemon-reload
    
    systemctl enable mongod1 mongod2 mongod3
    
    systemctl start mongod1 mongod2 mongod3
    
    # 初始化MongoDB复制集并设置超管用户
    
    echo "Initializing MongoDB replica set and setting up admin user..."
    
    mongo --host $MONGO_HOST1 --eval "rs.initiate({_id: '$REPLICA_SET_NAME', members: [{_id: 0, host: '$MONGO_HOST1:27017'}, {_id: 1, host: '$MONGO_HOST2:27017'}, {_id: 2, host: '$MONGO_HOST3:27017'}]}}"
    
    # 确保复制集初始化完成
    
    sleep 10
    
    # 连接到MongoDB并添加超管用户
    
    mongo --host $MONGO_HOST1 --eval "db.createUser({user: '$MONGO_ADMIN_USER', pwd: '$MONGO_ADMIN_PASSWORD', roles: [{role: 'root', db: 'admin'}]});"
    
    echo "MongoDB replica set with version $MONGO_VERSION and admin user has been successfully set up!"
    
    

    在这个脚本中,我们定义了一个MONGO_ADMIN_USERMONGO_ADMIN_PASSWORD变量来存储超管的用户名和密码。在初始化复制集之后,我们使用mongo命令行工具连接到MongoDB实例,并创建了一个具有root角色的用户。

    请确保替换MONGO_ADMIN_PASSWORD为你自己的强密码,并在运行脚本之前确保所有主机名或IP地址都是正确的。

    在运行此脚本之前,你需要确保MongoDB的相应版本已经在你的服务器上可用,或者你需要修改yum安装命令中的版本号以匹配你的实际情况。

    运行脚本后,MongoDB复制集将被设置,并创建了一个具有root角色的超管用户,你可以使用这个用户来管理你的MongoDB实例。

    相关文章

      网友评论

        本文标题:【MongoDB】一键搭建 MongoDB 3.4.9 复制集

        本文链接:https://www.haomeiwen.com/subject/yxhmfjtx.html