MongoDB-replicaset模式部署,Windows单机版

环境

MongoDB 4.x

步骤

  • 下载、安装
    地址:https://www.mongodb.com/download-center/community 截至目前,最新版本为4.0.5
    解压下载的安装包(zip),建立如下目录环境(非必须,可根据实际情况自行调整)
    在这里插入图片描述
    在replicaset目录下建立如下三个配置文件,分别用来表示主机、次主机的配置。
    在这里插入图片描述
    文件内容如下:(需要修改的地方有N处,尤其注意端口号和路径,搜#@标记)

#系统日志配置
systemLog:
    destination: file
    #@
    path: log/mongodb/mongod_primary.log
    logAppend: true
    #quiet模式运行,建议设置为false,方便排查错误
    quiet: false
 
#进程管理
processManagement:
    #进程后台运行
    #fork: false
    #进程pid文件#@
    pidFilePath: log/mongodb/mongod_primary.pid
 
#网络配置
net:
    #监听端口#@
    port: 27018
    #监听网卡 多个使用英文逗号隔开
    bindIp: 127.0.0.1
    #最大并发连接数 默认65535
    maxIncomingConnections: 65535
    #验证客户端传过来的数据,文档嵌套多时,对性能会有些影响
    wireObjectCheck: true
    #是否启用ipv6,默认不启用
    ipv6: true
    #unixDomainSocket:
        #是否启用socket监听 默认true
        #enabled: true
        #socket保存目录,默认/tmp
        #pathPrefix: log/mongodb
        #socket文件权限,默认0700
        #filePermissions: 0700
    #http:
        #是否启用http服务,默认false,安全考虑线上环境要关闭
        #enabled: false
        #是否启用http jsonp,默认false,即使http.enabled为false,只要此项为true,一样可以访问,安全考虑线上环境要关闭
        #JSONPEnabled: false
        #是否启用rest api接口,默认false,安全考虑线上环境要关闭
        #RESTInterfaceEnabled: false
    compression:
        #是否启用数据压缩
        compressors: snappy
 
#安全配置
security:
    #type:string
    #密钥路径,副本集和分片集群节点间授权时使用的密钥
    keyFile: log/mongodb/.replSetTest0Key
 
    #type:string
    #集群授权模式,默认keyFile,值列表:keyFile,sendKeyFile,sendX509,x509
    clusterAuthMode: keyFile
 
    #type:string
    #是否开启数据库访问RBAC权限控制,默认:disabled,仅对mongod命令有效
    authorization: enabled
 
    #type:boolean
    #是否开启服端js执行,默认true,如果未开启$where,group,mapreduce都不能使用
    javascriptEnabled: true
 
#存储配置
storage:
    #type:string
    #数据库数据存储目录,默认/data/db #@
    dbPath: data/mongodb/primary
 
    #type:boolean
    #启动时是否尝试重建索引,默认true
    #indexBuildRetry: false
 
    #journal日志
    journal:
        #type:boolean
        #Enable or disable the durability journal to ensure data files remain valid and recoverable.
        enabled: true
 
        #type:int
        #日志同步间隔,Values can range from 1 to 500 milliseconds.
        commitIntervalMs: 100
 
    #type:boolean
    #是否开启一数据库一目录,默认是false
    directoryPerDB: false
 
    #type:int
    #数据落地时间间隔,默认为60秒,不能设置为0,一般使用默认值即可
    syncPeriodSecs: 60
 
    #type:string
    ##存储引擎,默认wiredTiger,可选值 mmapv1,wiredTiger,inMemory
    engine: wiredTiger
 
    wiredTiger:
        engineConfig:
            #type:float
            #单个实例可用的数据缓存内存大小,version >= 3.4默认:50% of RAM minus 1 GB, or 256 MB.
            cacheSizeGB: 0.25
 
            #type:string
            #WiredTiger journal数据压缩格式,默认snappy,可用的压缩类型: none, snappy, zlib
            journalCompressor: snappy
 
            #type:boolean
            #索引文件分目录存储,默认false,version >= 3.0后版本可用
            directoryForIndexes: false
        collectionConfig:
            #type:string
            #块数据压缩格式,默认snappy,可用的压缩类型:none, snappy, zlib
            blockCompressor: snappy
        indexConfig:
            #type:boolean
            #是否开启索引prefix compression,默认true
            prefixCompression: true #是否开启索引prefix compression,默认true
 
#operationProfiling操作性能分析
operationProfiling:
    #type:int
    #慢查询时间单位毫秒,默认100,如果开启了profile,日志会保存到system.profile集合中
    slowOpThresholdMs: 100
 
    #type:string
    #性能分析模式,开启会影响性能,谨慎操作。默认off.
    #可选值1:off: Off. No profiling.
    #可选值2: slowOp:On. Only includes slow operations.
    #可选值3: all:On. Includes all operations.
    mode: slowOp
 
#replication复制配置
replication:
    #type:int
    #数字类型(单位M) replication op log 大小,64位系统默认为可用磁盘的5%
    oplogSizeMB: 512
 
    #type:string
    #所属replica set集群名称
    replSetName: replSetTest0
 
#setParameter配置
setParameter:
    enableLocalhostAuthBypass: false

生成fileKey:
openssl rand -base64 745 > log/mongodb/.replSetTest0Key

  • 关闭认证,配置集群
    先把三个config文件中的security节注释掉,依次启动三个MongoDB实例,以无认证的方式启动。
    在主机上(我的是27018):
rs.initiate(
   {
      _id: "replSetTest0",
      version: 1,
      members: [
         { _id: 0, host : "127.0.0.1:27018" },
         { _id: 1, host : "127.0.0.1:27019" },
         { _id: 2, host : "127.0.0.1:27020" }
      ]
   }
)

在次机上(我的是27019、27020):

rs.slaveOk()
  • 新建管理员用户(不必需,用户名、密码记得改改,后面的角色和数据库保持不变)
db.createUser({user:"admin", pwd:"admin", roles:[{role:"root", db:"admin"}]})
  • 开启认证,部署业务环境
    退出刚才启动三个实例,取消刚才的刚才注释的security节,重新启动3个instance
    此时,如果不认证的话,应该是无法使用诸如rs.status()db.createCollecion()这样的方法的,会提示鉴权错误。
    使用:
    use admin
    db.auth(“admin”, “admin”)
    输出1则为认证成功
    之后rs.status()试一下:
    在这里插入图片描述
    部署业务环境:
    之后就不用多说了,创建一个col,再给他个用户,db.createUser({ user: "rc", pwd: "rc", roles: [{ role: "dbOwner", db: "rc" }] }) ,之后退出cli,用新用户登录即可。

暂时先记录这么点。后续再追加。

配置文件参考自http://www.cnblogs.com/wadeyu/p/7930608.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章