MongoDB迁移方案-冷备份+增量备份恢复--跨机房迁移

  1. 云栖社区>
  2. 博客>
  3. 正文

MongoDB迁移方案-冷备份+增量备份恢复--跨机房迁移

茅草屋11 2016-10-11 15:12:28 浏览3566
展开阅读全文

QQ群:465614686 

  1. 1.  环境构建步骤

(1)线上环境

都是副本集模式 3个业务访问节点+1个隐藏节点 (隐藏节点做hadoopspark数据同步使用以及数据报表查询等)

(2)主机以及配置说明

  1. 10.21.18.21  primary节点    优先级为100

  2. 10.21.18.22  secondary节点  优先级为90

  3. 10.21.18.23  secondary节点  优先级为80

  4. 10.21.18.24  隐藏节点       优先级为0

系统配置:128G内存,64Core CPU2TB SSD硬盘

(3)MongoDB版本

percona-server-mongodb-3.0.12-1.8

(4)数据量

目前该副本集数据量为1.3TB

单个集合最大数据量目前为6.7亿+,超过5亿+的集合有11张,超过2亿+的集合有27个;

没有做sharding集群,副本集支撑现有业务;

(5)参数配置

几台服务器配置完全一样

vim mguserinfo.conf

# fordocumentation of all options, see:

#  http://docs.mongodb.org/manual/reference/configuration-options/


# where to writelogging data.

systemLog:

  destination: file

  logAppend: true

  logRotate: reopen

  path: /data/users/mgousr01/mongodb/logs/userinfo01.log


# Where and howto store data.

storage:

  dbPath: /data/users/mgousr01/mongodb/dbdata

  journal:

    enabled: true

  directoryPerDB: true

  engine: wiredTiger

#########storage.wiredTigerOptions

  wiredTiger:

    engineConfig:

      cacheSizeGB: 64

      directoryForIndexes: true

    indexConfig:

      prefixCompression: true


##########operationProfilingOptions

operationProfiling:

   slowOpThresholdMs: 50

   mode: "all"


########ProcessManagementOptions

processManagement:

  fork: true

  pidFilePath:/data/users/mgousr01/mongodb/dbdata/userinfo01.pid


# networkinterfaces

net:

  port: 28010

  #bindIp:

  maxIncomingConnections: 27600

security:

  keyFile:/data/users/mgousr01/mongodb/etc/keyFile/keyFilers0.key


#operationProfiling:


##########replicationOptions

replication:

  replSetName: userRS

  oplogSizeMB: 95360

  secondaryIndexPrefetch: all


#sharding:

  #clusterRole: shardsvr    #configsvr or shardsvr


##Enterprise-Only Options


#auditLog:


#snmp:


setParameter:

  enableLocalhostAuthBypass: true

  #replWriterThreadCount: 32

  #wiredTigerConcurrentReadTransactions: 1000

    #wiredTigerConcurrentWriteTransactions: 1000

注意说明

keyFilers0.key表示认证文件,需要自己生成;权限为 600 否则启动失败,几台key也都是一样。

先将securitykeyFile参数注释,待如下(6)(7)(8)操作完毕后,在将securitykeyFile参数注释去掉即可

(6)启动

mongod –f mguserinfo.conf

(7)配置副本集的方法

a.  登陆10.21.18.21主机操作

>config={_id:"userRS",members:[{_id:1,host:"10.21.18.21:28010",priority:100,tags:{'use':'usersinfo-01-312'}}]}

> rs.initiate(config)

b.  添加节点

userRS:PRIMARY> rs.add({_id:2,host:"10.21.18.22:28010", priority:90,tags:{'use':'usersinfo-02-312'}})

userRS:PRIMARY>rs.add({_id:3, host:"10.21.18.23:28010", priority:80,tags:{'use':'usersinfo-03-312'}})

userRS:PRIMARY>rs.add({_id:5, host:"10.21.18.24:28010", priority:0,hidden:true,tags:{'use':'usersinfo-03-312-hidden'}})

(8)创建用户

use admin

db.createUser( 

    user: "admin", 

    pwd: "123456", 

    roles: 

    [ 

      {role: "userAdminAnyDatabase",db: "admin"},

      { role: "readAnyDatabase", db:"admin" },

      { role: "dbOwner", db:"admin" },

      { role: "userAdmin", db:"admin" },

      { role: "root", db: "admin"},

      { role: "clusterMonitor", db:"admin" },

      { role: "dbAdmin", db:"admin" },

    ] 

  } 

)

用户名为admin,密码为123456

  1. 2.  如何实现增量备份

(1)上述环境是我们线上的生产环境

(2)将其中一个secondary节点关闭

我选择了10.21.18.22:28010主机节点

a.  登陆主节点操作如下

rs.remove("10.21.18.22:28010");

从现有集群中移除该节点

b.  shutdownmongod进程

登陆10.21.18.22主机mongod进程shutdown

mongod –f mguserinfo.conf --shutdown

(3)参数调整

10.21.18.22:28010该节点参数中的replSetNamekeyfile以及security注释,并启动到单节点模式(以减少应用业务访问或者链接没有释放的线程,选择了业务最低峰凌晨3点操作,如果不及时操作的话,将该节点设置为隐藏节点即可,然后在进行后续操作)

启动:

mongod –f mguserinfo.conf

(4)登陆到该节点做如下操作

a.  mongo10.21.18.22:28010

> use admin

>db.system.version.find()

{ "_id" : "authSchema", "currentVersion" :5 }

b.  当前认证级别为5,将其修改为3

>db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} })

c.  重启

10.21.18.22:28010该节点参数中的replSetNamekeyfile以及security注释去掉;启动即可

mongod –f mguserinfo.conf –shutdown

mongod–f mguserinfo.conf

这样该节点又加入到该集群中

(5)切换primary节点

切换现有primary节点到10.21.18.22secondary主机

a.  调整优先级

10.21.18.21主机mongodb primary节点的优先级修改为85即可

b.  操作命令

cfg =rs.conf()

cfg.members[1].priority= 85

rs.reconfig(cfg)

网友评论

登录后评论
0/500
评论
茅草屋11
+ 关注