当前位置:u赢电竞手机版 > uwin电竞app官网下载 > MongoDB 副本集复制uwin电竞app官网下载

MongoDB 副本集复制uwin电竞app官网下载

文章作者:uwin电竞app官网下载 上传时间:2019-05-14

MongoDB是当下比较流行的NoSQL 数据库.提供了副本集复制应对数据的可扩展性,可靠性及提供了隔离性. 下面讲讲一般情况下的副本集复制的配置。

规划:

1.环境

replSet 复制集名称: rs1

Centos 7
MongoDB 3.6

MongoDB数据库安装安装路径为:/usr/local/mongodb/

2.机器配置

复制集成员IP与端口:

IP hostname port path is arbiter

192.168.11.100 mongodbr0 27017 /data/replset1/r0 false
192.168.11.101 mongodbr1 27017 /data/replset1/r1 false
192.168.11.102 mongodbr2 27017 /data/replset1/r2 true

3.配置步骤
3.1 开放端口或关闭防火墙
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
3.2 在每台机器上建立对应的目录
mkdir -p /data/replset1/r0|r1|r2 ##不同的机器对应不同的目录,参考第二部分的path
mkdir -p /data/replset1/key
mkdir -p /data/replset1/log

修改每台机器的hosts
vi /etc/hosts 并添加如下内容

192.168.11.100 mongodbr0
192.168.11.101 mongodbr1
192.168.11.102 mongodbr2

3.3 复制MongoDB安装包到每台机器上,并解压
例如本例子解压到 /usr/local/mongodb
3.4 初始化复制集
进入到每个机器的 /usr/local/mongodb/bin/
分别执行如下的命令
./mongod --port 27017 --dbpath /data/replset1/r0 --logpath /data/replset1/log/r0.log --logappnd --fork --bind_id localhost,192.168.11.100 --replSet replset1

./mongod --port 27017 --dbpath /data/replset1/r1 --logpath /data/replset1/log/r1.log --logappnd --fork --bind_id localhost,192.168.11.101 --replSet replset1

./mongod --port 27017 --dbpath /data/replset1/r2 --logpath /data/replset1/log/r2.log --logappnd --fork --bind_id localhost,192.168.11.102 --replSet replset1

注意: --bind_id 一定要指明绑定的IP,因为每台机器可能有多个IP,所以要一定有这个参数,否则可能会报错

3.5 开始复制
进入任意一台机器,以 mongodbr0为例
3.5.1
/usr/local/mongodb/bin/mongo --port 27017
3.5.2
a.运行 rs.initiate()
b.运行 rs.add("mongodbr1:27017")
c.运行 rs.addArb("mongodbr2:27017") #仲裁集

至此,复制集配置完成

3.6 测试
3.6.1 测试数据复制
a.进入mongodbr0 ,运行 /usr/local/mongodb/bin/mongo --port 27017
b.默认是进入 test
c.插入新的数据 e.g. db.foo.insert({"name":"zhangshan","gender":"Male","age":"20","address":"suzhou"})
d.进入mongodbr1,运行 /usr/local/mongodb/bin/mongo --port 27017
e.由于r1 是secondary,所以不能直接访问数据,需要运行 rs.slaveOk() 或 db.getMongo().setSlaveOk()
f.执行 db.foo.find(); 刚才插入的数据会显示在这里
3.6.2 故障迁移测试
a.进入mongodbr0 ,运行 /usr/local/mongodb/bin/mongo --port 27017
b.执行 use admin 进入admin
c.执行 db.shutdownServer()
d.进入mongodbr1,运行 /usr/local/mongodb/bin/mongo --port 27017
e.这时候会发现这台已经变成primary 了 replset1:PRIMARY 

 

节点1: localhost:28010   (默认的primary节点)

节点2: localhost:20811

节点3: localhost:28012

复制集各节点的数据文件,日志文件,私钥文件路径:

节点1: /data/data/r0  , /data/log/r0.log , /data/key/r0

节点2: /data/data/r1  , /data/log/r1.log , /data/key/r1

节点3: /data/data/r2  , /data/log/r2.log , /data/key/r2

 

$ wget

--2016-07-22 11:17:12-- 

Resolving fastdl.mongodb.org (fastdl.mongodb.org)... 54.182.5.247, 54.182.5.9, 54.182.5.45, ...

Connecting to fastdl.mongodb.org (fastdl.mongodb.org)|54.182.5.247|:443... connected.

HTTP request sent, awaiting response... 200 OK

Length: 71943658 (69M) [application/x-gzip]

Saving to: ‘mongodb-linux-x86_64-rhel70-3.2.8.tgz’

 

100%[===============================================================================>] 71,943,658   116KB/s   in 16m 37s

 

2016-07-22 11:33:51 (70.5 KB/s) - ‘mongodb-linux-x86_64-rhel70-3.2.8.tgz’ saved [71943658/71943658]

 

$tar zxvf mongodb-linux-x86_64-rhel70-3.2.8.tgz -C /usr/local/

$mv mongodb-linux-x86_64-rhel70-3.2.8 mongodb

1) 创建数据文件存储路径

[root@node222 mongodb]# mkdir -p /data02/mongors/data/r0

[root@node222 mongodb]# mkdir -p /data02/mongors/data/r1

[root@node222 mongodb]# mkdir -p /data02/mongors/data/r2

 

 

2)创建日志文件路径

[root@node222 mongodb]# mkdir -p /data02/mongors/log

 

3)创建主从key文件

用于标识集群的私钥的完整路径,如果各个实例的key file内容不一致,程序将不能正常使用

[root@node222 mongodb]# mkdir -p /data02/mongors/key

[root@node222 mongodb]# echo "this is rs1  key" > /data02/mongors/key/r0

[root@node222 mongodb]# echo "this is rs1  key" > /data02/mongors/key/r1

[root@node222 mongodb]# echo "this is rs1  key" > /data02/mongors/key/r2

[root@node222 mongodb]# chmod 600 /data02/mongors/key/r*

 

4)启动3个实例

依次添加启动参数,其中三个MongoDB实例:

[root@node222 mongodb]# /usr/local/mongodb/bin/mongod --replSet rs1 --keyFile /data02/mongors/key/r0 --fork --port 28010 --dbpath /data02/mongors/data/r0 --logpath=/data02/mongors/log/r0.log --logappend

about to fork child process, waiting until server is ready for connections.

forked process: 16629

child process started successfully, parent exiting

[root@node222 mongodb]# /usr/local/mongodb/bin/mongod --replSet rs1 --keyFile /data02/mongors/key/r1 --fork --port 28011 --dbpath /data02/mongors/data/r1 --logpath=/data02/mongors/log/r1.log --logappend

about to fork child process, waiting until server is ready for connections.

forked process: 16666

child process started successfully, parent exiting

[root@node222 mongodb]# /usr/local/mongodb/bin/mongod --replSet rs1 --keyFile /data02/mongors/key/r2 --fork --port 28012 --dbpath /data02/mongors/data/r2 --logpath=/data02/mongors/log/r2.log --logappend

about to fork child process, waiting until server is ready for connections.

forked process: 16703

child process started successfully, parent exiting

[root@node222 mongodb]#

 

注:启动命令的参数分别为,mongod为主启动命令, replSet指定复制集名称为rs1,keyfile指定公钥文件 ,fork指定启动方式为deamo后台启动;port指定端口号,dbpath指定数据文件目录,logpath指定日志文件,logappend指定错误日志为日志追加模式;

 

通过进程和端口,验证启动状态

[root@node222 mongodb]# ps -ef|grep mongo

root     16629     1  0 17:36 ?        00:00:00 /usr/local/mongodb/bin/mongod --replSet rs1 --keyFile /data02/mongors/key/r0 --fork --port 28010 --dbpath /data02/mongors/data/r0 --logpath=/data02/mongors/log/r0.log --logappend

root     16666     1  0 17:36 ?        00:00:00 /usr/local/mongodb/bin/mongod --replSet rs1 --keyFile /data02/mongors/key/r1 --fork --port 28011 --dbpath /data02/mongors/data/r1 --logpath=/data02/mongors/log/r1.log --logappend

root     16703     1  0 17:36 ?        00:00:00 /usr/local/mongodb/bin/mongod --replSet rs1 --keyFile /data02/mongors/key/r2 --fork --port 28012 --dbpath /data02/mongors/data/r2 --logpath=/data02/mongors/log/r2.log --logappend

root     16739 12972  0 17:37 pts/1    00:00:00 grep --color=auto mongo

 

[root@node222 mongodb]# netstat -tunlp |grep mong

tcp        0      0 0.0.0.0:28010           0.0.0.0:*               LISTEN      16629/mongod       

tcp        0      0 0.0.0.0:28011           0.0.0.0:*               LISTEN      16666/mongod       

tcp        0      0 0.0.0.0:28012           0.0.0.0:*               LISTEN      16703/mongod       

[root@node222 mongodb]#

 

5)配置及初始化 Replica Sets

登录到primary服务器上:

# /usr/local/mongodb/bin/mongo -port 28010

配置复制集:

> config = {_id: 'rs1', members: [

                           {_id: 0, host: 'localhost:28010',priority:1},

                           {_id: 1, host: 'localhost:28011'},

                           {_id: 2, host: 'localhost:28012'}]

            }

初始化配置,使上面的配置生效:

>  rs.initiate(config);

6)查看复制集状态

> rs.status()

在primary节点上查看复制集状态:

> rs.isMaster()

 

可以再primary节点进行各种添删改查等各种数据操作,其他非master节点不能进行各种数据操作,也不能发起复制集修改命令

 

过程如下:(securecrt执行时候总是会复制一下回显)

[root@node222 mongodb]#  /usr/local/mongodb/bin/mongo -port 28010

MongoDB shell version: 3.2.8

connecting to: 127.0.0.1:28010/test

> use adminduse admind

switched to db admind

> use adminuse admin

switched to db admin

> config = {_id: 'rs1', members: [config = {_id: 'rs1', members: [

...              {_id: 0, host: 'localhost:28010',priority:1},             {_id: 0, host: 'localhost:28010',priority:1},

...              {_id: 1, host: 'localhost:28011'},             {_id: 1, host: 'localhost:28011'},

...              {_id: 2, host: 'localhost:28012'}]             {_id: 2, host: 'localhost:28012'}]

...       }      }

{

        "_id" : "rs1",

        "members" : [

本文由u赢电竞手机版发布于uwin电竞app官网下载,转载请注明出处:MongoDB 副本集复制uwin电竞app官网下载

关键词: MongoDB