mongo副本集一主两从读写分离部署

#mongodb 副本集部署
mongodb_0--->3717
mongodb_1--->3718
mongodb_2--->3719


wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.24.tgz


mkdir -p /data/mongodb-cluster

tar xf mongodb-linux-x86_64-rhel70-4.2.24.tgz
cp -ar mongodb-linux-x86_64-rhel70-4.2.24 /data/mongodb-cluster/mongodb_0
cp -ar mongodb-linux-x86_64-rhel70-4.2.24 /data/mongodb-cluster/mongodb_1
cp -ar mongodb-linux-x86_64-rhel70-4.2.24 /data/mongodb-cluster/mongodb_2

#创建目录

cd /data/mongodb-cluster/mongodb_0
mkdir -p $PWD/{data,logs,key,conf,pid}

cd /data/mongodb-cluster/mongodb_1
mkdir -p $PWD/{data,logs,key,conf,pid}

cd /data/mongodb-cluster/mongodb_2
mkdir -p $PWD/{data,logs,key,conf,pid}

#创建key

cd /data/mongodb-cluster/mongodb_0
openssl rand -base64 756 > ./key/mongo.key
chmod 400 ./key/mongo.key
cp -ar ./key/mongo.key ../mongodb_1/key/
cp -ar ./key/mongo.key ../mongodb_2/key/


#编辑配置文件
cd /data/mongodb-cluster/mongodb_0

#新建配置文件,拷贝到其他2个节点并修改端口和目录
cat > /data/mongodb-cluster/mongodb_0/conf/mongod.conf << EOF
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb-cluster/mongodb_0/logs/mongod.log

storage:
  dbPath: /data/mongodb-cluster/mongodb_0/data
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /data/mongodb-cluster/mongodb_0/pid/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
net:
  port: 3717
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.


security:
  clusterAuthMode: keyFile
  keyFile: /data/mongodb-cluster/mongodb_0/key/mongo.key
  authorization: enabled

#operationProfiling:

replication:
  replSetName: mongodb_cluster
EOF

cp conf/mongod.conf ../mongodb_1/conf/
cp conf/mongod.conf ../mongodb_2/conf/

#启动服务

/data/mongodb-cluster/mongodb_0/bin/mongod -f /data/mongodb-cluster/mongodb_0/conf/mongod.conf --auth --maxConns=20000
/data/mongodb-cluster/mongodb_1/bin/mongod -f /data/mongodb-cluster/mongodb_1/conf/mongod.conf --auth --maxConns=20000
/data/mongodb-cluster/mongodb_2/bin/mongod -f /data/mongodb-cluster/mongodb_2/conf/mongod.conf --auth --maxConns=20000

#在第一个节点配置副本集

./bin/mongo 127.0.0.1:3717 --eval "
  rs.initiate(
    {
      _id : 'mongodb_cluster',
      members: [
        { _id : 0, host : \"192.168.20.100:3717\" },
        { _id : 1,  host : \"192.168.20.100:3718\" },
        { _id : 2, host : \"192.168.20.100:3719\" }
      ]
    }
  )
  "

#在主节点上初始化密码root

./bin/mongo 127.0.0.1:3717
use admin
db.createUser(
  {
    user: "root",
    pwd: "xxxxxxx",
    roles: [ { role: "root", db: "admin" } ]
  }
)

#登录测试

./bin/mongo --host 192.168.20.100 --port 3718 -u root -p xxxxxxx --authenticationDatabase admin

#客户端连接uri

mongodb://root:****@192.168.20.100:3717,192.168.20.100:3718,192.168.20.100:3719/admin?readPreference=secondary&replicaSet=mongodb_cluster

#mongodb日常命令

#临时开启从节点读
rs.secondaryOk();

#查看主从同步状态
db.printSlaveReplicationInfo();

#查看集群状态
rs.status()


#开启从节点读---重新登录生效
echo "rs.secondaryOk();" > $HOME/.mongorc.js

#客户端连接uri
mongodb://root:****@192.168.20.100:3717,192.168.20.100:3718,192.168.20.100:3719/admin?readPreference=secondary&replicaSet=mongodb_cluster


#查看所有库
show dbs

#创建和删除库
use test		#如果database不存在,则创建database,否则切换到指定database
db.test.insert({"age": 18})			#插入test表一条数据

use test_db
db.dropDatabase() 	#如果没有选择任何数据库,那么它将删除默认的“test”数据库

#查看一下所有的用户
use admin
db.system.users.find();

#查看当前库的用户
use xxxx
db.getUsers()


#创建用户---role角色
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限


##创建账号
db.getSiblingDB("test").createUser(
  {
    user: "user",
    pwd: "xxxxxx",
    roles: [ { role: "readWrite", db: "test" } ]
  }
)

#创建监控账号密码
db.getSiblingDB("admin").createUser({
    user: "mongodb_exporter",
    pwd: "PERBmYopmnt900",
    roles: [
        { role: "clusterMonitor", db: "admin" },
        { role: "read", db: "local" }
    ]
})


#给一个用户授权多个数据库,需要进入到admin数据库授权多个数据库给同一个用户
use admin
db.createUser(
	{
		user: "user",
		pwd: "xxxx",
		roles: [
			{ role: "dbAdmin", db: "admin" },
			{ role: "read", db: "db1" },
			{ role: "read", db: "db2" }
		]
	}
)

#修改用户密码
use db
db.changeUserPassword('user_prod','xxxx'); 

#更新用户
db.updateUser(
"root",
        {
           roles : [
                     {"role" : "userAdminAnyDatabase","db" : "admin"},
                     {"role" : "dbOwner","db" : "admin"},
                     {"role" : "clusterAdmin", "db": "admin"},
                     {"role" : "readAnyDatabase", "db": "admin"},
                   ]
        }
)


#删除用户
db.dropUser("用户名")



##新增节点
rs.add("192.168.20.104:3717")


##安全停止数据库
/data/mongodb/bin/mongod -dbpath /data/mongodb/data --shutdown




#备份导出
./mongodump -h x.x.x.x --port 3717 -u user -p xxxx -d test -o /data/mongo_backup

#root权限备份-d 指定库,不写导入所有
/data/mongodb/bin/mongodump -h xxxx --port 3717 -u root -p 'xxxx' --authenticationDatabase admin -d db1 -o /alidata/mongodb/tmp

#恢复导入
./mongorestore -h x.x.x.x --port 3717 -u user -p xxxx -d test --drop /data/mongo_backup/test




 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值