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

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

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)

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1月前
|
SQL DataWorks NoSQL
DataWorks报错问题之datax mongodb全量迁移报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
7月前
|
存储 NoSQL 自动驾驶
MongoDB在自动驾驶场景方案及最佳实践
MongoDB在自动驾驶场景方案及最佳实践
316 1
|
7月前
|
监控 NoSQL 安全
MongoDB在游戏行业方案介绍及最佳实践
MongoDB在游戏行业方案介绍及最佳实践
497 1
|
7月前
|
数据采集 NoSQL 容灾
如何实现MongoDB数据的快速迁移?
为解决用户面临的 MongoDB 迁移问题,玖章算术旗下的云原生智能数据管理平台 NineData 推出了 MongoDB 业务不停服数据迁移能力。NineData 实现了完全自动化的全量数据迁移,以及增量数据的采集复制能力。
|
8月前
|
存储 NoSQL Java
|
11月前
|
存储 NoSQL Oracle
「数据库选型」卫报从MongoDB迁移到Amazon RDS上的PostgreSQL
「数据库选型」卫报从MongoDB迁移到Amazon RDS上的PostgreSQL
|
11月前
|
存储 JSON NoSQL
「文档数据库迁移」从MongoDB迁移到Apache CouchDB
「文档数据库迁移」从MongoDB迁移到Apache CouchDB
|
存储 JSON 自然语言处理
Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案
书接上回,之前有一篇文章提到了标签云系统的构建:[Python3.7+jieba(结巴分词)配合Wordcloud2.js来构造网站标签云(关键词集合)](https://v3u.cn/a_id_138),但是这篇只是浅显的说明了一下如何进行切词以及前端如何使用wordcloud2.js进行前端展示,本次主要讨论下标签分词切出来之后,如何进行存储。
Python3.7+Django2.0.4配合Mongodb打造高性能高扩展标签云存储方案
|
NoSQL MongoDB
MongoDB Database Tools 安装实现备份、恢复
MongoDB Database Tools 安装实现备份、恢复
329 0