博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mongoDB副本集的搭建
阅读量:5976 次
发布时间:2019-06-20

本文共 3207 字,大约阅读时间需要 10 分钟。

环境简介

    192.168.1.151      FedoraServer   用作副本集的主库,已经有数据

    192.168.1.152      FedoraServer   从库,空实例

    192.168.1.153      FedoraServer   从库,空实例

MongoDB的副本集和MySQL基于GTID的多源三实例循环主从即

  

但:相对与MySQL的基于Keepalive或者MHA等第三方插件来实现切换或选主,mongodb自带故障转移与切换选主功能,这个产品很有高级感

搭建步骤

  1. mongodb安装:

1
     
Percona-Server-MongoDB-34-server

 2. mongodb配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
    
vim 
/etc/mongod
.conf
    
# mongod.conf, Percona Server for MongoDB
    
# for documentation of all options, see:
    
#      
    
#mongodb的配置有个特别之处:冒号“:”后面要加空格
    
# Where and how to store data.
    
storage:
      
dbPath: 
/data/mongo/27153/data/              
#指定mongodb文件存储位置
    
journal:
      
enabled: 
true
    
#  engine: mmapv1
    
#  engine: PerconaFT
    
#  engine: rocksdb
    
engine: wiredTiger         
#指定存储引擎,线虎引擎和Innodb有些相似,支持文档锁(行锁)
 
    
# Storage engine various options
    
#  mmapv1:
    
#  wiredTiger:
 
    
# where to write logging data.
    
systemLog:
      
quiet: 
true
      
destination: 
file
      
logAppend: 
true          
#日志采用追加的方式
      
path: 
/data/mongo/27153/log/mongod
.log       
#日志文件位置
 
    
processManagement:
      
fork: 
true               
#启动线程拉起主线程,与mysqld_safe进程有些相似
      
pidFilePath: 
/data/mongo/27153/mongod
.pid     
#PID文件位置
 
    
# network interfaces
    
net:
      
port: 27153              
#端口,默认27017
      
bindIp: 0.0.0.0          
#开放访问的IP范围
 
    
security:
      
authorization: enabled   
#开启验证,
      
keyFile: 
/data/mongo/mongodb
.key             
#使用key文件进行副本集之间的认证
    
#operationProfiling:
 
    
#replication:
    
replication:
      
replSetName: zrz         
#同步集的名称
    
#sharding:
 
    
## Enterprise-Only Options:
 
    
#auditLog:
 
#snmp:

 3.搭建过程:

  1.三台都关闭验证模式

 

1
2
3
4
5
 
vim 
/etc/mongod
.conf
 
注释掉验证相关的配置语句
 
#security:
 
#   authorization: enabled   #开启验证,
 
#     keyFile: /data/mongo/mongodb.key             #使用key文件进行副本集之间的认证

  2.启动服务:

 

1
mongod -f 
/etc/mongod
.conf

  3.在有数据的实例上登陆:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mongo --port 27151
 
mongo>config={
"_id"
:
"zrz"
,
"members"
:[{
"_id"
:1,host:
"192.168.1.151:27151"
,priority:100},
                                     
{
"_id"
:2,host:
"192.168.1.152:27152"
,priority:0}]}
       
//
定义配置到变量config中
       
//zrz
为群组名,priority为选主权重,越高越容易成为主(非故障情况下)
        
mongo>rs.initiate(config)
       
//
使用rs.initiate命令初始化副本集配置
 
mongo>rs.status
       
//
查看副本集配置
 
mongo>rs.add({
"_id"
:3,host:
"192.168.1.153:27153"
,priority:0})
       
//
使用另外一种方式增加副本集

  4.开启验证:

    为了安全起见,需要对MongoDB的访问增加验证:

    步骤1:对现在primary级别的实例进行增加用户  db.createUser()

    步骤2:关闭secondary级别的实例              mongod --shutdown -f /etc/mongod.conf

    步骤3:关闭primary级别的实例                

    步骤4:修改每个实例的配置文件,开启验证。配置账户或者分发密钥,

    步骤5:先开启最后关闭的primary实例,后开启各个secondary实例  

   跨实例之间的认证有两种方式:账户与口令 或者 使用SSL密钥

     其中:账户和口令只能在mongos分片的配置服务器上使用,实例之间通过config_server验证

           密钥文件,是通过通过openssl程序生成的base64字符串,具有相同字符串的可以同步

   生成方式:

1
       
openssl rand -base64 756 > 
/data/mongo/mongodb
.key

   变更key文件的属性,防修改:

1
       
chmod 
400 
/data/mongo/mongodb
.key

   分发给自己的小伙伴们:

1
2
       
scp 
/data/mongo/mongodb
.key 192.168.1.152:
/data/mongo/
       
scp 
/data/mongo/mongodb
.key 192.168.1.153:
/data/mongo/

   修改配置文件,指定密钥位置

1
2
3
4
5
       
vim 
/etc/mongod
.conf
        
      
security:
        
authorization: enabled   
#开启验证,
        
keyFile: 
/data/mongo/mongodb
.key             
#使用key文件进行副本集之间的认证

   按顺序开启服务就可以了

1
       
mongod -f 
/etc/mongo

常见错误及其解决方式:

 1.跨版本搭建副本集(3.0-3.4),MongoDB现在不支持

 2.从实例在加入副本集失败后,意外的产生了一些数据,导致无法被primary加入副本集

   处理方式:注释掉复制相关的配置文件,重启服务,即进入单机模式,使用db.dropDatabase()

            删除所有数据库,然后重新进入副本集启动模式既可

 3.提示已经有配置了,无法初始化,使用rs.reconfig(config{force:true})

4.使用rs.help()可以查看相关副本集的命令

密钥文件:

重新配置:

复制相关命令:https://docs.mongodb.com/manual/reference/method/js-replication/

 本文转自 angry_frog 51CTO博客,原文链接:http://blog.51cto.com/l0vesql/1973850

转载地址:http://hipox.baihongyu.com/

你可能感兴趣的文章
[J2ME]Nokia播放音乐时发生MediaException的解决办法
查看>>
【转】CSS 与 HTML5 响应式图片
查看>>
代码重构(五):继承关系重构规则
查看>>
redis.conf 配置档详解
查看>>
Windows App开发之集合控件与数据绑定
查看>>
五分钟创建一个自己的NPM包
查看>>
iOS多线程编程:线程同步总结 NSCondtion
查看>>
Flutter开发环境安装
查看>>
QQ登录的那些坑(如何开发qq登陆功能)
查看>>
中大型网站技术架构演变过程
查看>>
深入剖析OkHttp系列(五) 来自官方的事件机制
查看>>
Java 9 CompletableFuture 进化小脚步
查看>>
【前端词典】进阶必备的网络基础(下)
查看>>
ARTS训练第三周
查看>>
12月21日云栖精选夜读:阿里云总裁胡晓明:AI泡沫过后,下一站是“产业AI”...
查看>>
一出好戏不止是部电影,它也正接近你的生活。
查看>>
Angular 表单验证类库 ngx-validator 1.0 正式发布
查看>>
刨根问底——Handler
查看>>
H5活动刮刮卡功能的实现与注意事项
查看>>
搞定Go单元测试(三)—— 断言(testify)
查看>>