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

QQ群:465614686 

  1. 1.  环境构建步骤

(1)线上环境

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

(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 CPU,2TB 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也都是一样。

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

(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该节点参数中的replSetName和keyfile以及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该节点参数中的replSetName和keyfile以及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)

时间: 2024-12-03 21:40:45

MongoDB迁移方案-冷备份+增量备份恢复--跨机房迁移的相关文章

MongoDB迁移的那些事:冷备份+增量备份恢复

作者介绍 胡国青,DBAplus社群群副,Oracle OCM10G.曾任职惠普.快乐购-芒果TV等公司服务,主要负责DBA和技术架构工作.热衷于Oracle.MySQL.MongoDB.Redis. Linux.Java.Python.shell等技术.目前服务于初创公司和没有DBA的部分公司,负责SQL优化.DB培训.DB架构设计等相关工作.   本文分享某客户实施方案,在今年9月中旬已经实施完毕.   一.环境构建步骤   1线上环境  都是副本集模式看,3个业务访问节点+1个隐藏节点+1

xtrabackup 增量备份 恢复

step 1: 全备 # innobackupex --defaults-file=/etc/my.cnf --no-timestamp /home/ssd/ali_backup/full_xtra_3306_20160826 --user root --password beijing --socket=/home/ssd/ali_data/my3306.sock 查看xtrabackup_checkpoints 文件 # more full_xtra_3306_20160826/xtraba

不同场景下 MySQL 的迁移方案

一 目录 一 目录 二 为什么要迁移 三 MySQL 迁移方案概览 四 MySQL 迁移实战 4.1 场景一 一主一从结构迁移从库 4.2 场景二 一主一从结构迁移指定库 4.3 场景三 一主一从结构双边迁移指定库 4.4 场景四 一主一从结构完整迁移主从 4.5 场景五 双主结构跨机房迁移 4.6 场景六 多实例跨机房迁移 五 注意事项 六 技巧 七 总结 二 为什么要迁移 MySQL 迁移是 DBA 日常维护中的一个工作.迁移,究其本义,无非是把实际存在的物体挪走,保证该物体的完整性以及延续

服务器和应用系统迁移方案

服务器和应用系统迁移方案 一.迁移方案总体思路 新旧系统的迁移是一个整体系统工程.迁移必须保证用户系统建设的相关要求,在迁移过程中,我们需要重点考虑几个问题: 1.数据迁移如何保障"业务中断停机时间".业务中断对用用户无论是生产环境还是测试环境均存在较大的恢复风险,这样的风险特别是对于时间敏感型数据还是对于数据完整性业务都是不可以接受的.我们基于这样的要求,考虑到如何将停机时间最小,能否实现0停机的建设目标? i. 对于服务器操作系统而言,我们可以采用P2V的方式,利用操作系统的Vol

MySQL中xtrabackup备份恢复全攻略

   XtraBackup是Percona推出的一款备份工具,算是对于mysqldump的一个补充.对于大批量数据的导入使用mysqldump会出现一定的瓶颈,这一点做过一些数据迁移项目的同学可能感同身受.   数据迁移中的数据量,小有小的好,大有大的招,见招拆招,找到适合的场景是最佳的.     如果现在去Percona官网下载,就会发现最新的版本已经是2.4.6了.下载可以选择一个完整的打包,或者逐个的rpm根据需求来安装也可以.完整的工具大概在60M左右.     而目前的MySQL版本大

使用xtrabackup对Mysql备份恢复

备份原理:XtraBackup基于InnoDB的crash-recovery功能.它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-recovery,使得数据恢复一致.InnoDB维护了一个redo log,又称为transaction log,事务日志,它包含了innodb数据的所有改动情况.XtraBackup在备份的时候, 一页一页地复制innodb的数据,而且不锁定表,与此同时,XtraBackup还有另外一个线程监视着trans

MySQL利用xtrabackup进行增量备份详细过程汇总

1,创建mysql备份用户 mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFIED BY '123456'"; mysql -uroot --password="" -e"GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, SUPERON *.* TO 'backup

MySQL 利用xtrabackup进行增量备份详细过程汇总

    Xtrabackup下载.安装以及全量备份请参考:http://blog.itpub.net/26230597/viewspace-1465772/ 1,创建mysql备份用户 mysql -uroot --password="" -e"CREATE USER 'backup'@'192.168.%' IDENTIFIED BY '123456'"; mysql -uroot --password="" -e"GRANT REL

中小型数据库 RMAN CATALOG 备份恢复方案(一)

        对于数据库的稳定性,高可用,跨平台以及海量数据库的处理,Oracle 数据库通常是大型数据库和大企业的首选.尽管如此,仍然不乏很多中小企业想要品尝一下Oracle腥味,因此在Oracle环境中也有不少中小型数据库.出于成本的考虑,通常有可能就搞个标准版了,跑在Linux上.谁叫Oracle太贵呢?对于中小企业而言,选择合理的才是最好的.对我们这些个搞DB的,贵的一定有贵的道理,我们也可以都进多几斗米.哈哈......典型的打工者的心态哟.言归正传,中小企业的成本限制了我们搞高可用