一键式部署mongodb-replica set 副本集

为了节省部署时间,编写简单的脚本一键式部署单机mongodb副本集:

vim Auto-deploy-mongodb-replica-set.sh 
#!/bin/bash
#一键式部署mongodb  replica set 集群
#单机版的副本集集群!

#准备环境
yum -y install wget >/dev/null
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz 
tar -xvf mongodb-linux-x86_64-4.0.6.tgz  -C /usr/local/ >/dev/null
mv /usr/local/mongodb-linux-x86_64-4.0.6/ /usr/local/mongodb

#为了方便管理,事后可以加入环境变量
echo  export PATH=$PATH:/usr/local/mongodb/bin  >>  /etc/profile.d/mongodb.sh #完成后执行以下刷新即可source /etc/profile

#创建文件目录:
mkdir -p /opt/data/mongodb/{master,slave,arbiter}


##配置  “master”
#创建master数据存放目录
mkdir /opt/data/mongodb/master/{db,log,pid}

#创建master的配置文件
echo '
#master.conf
#数据目录
dbpath=/opt/data/mongodb/master/db
#日志目录
logpath=/opt/data/mongodb/master/log/master.log
#pid文件
pidfilepath=/opt/data/mongodb/master/pid/master.pid

#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key

#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定的端口
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-master.conf




##配置 “slave”
#创建 slave的存放目录
mkdir /opt/data/mongodb/slave/{db,log,pid}

#创建slave的配置文件
echo '
#slave.conf
#数据目录
dbpath=/opt/data/mongodb/slave/db
#日志目录
logpath=/opt/data/mongodb/slave/log/slave.log
#pid文件
pidfilepath=/opt/data/mongodb/slave/pid/slave.pid

#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key

#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27018
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-slave.conf



##配置裁决arbiter

#创建 arbiter的存放目录
mkdir /opt/data/mongodb/arbiter/{db,log,pid}

#创建arbiter的配置文件
echo '
#arbiter.conf
#数据目录
dbpath=/opt/data/mongodb/arbiter/db
#日志目录
logpath=/opt/data/mongodb/arbiter/log/arbiter.log
#pid文件
pidfilepath=/opt/data/mongodb/arbiter/pid/arbiter.pid

#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key

#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27019
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-arbiter.conf

#启动服务
echo "启动master,slave,arbiter,服务"
stty -echo
/usr/local/mongodb/bin/mongod -f /etc/mongodb-master.conf >/dev/null

/usr/local/mongodb/bin/mongod -f /etc/mongodb-slave.conf >/dev/null

/usr/local/mongodb/bin/mongod -f /etc/mongodb-arbiter.conf >/dev/null
sleep 2
#开始配置replica set 副本集
echo "现在配置replica set 副本集"
Mongodb='/usr/local/mongodb/bin/mongo'
$Mongodb <<EOF
use admin
cfg={
        "_id" : "testdb",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "127.0.0.1:27017",
                        "priority" : 2
                },
                {
                        "_id" : 1,
                        "host" : "127.0.0.1:27018",
                        "priority" : 1
                },
                {
                        "_id" : 2,
                        "host" : "127.0.0.1:27019",
                        "arbiterOnly" : true
                }
        ]
}
rs.initiate(cfg)
rs.status()
exit;
EOF 
sleep 2
echo ”到此单机mongodb-replica set 部署完毕“

多机版一键式部署mongodb replica set 副本集

为了节省多机部署mongodb副本集的时间,编辑了易懂的shell脚本:

vim Mongodb-replica-set-for-multi-machine.sh
#!/bin/bash
#一键式部署mongodb  replica set 集群
#多机版的副本集集群!

#多机部署,可以就是分开部署master和slave
#arbiter裁决服务器是不会存储数据的可以随便部署在任意一台服务器中
#准备环境
yum -y install wget >/dev/null
#cd /opt/ && wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.6.tgz

#下载非交互式远程连接工具
yum -y install sshpass >/dev/null

sshpass -p "123456" scp /opt/mongodb-linux-x86_64-4.0.6.tgz  root@192.168.1.12:/opt

for i in 11 12
do
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "cd /opt && tar -xvf mongodb-linux-x86_64-4.0.6.tgz  -C /usr/local/ >/dev/null"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "mv /usr/local/mongodb-linux-x86_64-4.0.6/ /usr/local/mongodb"
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.$i "echo  export PATH=$PATH:/usr/local/mongodb/bin  >>  /etc/profile.d/mongodb.sh"
#完成后执行一下刷新即可source /etc/profile

done

#创建master数据存放目录
mkdir -p /opt/data/mongodb/master/{db,log,pid}
#创建 slave的存放目录
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 " mkdir -p /opt/data/mongodb/slave/{db,log,pid}"
#创建 arbiter的存放目录
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "mkdir -p /opt/data/mongodb/arbiter/{db,log,pid}"


# 11 服务器配置master服务

#创建master的配置文件
echo '
#master.conf
#数据目录
dbpath=/opt/data/mongodb/master/db
#日志目录
logpath=/opt/data/mongodb/master/log/master.log
#pid文件
pidfilepath=/opt/data/mongodb/master/pid/master.pid

#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key

#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定的端口
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-master.conf



##配置 “slave”
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "echo '
#slave.conf
#数据目录
dbpath=/opt/data/mongodb/slave/db
#日志目录
logpath=/opt/data/mongodb/slave/log/slave.log
#pid文件
pidfilepath=/opt/data/mongodb/slave/pid/slave.pid

#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key

#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-slave.conf"


##配置裁决arbiter

#创建arbiter的配置文件
sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "echo '
#arbiter.conf
#数据目录
dbpath=/opt/data/mongodb/arbiter/db
#日志目录
logpath=/opt/data/mongodb/arbiter/log/arbiter.log
#pid文件
pidfilepath=/opt/data/mongodb/arbiter/pid/arbiter.pid

#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=/opt/mongodb/mongodb.key

#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27018
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > /etc/mongodb-arbiter.conf"



#启动服务
echo "启动master,slave,arbiter,服务"
/usr/local/mongodb/bin/mongod -f /etc/mongodb-master.conf >/dev/null

sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "/usr/local/mongodb/bin/mongod -f /etc/mongodb-slave.conf >/dev/null"

sshpass -p "123456" ssh -o StrictHostKeyChecking=no root@192.168.1.12 "/usr/local/mongodb/bin/mongod -f /etc/mongodb-arbiter.conf >/dev/null"


sleep 2


#开始配置replica set 副本集
echo "现在配置replica set 副本集"

Mongodb='/usr/local/mongodb/bin/mongo'
$Mongodb <<EOF
use admin
cfg={
        "_id" : "testdb",
        "members" : [
                {
                        "_id" : 0,
                        "host" : "192.168.1.11:27017",
                        "priority" : 2
                },
                {
                        "_id" : 1,
                        "host" : "192.168.1.12:27017",
                        "priority" : 1
                },
                {
                        "_id" : 2,
                        "host" : "192.168.1.12:27018",
                        "arbiterOnly" : true
                }
        ]
}
rs.initiate(cfg)
rs.status()
exit;
EOF 
sleep 2
echo ”到此mongodb-replica set 部署完毕,如此就不会引发mongodb的路由回旋“

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值