mongodb 升级到3.0.2

考虑到mongoDB 3.0推出不久,上个月还不想冒然进行升级,虽然性能说得很诱人。
现看到版本已到3.0.2,是到要升级的时候了。

开始在测试环境先做一个升级,没有问题后,再把生产环境升级到3.0.2

测试环境:

版本号:MONGODB 2.6.5
    2台服务器,做成2个分片,每个分片有一个集群(1+1+1),

集群中有2台数据存储服务器+1台仲裁服务器

把仲裁服务器分别放在2台服务器中

host    ip                                    端口信息                            arbiterOnly    
    ---------------------------------------------------------------------------------------
    tm1    192.168.10.91    mongod shard1:28011    
                                        mongod shard1:28012 ------------ True
                                        mongod shard2:28021

mongod config1:28010
                                        mongs1:28000
                                        mongs2:28001

tm2    192.168.10.93    mongod shard1:28013
                                        mongod shard2:28022
                                        mongod shard2:28023 ------------ True
                                        
                                        mongod config:28010
                                        mongod config2:28020
                                        mongs2:28000

一、准备工作:

1.对 tm1 分片中的集群做升级:
        1.配置新版本,建立新的目录

1.1 [192.168.10.93 服务器]
        su - mongo
        cd /opt/
        tar -xvzf mongodb-linux-x86_64-enterprise-rhel57-3.0.2.gz
        mv mongodb-linux-x86_64-enterprise-rhel57-3.0.2 mongodb3.0.2    #更改目录名称
        mkdir -p /opt/mongodb3.0.2/data/shard13
        mkdir -p /opt/mongodb3.0.2/data/shard22
        mkdir -p /opt/mongodb3.0.2/data/shard23
        mkdir -p /opt/mongodb3.0.2/logs
        mkdir -p /opt/mongodb3.0.2/config
        mkdir -p /opt/mongodb3.0.2/config2

1.2 先配置好3个节点及两个配置服务器的参数:

[mongo@tm2 bin]$ cat shard13_start.sh
        numactl --interleave=all /opt/mongodb3.0.2/bin/mongod  -f shard13.conf
        [mongo@tm2 bin]$ cat shard22_start.sh
        numactl --interleave=all /opt/mongodb3.0.2/bin/mongod -f shard22.conf
        [mongo@tm2 bin]$ cat shard23_start.sh
        numactl --interleave=all /opt/mongodb3.0.2/bin/mongod -f shard23.conf

#配置文件 (注意:配置文件中的冒号后面一定要有空格)
            [mongo@tm2 bin]$ cat shard13.conf
                systemLog:
                     destination: file
                     path: "/opt/mongodb3.0.2/logs/shard13.log"
                     logAppend: true
                storage:
                     journal:
                        enabled: true
                     directoryPerDB: true
                     dbPath: "/opt/mongodb3.0.2/data/shard13"
                processManagement:
                     fork: true
                net:
                     #bindIp: 127.0.0.1
                     port: 28013
                setParameter:
                     enableLocalhostAuthBypass: false

#分片服务器节点类型
                sharding:
                     clusterRole: shardsvr #configsvr

replication
                     replSetName: shard1

同理,另外两个节点:shard22,shard23的配置文件,只是指定的文件目录,日志文件名,
        集群名不一样而已。
            systemLog.path: "/opt/mongodb3.0.2/logs/shard22.log"
            storage.dbPath: "/opt/mongodb3.0.2/data/shard22"    
            replication.replSetName: shard2

1.3 两个配置服务器的启动文件及配置文件

[mongo@tm2 bin]$ cat configd_start.sh
        numactl --interleave=all /opt/mongodb3.0.2/bin/mongod -f configsvr.conf
        [mongo@tm2 bin]$ cat configd2_start.sh
        numactl --interleave=all /opt/mongodb3.0.2/bin/mongod -f configsvr2.conf

[mongo@tm2 bin]$ cat configsvr.conf
            systemLog:
               destination: file
               path: "/opt/mongodb3.0.2/logs/config.log"
               logAppend: true
            storage:
               journal:
                  enabled: true
               dbPath: "/opt/mongodb3.0.2/config"
            processManagement:
               fork: true
            net:
               #bindIp: 127.0.0.1
               port: 28010
            setParameter:
               enableLocalhostAuthBypass: false
            sharding:
               clusterRole: configsvr

[mongo@tm2 bin]$ cat configsvr2.conf
             systemLog:
               destination: file
               path: "/opt/mongodb3.0.2/logs/config2.log"
               logAppend: true
            storage:
               journal:
                  enabled: true
               dbPath: "/opt/mongodb3.0.2/config2"
            processManagement:
               fork: true
            net:
               #bindIp: 127.0.0.1
               port: 28020
            setParameter:
               enableLocalhostAuthBypass: false

sharding:
               clusterRole: configsvr

#拷贝文件到 91服务器
                [mongo@tm2 opt]$ scp mongodb-linux-x86_64-enterprise-rhel57-3.0.2.gz tm1:/opt/

1.2 [192.168.10.91 服务器]
                su - mongo
                cd /opt/
                tar -xvzf mongodb-linux-x86_64-enterprise-rhel57-3.0.2.gz
                mv mongodb-linux-x86_64-enterprise-rhel57-3.0.2 mongodb3.0.2    #更改目录名称
                mkdir -p /opt/mongodb3.0.2/data/shard11
                mkdir -p /opt/mongodb3.0.2/data/shard12
                mkdir -p /opt/mongodb3.0.2/data/shard21

mkdir -p /opt/mongodb3.0.2/logs
                mkdir -p /opt/mongodb3.0.2/config

同理,在91服务器中的各节点统计文件等不再列出。

二、升级步骤:

2.1 关闭 均衡器
            mongo -port 28000
            sh.stopBalancer()
            sh.getBalancerState()

2.2.升级集群元数据(Upgrade the cluster’s meta data)
        /opt/mongodb3.0.2/bin/mongos --configdb 192.168.10.91:28010,192.168.10.93:28010,192.168.10.93:28020 --port 28080  --logpath /opt/mongodb3.0.2/logs/mongos.log  --upgrade
        
        如果出现以下提示,说明升级成功:
            <timestamp> I SHARDING [mongosMain] upgrade of config server to v6 successful
                ...
            <timestamp> I -        [mongosMain] Config database is at version v6

2.3.升级config server
            升级完成mongos 后,对config server 进行升级操作。
            方法:
                2.3.1 逐个导出数据,
                    mongodump --out <exportDataDestination>

/opt/mongodb2.6.4/bin/mongodump --port 28010 -o /opt/backup/config2.6

connected to: 127.0.0.1:28010
                    2015-04-21T15:54:04.603+0800 all dbs
                    2015-04-21T15:54:04.604+0800 DATABASE: config     to     /opt/backup/config2.6/config
                    2015-04-21T15:54:04.680+0800     config.system.indexes to /opt/backup/config2.6/config/system.indexes.bson
                    2015-04-21T15:54:04.682+0800          19 documents
                    ......

2.3.2 config server 关闭,
                2.3.3使用 --storageEngine wiredTiger 参数打开 3.0版本
                    #文件参数如下:
                    [mongo@tm1 bin]$ cat configd_start.sh
                    numactl --interleave=all /opt/mongodb2.6.5/bin/mongod --configsvr --config configsvr.conf
                    [mongo@tm1 bin]$ cat configsvr.conf
                    dbpath = /opt/mongodb2.6.5/config
                    port = 28010
                    logpath = /opt/mongodb2.6.5/logs/config.log
                    logappend =true
                    fork = true
                    [mongo@tm1 bin]$ ./configd_start.sh

2.3.4 导入数据
                    mongorestore <exportDataDestination>

/opt/mongodb3.0.2/bin/mongorestore --port 28010 --dir /opt/backup/config2.6

2015-04-21T15:56:29.394+0800    building a list of dbs and collections to restore from /opt/backup/config2.6 dir
                    2015-04-21T15:56:29.408+0800    reading metadata file from /opt/backup/config2.6/config/changelog.metadata.json
                    ......
                    2015-04-21T15:56:37.882+0800    finished restoring config.lockpings
                    2015-04-21T15:56:37.882+0800    done

2.4.升级各分片中的集群节点
            2.4.1 关闭主节点:    
            可以通过replSetStepDown命令下架主节点。这个命令可以登录主节点使用
                1.db.adminCommand({replSetStepDown : 1})
                    以下操作是把primary 切换到secondary,并关闭服务器,
                    /opt/mongodb2.6.4/bin/mongo -port 28022
                    shard2:PRIMARY>
                    shard2:PRIMARY>  rs.stepDown()
                    2015-04-21T18:12:48.777+0800 DBClientCursor::init call() failed
                    2015-04-21T18:12:48.780+0800 Error: error doing query: failed at src/mongo/shell/query.js:81
                    2015-04-21T18:12:48.783+0800 trying reconnect to 127.0.0.1:28022 (127.0.0.1) failed
                    2015-04-21T18:12:48.784+0800 reconnect 127.0.0.1:28022 (127.0.0.1) ok
                    shard2:SECONDARY> rs.status()
                    {
                        "set" : "shard2",
                        "date" : ISODate("2015-04-21T10:12:56Z"),
                        "myState" : 2,
                        "members" : [
                            {
                                "_id" : 0,
                                "name" : "192.168.10.91:28021",
                                "health" : 1,
                                "state" : 2,
                                "stateStr" : "SECONDARY",
                                "uptime" : 9470,
                                "optime" : Timestamp(1429581793, 1),
                                "optimeDate" : ISODate("2015-04-21T02:03:13Z"),
                                "lastHeartbeat" : ISODate("2015-04-21T10:12:54Z"),
                                "lastHeartbeatRecv" : ISODate("2015-04-21T10:12:54Z"),
                                "pingMs" : 37,
                                "syncingTo" : "192.168.10.93:28022"
                            },
                            {
                                "_id" : 1,
                                "name" : "192.168.10.93:28022",
                                "health" : 1,
                                "state" : 2,
                                "stateStr" : "SECONDARY",
                                "uptime" : 13065,
                                "optime" : Timestamp(1429581793, 1),
                                "optimeDate" : ISODate("2015-04-21T02:03:13Z"),
                                "self" : true
                            },
                            {
                                "_id" : 2,
                                "name" : "192.168.10.93:28023",
                                "health" : 1,
                                "state" : 7,
                                "stateStr" : "ARBITER",
                                "uptime" : 7865,
                                "lastHeartbeat" : ISODate("2015-04-21T10:12:54Z"),
                                "lastHeartbeatRecv" : ISODate("2015-04-21T10:12:56Z"),
                                "pingMs" : 0
                            }
                        ],
                        "ok" : 1
                    }
                    shard2:SECONDARY> rs.status()
                    {
                        "set" : "shard2",
                        "date" : ISODate("2015-04-21T10:13:10Z"),
                        "myState" : 2,
                        "syncingTo" : "192.168.10.91:28021",
                        "members" : [
                            {
                                "_id" : 0,
                                "name" : "192.168.10.91:28021",
                                "health" : 1,
                                "state" : 1,
                                "stateStr" : "PRIMARY",
                                "uptime" : 9484,
                                "optime" : Timestamp(1429581793, 1),
                                "optimeDate" : ISODate("2015-04-21T02:03:13Z"),
                                "lastHeartbeat" : ISODate("2015-04-21T10:13:09Z"),
                                "lastHeartbeatRecv" : ISODate("2015-04-21T10:13:09Z"),
                                "pingMs" : 6,
                                "electionTime" : Timestamp(1429611174, 1),
                                "electionDate" : ISODate("2015-04-21T10:12:54Z")
                            },
                            {
                                "_id" : 1,
                                "name" : "192.168.10.93:28022",
                                "health" : 1,
                                "state" : 2,
                                "stateStr" : "SECONDARY",
                                "uptime" : 13079,
                                "optime" : Timestamp(1429581793, 1),
                                "optimeDate" : ISODate("2015-04-21T02:03:13Z"),
                                "infoMessage" : "syncing to: 192.168.10.91:28021",
                                "self" : true
                            },
                            {
                                "_id" : 2,
                                "name" : "192.168.10.93:28023",
                                "health" : 1,
                                "state" : 7,
                                "stateStr" : "ARBITER",
                                "uptime" : 7879,
                                "lastHeartbeat" : ISODate("2015-04-21T10:13:08Z"),
                                "lastHeartbeatRecv" : ISODate("2015-04-21T10:13:08Z"),
                                "pingMs" : 0
                            }
                        ],
                        "ok" : 1
                    }

                    shard2:SECONDARY> db.shutdownServer()

2.4.2 这时其它的次节点上升为主节点,把原主节点更换成 3.0版本的mongod 实例。
            使用新的存储引擎方式启动(端口号不变):
                mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
            
            这时主节点会把数据同步到新的3.0版本的实例中。
            当同步完成后 状态值:"stateStr" : "STARTUP2" 会变成 "stateStr" : "STARTUP"。
            当此次切换完成后,可以再切换一次,从 PRIMARY 切换成 STARTUP,再把 STARTUP 服务器
            关掉,再重启3.0版本的服务器,这时数据库又会把  PRIMARY 服务器的数据,同步到 STARTUP 服务器
            如果有多台startup只要关闭后,启动3.0版本即可。
                shard1:PRIMARY> rs.status()
                    {
                        "set" : "shard1",
                        "date" : ISODate("2015-04-22T02:26:27Z"),
                        "myState" : 1,
                        "members" : [
                            {
                                "_id" : 0,
                                "name" : "192.168.10.91:28011",
                                "health" : 1,
                                "state" : 5,
                                "stateStr" : "STARTUP2",
                                "uptime" : 2232,
                                "optime" : Timestamp(1429667867, 3),
                                "optimeDate" : ISODate("2015-04-22T01:57:47Z"),
                                "lastHeartbeat" : ISODate("2015-04-22T02:26:27Z"),
                                "lastHeartbeatRecv" : ISODate("2015-04-22T02:26:26Z"),
                                "pingMs" : 31,
                                "syncingTo" : "192.168.10.93:28013"
                            },
                            {
                                "_id" : 1,
                                "name" : "192.168.10.93:28013",
                                "health" : 1,
                                "state" : 1,
                                "stateStr" : "PRIMARY",
                                "uptime" : 71486,
                                "optime" : Timestamp(1429667867, 3),
                                "optimeDate" : ISODate("2015-04-22T01:57:47Z"),
                                "electionTime" : Timestamp(1429667221, 1),
                                "electionDate" : ISODate("2015-04-22T01:47:01Z"),
                                "self" : true
                            },
                            {
                                "_id" : 2,
                                "name" : "192.168.10.91:28014",
                                "health" : 1,
                                "state" : 7,
                                "stateStr" : "ARBITER",
                                "uptime" : 1423,
                                "lastHeartbeat" : ISODate("2015-04-22T02:26:26Z"),
                                "lastHeartbeatRecv" : ISODate("2015-04-22T02:26:26Z"),
                                "pingMs" : 23
                            }
                        ],
                        "ok" : 1

2.5 打开均衡器器

sh.setBalancerState(true)

到这里,mongodb3.0的升级完成。测试内容不再列举。

mongoDB3.0.2 升级操作相关推荐

  1. Mongodb2.6升级到Mongodb3.0.2笔记

    2019独角兽企业重金招聘Python工程师标准>>> PS:升级到3版本的Mongodb以后,drop集合是可以直接释放磁盘空间的 停止老版本Mongodb >use adm ...

  2. 联想平板android版本升级,联想乐Pad A1平板安卓4.0升级操作详细教程

    [天极网平板频道]你还记得乐PadA1千元普及风暴时的震撼感受吗?在这个夏天千元乐Pad A1一跃升级为安卓4.0系统,在这个炎炎夏天成功吃上冰激凌,给那些小乐粉丝们带来惊喜.联想乐Pad A1拥有7 ...

  3. 数据库应用----Mongodb 4.0 版本 基础操作---复制集,选举方法、部署认证 (二)

    Mongodb 4.0 版本 基础操作-复制集,选举方法.部署认证 (二) 文章目录 Mongodb 4.0 版本 基础操作---复制集,选举方法.部署认证 (二) 一.MongoDB 复制集 二.部 ...

  4. windows 2003 下oracle从10.2.0.1升级到10.2.0.4

    方法一: 1. 完全安装10.2.0.1 2. 安装完成后,停止所有的oracle服务,可以通过停止oracle 的window services或者使用以下命令来实现. emctl stop dbc ...

  5. Oracle 11.2.0.1 升级到 11.2.0.3 示例

    Oracle 11.2.0.1 单实例升级到11.2.0.3. Oracle 升级的步骤都差不多. 先升级Oracle software,然后升级Oracle instance. Oracle 11. ...

  6. 从oracle10g 10.2.0.1 升级到10.2.0.4碰到的问题及解决

    这两天做数据库的升级,从10.2.0.1升级到10.2.0.4,升级安装很顺利,但安装完成后再用常用用户连接数据库,出现如下提示错误: ORA-12514:TNS:监听程序当前无法识别连接描述符中请求 ...

  7. Oralce 9.2.0.6 到 9.2.0.8 升级 小结

    13号,晚上加班,将2台数据库从9.2.0.6 升级到9.2.0.8. 因为之前有个小bug,9.2.0.6 的DataGuard中会经常不能识别备库的监听,造成Data Guard不能同步. Ora ...

  8. 更新无限无线连接更新服务器,02-H3C WBC560多业务无线控制器软件升级操作指导...

    本文中的绿洲平台指的是WBC560多业务无线控制器中的本地绿洲. 1.1.1  软件升级方式简介 AC支持通过命令行进行软件升级和通过Web页面进行软件升级,命令行升级方式只能通过以太网口telnet ...

  9. Oracle RAC 10.2.0.5升级到11.2.0.4遇到的问题

        最近有这个需求所以提前在家里的测试环境做了相关的测试,将Oracle RAC 10.2.0.5 for Linux升级到Oracle RAC 11.2.0.4,不对物理结构做任何变更,直接升级 ...

最新文章

  1. mysql 错误1930xc1_Mysql写入记录出现 Incorrect string value: '\xB4\xE7\xB1\xCA\xBC\xC7‘错误?(写入中文)...
  2. python开发工程师面试题-分析经典Python开发工程师面试题
  3. Windows 中 SQLite3 使用(1) -- 配置
  4. 店铺管理系统开发实践-领域模型
  5. c 语言冒泡排序,c 语言冒泡排序
  6. CSS使用Chrome进行取色
  7. 创建应用服务器连接客户端
  8. iis express8 自动关闭
  9. js 调用百度地图,并且定位用户地址,显示省市区街,经纬度
  10. 第三章 硅谷宠儿 Friendster (二)
  11. 平面变压器的设计(翻译)(5)
  12. DelayQueue延时队列操作实例
  13. 编程猫李天驰:让编程教育回归互联网
  14. cocos2d-x lua 框架中 self.super.ctor(self, app) 和 self.super:ctor(app) 的区别
  15. linux之bc命令使用详解_【原创】linux命令bc使用详解
  16. matlab solve 警告,当发出警告时令测试失败的插件
  17. 运放基本结构及频响(一)
  18. 1. 什么是ThingsBoard
  19. 计算机技术在多媒体教学中的作用,多媒体教学中的现状及作用
  20. mount USB Device(U disk) on crux based on vmware

热门文章

  1. 一张图搞定SDF的概念
  2. 04 列表的增删改查 常用方法 元祖 range
  3. 获取minist数据并转换成lmdb
  4. SMTP Error: Could not connect to SMTP host
  5. superslide 学习笔记
  6. 线程不能被子进程继承
  7. SQL Server数据库查询区分大小写、全半角——排序规则的应用(转载)
  8. hdu 6386 Age of Moyu (重边判断)
  9. SVN专题(Visual SVN Server + TortoiseSVN + Visual SVN)
  10. Maven-生命周期