第三篇:出问题后重建副本集和用户

1、前言

线上应用出了问题之后,需要重建副本集。

2、修改配置文件

修改配置文件,将三台机器的配置文件上的副本集参数和认证参数去掉,如下:

#!/bin/bash
set -e
#############################################################################################################
docker run  -d -p 27017:27017 --name mongoserver --restart=always \
			-v /work_nosql/mongo/logs:/var/log/mongodb/ \
			-v /work_nosql/mongo/data:/data/db \
			-v /work_nosql/mongo/conf/mongod.conf:/etc/mongo/mongod.conf \
			-v /etc/timezone:/etc/timezone \
			-v /etc/localtime:/etc/localtime \
			-e MONGO_INITDB_ROOT_USERNAME=root \
			-e MONGO_INITDB_ROOT_PASSWORD=root \
			-h mongoserver harbor.neuqsoft.com/common/mongo:3.4.0\
			--config /etc/mongo/mongod.conf

然后将三台重新启动,删除db,并且重新配置副本集:

#每台机器均执行
>docker exec -it mongoserver /bin/bash
>mongo
>use admin
>db.dropDatabase()
>use local
>db.dropDatabase()
#在任意一台节点上进入mongoserver容器,不要在仲裁节点上进行:
>docker exec -it mongoserver /bin/bash
>mongo
>use admin
>cfg={
     
_id:“wssbreplset”,
members:[
{
     _id:0,host:‘172.30.2.223:27017’,priority:2},
{
     _id:1,host:‘172.30.2.133:27017’,priority:1},
{
     _id:4,host:‘172.30.2.225:27017’,arbiterOnly:true}
]
}; #备注: priority是优先级 优先级高的代表是主节点 arbiterOnly:true 表示仲裁节点
>rs.initiate(cfg) #初始化副本集

3、配置文件增加集群启动和认证

在–config /etc/mongo/mongod.conf\之前增加–replSet=wssbreplset
再增加认证:
-v /work_nosql/mongo/keyfile/keyfile.jks:/var/log/keyfile/keyfile.jks
–keyFile=/var/log/keyfile/keyfile.jks
如下:

set -e
#############################################################################################################
docker run  -d -p 27017:27017 --name mongoserver --restart=always \
			-v /work_nosql/mongo/logs:/var/log/mongodb/ \
			-v /work_nosql/mongo/data:/data/db \
			-v /work_nosql/mongo/conf/mongod.conf:/etc/mongo/mongod.conf \
			-v /work_nosql/mongo/keyfile/keyfile.jks:/var/log/keyfile/keyfile.jks \
			-v /etc/timezone:/etc/timezone \
			-v /etc/localtime:/etc/localtime \
			-e MONGO_INITDB_ROOT_USERNAME=root \
			-e MONGO_INITDB_ROOT_PASSWORD=root \
			-h mongoserver harbor.neuqsoft.com/common/mongo:3.4.0\
			--keyFile=/var/log/keyfile/keyfile.jks \
			--replSet=wssbreplset 
			--config /etc/mongo/mongod.conf

4、在主节点上重新创建用户

1、先创建管理用户
use admin
db.createUser( 
	{
      
		user:"admin",  
		pwd:"123456", 
		roles:[{
     role:"userAdminAnyDatabase",db:"admin"}]
	} 
);
db.auth('admin','123456')
db.createUser( 
	{
     
	 user: "root",
	 pwd: "123456",
	 roles: [{
     role:"root",db:"admin"}]
	}
 );
 2、创建业务用户
 use wssb
 db.createUser({
     user:"wssb_user",pwd:"wssb_user_2019",roles:[{
     role:"readWrite",db:"wssb"}]})
 db.auth('wssb_user','wssb_user_2019')

你可能感兴趣的:(mongoDB学习总结)