加载中…
正文 字体大小:

MongoDB 数据同步、升级及迁移

(2016-04-05 16:38:03)
标签:

mongosync

mongodb升级迁移

mongodb数据同步

分类: NOSQL
MongoDB 数据同步、升级及迁移


mongosync简单讲,主要用于Mongodb数据同步及迁移。

通过mongosync可以完成以下任务:

    1、数据迁移。无需开启oplog,无需停主库,功能类似mongodump,mongorestore。
  mongosync -h 172.16.57.26:1002  --to 172.16.57.27:1111
  
    2、数据库升级迁移。可以将老版本的数据,通过mongosync同步至新版本的库中,基本实现零停机升级迁移,功能类似OGG。
    3、数据同步备份

具体mongosync使用说明:

1、前提条件
   1)源库必须为Primary状态(否者不能增量同步);
   2)源库必须是2.6版本及以下
   附:目标库版本不限,经测试,目前3.2.4版本的库也可以使用

2、操作步骤
   1)如果源库有slave备库,请跳过该步骤。
      A)如果源库是单点,并且config文件中没有加入replSet参数:
    在config文件中添加replSet参数
vi mongodb-m.conf
replSet = rs1
 B) 重启源库
 C)配置源库,开启OPLOG
    > use local
         switched to db local
         > rs.initiate()
         {
          "info2" : "no configuration explicitly specified -- making one",
          "me" : "n1:1002",
          "info" : "Config now saved locally.  Should come online in about a minute.",
          "ok" : 1
         }
         > db.oplog.rs.find()
         { "ts" : Timestamp(1459842450, 1), "h" : NumberLong(0), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } }
         rs1:PRIMARY> 
         rs1:PRIMARY> rs.status()
         {
          "set" : "rs1",
          "date" : ISODate("2016-04-05T07:47:58Z"),
          "myState" : 1,
          "members" : [
          {
          "_id" : 0,
          "name" : "n1:1002",
          "health" : 1,
          "state" : 1,
          "stateStr" : "PRIMARY",
          "uptime" : 44,
          "optime" : Timestamp(1459842450, 1),
          "optimeDate" : ISODate("2016-04-05T07:47:30Z"),
          "self" : true
          }
          ],
          "ok" : 1
         }
    此时可以看到源库的oplog已经开启,并有数据记录
 
2)配置同步
       A)任意节点或者服务器上配置mongosync
  B)开启实时同步
     mongosync -h 172.16.57.26:1002  --to 172.16.57.27:1111 --oplog
 
  C)如果因某种原因,需要断开同步,等再次开启同步时,需要指定OPtime,optime可以在主库执行rs.status()查看。
      但是,这里只能通过日志查看。
      根据mongosync后台日志,记录断开时的optime:1459850295,1
      Tue Apr  5 18:01:48.243 [mongosync] synced up to 1459850295,1 (Apr  5 17:58:15 57038c37:1), source has up to 1459850295,1 (Apr  5 17:58:15 57038c37:1), fully synced.
        Tue Apr  5 18:01:48.244 [mongosync] waiting for new data...
        Tue Apr  5 18:01:58.266 [mongosync] synced up to 1459850295,1 (Apr  5 17:58:15 57038c37:1), source has up to 1459850295,1 (Apr  5 17:58:15 57038c37:1), fully synced.
        Tue Apr  5 18:01:58.266 [mongosync] waiting for new data...
        然后指定-s进行同步(部署时,最好将日志记录到文件中,方便查看optime)
        vi mongosync.sh
        LOG=/opt/mongodb/mongosync/sync.log
        /opt/mongodb/mongosync/mongosync -h 172.16.57.26:1002  --to 172.16.57.27:1111 --oplog -s 1459850295,1 --fork >>$LOG
       
        ./mongosync.sh
        输出日志:
        connected to: 172.16.57.26:1002
        Tue Apr  5 18:04:02.778 [mongosync] 172.16.57.26:1002 connected ok
        Tue Apr  5 18:04:02.778 [mongosync] 172.16.57.27:1111 connected ok
        Tue Apr  5 18:04:02.779 [mongosync] lastOp OpTime:1459850642,15357 (Apr  5 18:04:02 57038d92:3bfd)
        Tue Apr  5 18:04:02.779 [mongosync] begin to apply oplog...
        Tue Apr  5 18:04:35.772 [mongosync] synced up to 1459850295,1 (Apr  5 17:58:15 57038c37:1), source has up to 1459850675,11951 (Apr  5 18:04:35 57038db3:2eaf), 380 seconds behind source.
        Tue Apr  5 18:04:45.773 [mongosync] synced up to 1459850589,21588 (Apr  5 18:03:09 57038d5d:5454), source has up to 1459850685,23645 (Apr  5 18:04:45 57038dbd:5c5d), 96 seconds behind source.
        Tue Apr  5 18:04:55.792 [mongosync] synced up to 1459850611,33574 (Apr  5 18:03:31 57038d73:8326), source has up to 1459850695,25704 (Apr  5 18:04:55 57038dc7:6468), 84 seconds behind source.
        Tue Apr  5 18:05:05.815 [mongosync] synced up to 1459850632,37386 (Apr  5 18:03:52 57038d88:920a), source has up to 1459850705,24739 (Apr  5 18:05:05 57038dd1:60a3), 73 seconds behind source.
        Tue Apr  5 18:05:15.851 [mongosync] synced up to 1459850672,14641 (Apr  5 18:04:32 57038db0:3931), source has up to 1459850715,26318 (Apr  5 18:05:15 57038ddb:66ce), 43 seconds behind source.

 
 
 
 
 

0

阅读 评论 收藏 禁止转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有