Mongodb-复制集架构搭建

Mongodb-复制集架构搭建_第1张图片

主从架构不考虑,现在基本没人用

Mongodb-复制集架构搭建_第2张图片

 

 

Mongodb-复制集架构搭建_第3张图片

 

复制集(ReplicaSet)架构

 

硬件需求:

至少需要三台机器,2台做主从,1台做仲裁(arbiter),最好不要将仲裁放在主从上(虽然可以)

这样当仲裁所在的服务器损坏,只要修复一下就可以,并不影响主从的使用

主从的配置要求:内存至少128G(一般都是256G),SSD硬盘或者pciessd

但这里实验环境没必要,只用2台机器就可以,仲裁放在主上

 

主机名+IP地址:

node1,192.168.2.239

node2,192.168.2.240

--注:这里将239做主,240做从,arbiter(仲裁)放在239上面

 

1、上传软件包到/root目录下并解压(实验需求,应该放在/usr/local/src下面),两台都要做

tar -xvzf mongodb-linux-x86_64-2.6.10.tg

 

2、创建目录,并创建一些子目录(binconfdatalogarbiterkey)命令、配置、数据、日志、仲裁、密钥,两台都要做,注:240不需创建arbiter

Mongodb-复制集架构搭建_第4张图片

3、将解压出来的软件包下面的bin目录下面的所有命令都拷贝到新建目录的bin目录下,两台都要做

 

Mongodb-复制集架构搭建_第5张图片

 

4239,进入到conf目录下,编辑主库和仲裁的配置文件

vim mongod.conf(编辑主库)

port=20011——————mongodb默认的端口号是27017,不要用这个,随便一个就行,5位的

dbpath=/export/mongodb/data————数据目录

logpath=/export/mongodb/log/mongod.log————日志目录

fork=true

keyFile=/export/mongodb/key/mongod————密钥,一样证明在一个集群里面

nohttpinterface=true————默认是27017,再加100,会开启一个网络端口,不让其开启,为了更加的安全

replSet=shard1————备份集的名称

 

vim arbiter.conf(编辑仲裁)

port=20012

dbpath=/export/mongodb/arbiter

logpath=/export/mongodb/log/arbiter.log

fork=true

logappend=true————追加日志

keyFile=/export/mongodb/key/arbiter

nohttpinterface=true

replSet=shard1

5239的主库mongodb和仲裁arbiter分配密钥并授权

 

Mongodb-复制集架构搭建_第6张图片

--注:密钥必须大于等于6位,分配的权限一定要是600

 

6240从库,进行1-5的操作(从库没有放仲裁,所以不用进行一些中仲裁操作)

 

 

7239启动mongodbarbiter(仲裁);240只启动mongodb就可以

 

主库启动mongodb

Mongodb-复制集架构搭建_第7张图片

主库启动仲裁

Mongodb-复制集架构搭建_第8张图片

主库查看进程

Mongodb-复制集架构搭建_第9张图片

从库启动mongodb

Mongodb-复制集架构搭建_第10张图片

 

!!!注意:如果启动的时候有以下报错:(查看log下的文件,看是什么报错)

 

一种错的解决方案:

cd /export/mongodb/data下将mongod.lock这个文件删了

8239240都登录到mongodb

9、配置复制集(主从都要配)

 

配置:

定义一个变量config,名字可以随便起

--注:_id后面的0,数字越小,优先级越高,0后面是101,那么101就是主,由0来决定,而不是由写的先后顺序

可以试一下,将id_0id_1的顺序修改一下,看有什么现象

 

config={_id:'shard1',members:[{_id:0,host:'192.168.2.239:20011'},{_id:1,host:'192.168.2.240:20011'},{_id:2,host:'192.168.2.239:20012',arbiterOnly:true}]}

Mongodb-复制集架构搭建_第11张图片

加载:(主库)

Mongodb-复制集架构搭建_第12张图片

rs.initiate(config)————应用变量

Mongodb-复制集架构搭建_第13张图片

"ok" : 1----ok是1,表示加载成功

敲击回车,就会看到239240的变化

239

240

主库239操作

Mongodb-复制集架构搭建_第14张图片

从库240操作

Mongodb-复制集架构搭建_第15张图片

报错是因为从库还未应用slave

Mongodb-复制集架构搭建_第16张图片

主库239插入一条数据

 

从库查看这张表,可以显示这条数据

主从切换测试

239主库正常关闭mongodb(必须在admin库下关闭)

shard1:PRIMARY> db.shutdownServer()————正常关闭(温柔的方式)

--注:可以尝试使用暴力一些的方式,直接关主机,再看看是否会切换到从库上

Mongodb-复制集架构搭建_第17张图片

[root@node2 bin]# ps -ef | grep mongo————mongod服务已经关闭

240会自动切换为主

Mongodb-复制集架构搭建_第18张图片

239启动并登陆mongodb239已经变为从了)

240降级,使239重新变为主库

 

shard1:PRIMARY> rs.stepDown()

Mongodb-复制集架构搭建_第19张图片

239重新为主库,240变回从库

239

240

--注意!(没有从升级,主降级以后从自动就升级了)

怎么看复制集的状态?

239主库

Mongodb-复制集架构搭建_第20张图片

"health" : 1,——————1,表示健康状态

"stateStr" : "PRIMARY",——————

"stateStr" : "SECONDARY",——————

"stateStr" : "ARBITER",——————仲裁

 

 

小知识:密钥是时刻变化的

[root@node2 bin]# cat /dev/urandom | LC_ALL=C tr -dc "[:alnum:]" | fold -w 10 | head -1

Mongodb-复制集架构搭建_第21张图片

你可能感兴趣的:(数据库运维)