MongoDB 升级测试步骤:
1、MongoDB版本升级顺序3.2->3.4->3.6->4.0 不能跨版本升级
2、升级到3.4后,您不能降级到3.2.7或更早版本。您只能降级到3.2.8或更高版本
3、先升级所有副本集中的Secondary
4、将Primary节点降级为Secondary节点
5、升级Primary
6、MongoDB3.2升级到3.4,登录后查看版本信息若还是3.2,执行db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )
7、MongoDB3.4升级到3.6,登录后查看版本信息若还是3.4,执行db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )
8、MongoDB3.6升级到4.0,登录后查看版本信息若还是3.6,执行db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
###只在升级到4.0执行###
cfg = rs.conf();
cfg.protocolVersion=1;
rs.reconfig(cfg);

查看MongoDB进程:
[root@127.0.0.1 bin]# ps -ef | grep mongo
root 17908 9428 0 20:43 pts/1 00:00:00 grep mongo
root 47265 1 0 Oct09 ? 00:09:38 /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/2777/conf/mongodb_2777.conf
root 179052 1 0 Oct09 ? 00:05:27 /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/5777/conf/mongodb_5777.conf
root 180521 1 2 Oct08 ? 00:59:01 /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/3777/conf/mongodb_3777.conf
root 185602 1 0 Oct08 ? 00:08:30 /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/4777/conf/mongodb_4777.conf

端口5777为Primary,2777,3777,4777为Secondary

登录副本集查看副本集信息:
[root@127.0.0.1 bin]# /u02/mongodb/mongodb/bin/mongo --port 5777
MongoDB shell version: 3.2.6
connecting to: 127.0.0.1:5777/test
Server has startup warnings:
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2019-10-10T12:42:36.196Z"),
"myState" : 1,
"term" : NumberLong(4),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 1,
"name" : "127.0.0.1:3777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 106410,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:42:34.326Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:42:35.321Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 21
},
{
"_id" : 2,
"name" : "127.0.0.1:4777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 106410,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:42:34.324Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:42:35.321Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 21
},
{
"_id" : 3,
"name" : "127.0.0.1:5777",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 106450,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"electionTime" : Timestamp(1570711316, 1),
"electionDate" : ISODate("2019-10-10T12:41:56Z"),
"configVersion" : 21,
"self" : true
},
{
"_id" : 4,
"name" : "127.0.0.1:2777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 100601,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:42:34.324Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:42:35.319Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 21
}
],
"ok" : 1
}

将mongodb-linux-x86_64-rhel62-3.4.6.tgz放在/opt下解压后改名
[root@127.0.0.1 bin]# ls
bsondump mongo mongod mongodump mongoexport mongofiles mongoimport mongooplog mongoperf mongoreplay mongorestore mongos mongostat mongotop
[root@127.0.0.1 bin]# pwd
/opt/mongodb_3_4/bin

删除副本:
shard1:PRIMARY> rs.remove("127.0.0.1:2777")

关闭2777端口mongo
[root@127.0.0.1 bin]# /mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/2777/conf/mongodb_2777.conf --shutdown

通过mongodb3.4启动端口2777mongo,升级至3.4
/opt/mongodb_3_4/bin/mongod -f /u02/mongodb/mongodb/2777/conf/mongodb_2777.conf

登录mongo查看版本信息
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 2777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:2777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten]

将端口2777mongo添加到副本集
shard1:PRIMARY> rs.add("127.0.0.1:2777")

查看2777端口副本集信息
shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2019-10-10T12:49:24.623Z"),
"myState" : 1,
"term" : NumberLong(4),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 1,
"name" : "127.0.0.1:3777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 106819,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:49:24.438Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:49:23.376Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 21
},
{
"_id" : 2,
"name" : "127.0.0.1:4777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 106819,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:49:24.438Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:49:23.374Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 21
},
{
"_id" : 3,
"name" : "127.0.0.1:5777",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 106858,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"electionTime" : Timestamp(1570711316, 1),
"electionDate" : ISODate("2019-10-10T12:41:56Z"),
"configVersion" : 21,
"self" : true
},
{
"_id" : 4,
"name" : "127.0.0.1:2777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 101009,
"optime" : {
"ts" : Timestamp(1570711316, 2),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:41:56Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:49:24.405Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:49:23.375Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 21
}
],
"ok" : 1
}

登录mongo3.4版本2777端口查询数据测试
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 2777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:2777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten]
shard1:SECONDARY> rs.slaveOk()
shard1:SECONDARY> show dbs
local 0.001GB
test 0.000GB
yoon 0.000GB
shard1:SECONDARY> use yoon
switched to db yoon
shard1:SECONDARY> show collections
movie
shard1:SECONDARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }

通过mongodb3.4启动端口3777mongo,升级至3.4
[root@127.0.0.1 bin]# /u02/mongodb/mongodb/bin/mongo --port 5777
MongoDB shell version: 3.2.6
connecting to: 127.0.0.1:5777/test
Server has startup warnings:
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
shard1:PRIMARY> rs.remove("127.0.0.1:3777")
{ "ok" : 1 }
shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2019-10-10T12:52:37.517Z"),
"myState" : 1,
"term" : NumberLong(4),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 2,
"name" : "127.0.0.1:4777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 107011,
"optime" : {
"ts" : Timestamp(1570711953, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:52:33Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:52:37.379Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:52:37.379Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 22
},
{
"_id" : 3,
"name" : "127.0.0.1:5777",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 107051,
"optime" : {
"ts" : Timestamp(1570711953, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:52:33Z"),
"electionTime" : Timestamp(1570711316, 1),
"electionDate" : ISODate("2019-10-10T12:41:56Z"),
"configVersion" : 22,
"self" : true
},
{
"_id" : 4,
"name" : "127.0.0.1:2777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 101202,
"optime" : {
"ts" : Timestamp(1570711953, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:52:33Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:52:37.379Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:52:37.379Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 22
}
],
"ok" : 1
}

[root@127.0.0.1 bin]# /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/3777/conf/mongodb_3777.conf --shutdown
killing process with pid: 180521

[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongod -f /u02/mongodb/mongodb/3777/conf/mongodb_3777.conf
about to fork child process, waiting until server is ready for connections.
forked process: 25117
child process started successfully, parent exiting

[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 3777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:3777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
shard1:OTHER>

3777端口升级至3.4.6版本,将3777端口加入副本集
[root@127.0.0.1 bin]# /u02/mongodb/mongodb/bin/mongo --port 5777
MongoDB shell version: 3.2.6
connecting to: 127.0.0.1:5777/test
Server has startup warnings:
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
shard1:PRIMARY> rs.add("127.0.0.1:3777")
{ "ok" : 1 }
shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2019-10-10T12:55:20.927Z"),
"myState" : 1,
"term" : NumberLong(4),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 2,
"name" : "127.0.0.1:4777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 107175,
"optime" : {
"ts" : Timestamp(1570712117, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:55:17Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:55:19.964Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:55:19.964Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 23
},
{
"_id" : 3,
"name" : "127.0.0.1:5777",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 107214,
"optime" : {
"ts" : Timestamp(1570712117, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:55:17Z"),
"electionTime" : Timestamp(1570711316, 1),
"electionDate" : ISODate("2019-10-10T12:41:56Z"),
"configVersion" : 23,
"self" : true
},
{
"_id" : 4,
"name" : "127.0.0.1:2777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 101365,
"optime" : {
"ts" : Timestamp(1570712117, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:55:17Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:55:19.964Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:55:19.965Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 23
},
{
"_id" : 5,
"name" : "127.0.0.1:3777",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",
"uptime" : 0,
"optime" : {
"ts" : Timestamp(1570711953, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T12:52:33Z"),
"lastHeartbeat" : ISODate("2019-10-10T12:55:19.964Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T12:55:17.966Z"),
"pingMs" : NumberLong(0),
"configVersion" : 23
}
],
"ok" : 1
}

在Primary插入一条新数据在3777端口查询测试

查看DB
shard1:PRIMARY> show dbs
local 0.001GB
test 0.000GB
yoon 0.000GB

连接DB
shard1:PRIMARY> use yoon
switched to db yoon

查看DB下表
shard1:PRIMARY> show collections;
movie

查询数据
shard1:PRIMARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }

当前连接DB
shard1:PRIMARY> db
yoon

插入一条新数据
shard1:PRIMARY> db.movie.insert({"kname":"shouqi"})
WriteResult({ "nInserted" : 1 })

查询数据
shard1:PRIMARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }
{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }

登录2777和3777端口分别查看{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 2777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:2777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-09T16:41:23.659+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-09T16:41:23.660+0800 I CONTROL [initandlisten]
shard1:SECONDARY> rs.slaveOk()
shard1:SECONDARY> use yoon
switched to db yoon
shard1:SECONDARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }
{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }
shard1:SECONDARY>

[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 3777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:3777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
shard1:SECONDARY> rs.slaveOk()
shard1:SECONDARY> use yoon
switched to db yoon
shard1:SECONDARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }
{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }

以此类推升级端口4777,至3.4.6
shard1:PRIMARY> rs.remove("127.0.0.1:4777")
{ "ok" : 1 }

[root@127.0.0.1 bin]# /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/4777/conf/mongodb_4777.conf --shutdown
killing process with pid: 185602

[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongod -f /u02/mongodb/mongodb/4777/conf/mongodb_4777.conf
about to fork child process, waiting until server is ready for connections.
forked process: 34453
child process started successfully, parent exiting

[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 4777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:4777/
MongoDB server version: 3.4.6

将4777端口添加到副本集
[root@127.0.0.1 bin]# /u02/mongodb/mongodb/bin/mongo --port 5777
MongoDB shell version: 3.2.6
connecting to: 127.0.0.1:5777/test
Server has startup warnings:
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-09T15:08:26.464+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-09T15:08:26.465+0800 I CONTROL [initandlisten]
shard1:PRIMARY> rs.add("127.0.0.1:4777")
{ "ok" : 1 }
shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2019-10-10T13:07:58.679Z"),
"myState" : 1,
"term" : NumberLong(4),
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 3,
"name" : "127.0.0.1:5777",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 107972,
"optime" : {
"ts" : Timestamp(1570712875, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T13:07:55Z"),
"electionTime" : Timestamp(1570711316, 1),
"electionDate" : ISODate("2019-10-10T12:41:56Z"),
"configVersion" : 25,
"self" : true
},
{
"_id" : 4,
"name" : "127.0.0.1:2777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 102123,
"optime" : {
"ts" : Timestamp(1570712875, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T13:07:55Z"),
"lastHeartbeat" : ISODate("2019-10-10T13:07:57.987Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T13:07:55.990Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 25
},
{
"_id" : 5,
"name" : "127.0.0.1:3777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 758,
"optime" : {
"ts" : Timestamp(1570712875, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T13:07:55Z"),
"lastHeartbeat" : ISODate("2019-10-10T13:07:57.987Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T13:07:55.990Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "127.0.0.1:5777",
"configVersion" : 25
},
{
"_id" : 6,
"name" : "127.0.0.1:4777",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",
"uptime" : 0,
"optime" : {
"ts" : Timestamp(1570712743, 1),
"t" : NumberLong(4)
},
"optimeDate" : ISODate("2019-10-10T13:05:43Z"),
"lastHeartbeat" : ISODate("2019-10-10T13:07:57.987Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T13:07:55.990Z"),
"pingMs" : NumberLong(0),
"configVersion" : 25
}
],
"ok" : 1
}

将Primary升级至3.4.6

将Primary节点降级为Secondary节点,有两种方式,一种是rs.stepDown() , 另一种是通过修改优先级来修改Primary
shard1:PRIMARY> rs.stepDown()

通过优先级来修改PRIMARY
shard1:PRIMARY> config=rs.conf() //查看当前配置,存入config变量中

shard1:PRIMARY> config.members[0].priority = 50 //修改config变量,第1组成员的优先级为50

shard1:PRIMARY> rs.reconfig(config) //配置生效

shard1:PRIMARY> rs.config() //查看当前配置
{
"_id" : "shard1",
"version" : 18,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 1,
"host" : "127.0.0.1:3777",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 50,
"tags" : {

},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "127.0.0.1:4777",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 3,
"host" : "127.0.0.1:5777",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 4,
"host" : "127.0.0.1:2777",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"getLastErrorModes" : {

},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("5d9c7a7e76695600e03e231f")
}
}

登录3777端口变为Primary
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 3777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:3777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
shard1:PRIMARY>

升级5777端口
shard1:PRIMARY> rs.remove("127.0.0.1:5777")
{ "ok" : 1 }

[root@127.0.0.1 bin]# /u02/mongodb/mongodb/bin/mongod -f /u02/mongodb/mongodb/5777/conf/mongodb_5777.conf --shutdown
killing process with pid: 179052

[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongod -f /u02/mongodb/mongodb/5777/conf/mongodb_5777.conf
about to fork child process, waiting until server is ready for connections.
forked process: 40446
child process started successfully, parent exiting

[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 5777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:5777/
MongoDB server version: 3.4.6

将5777端口添加至副本集
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 3777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:3777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-10T20:53:40.536+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-10T20:53:40.537+0800 I CONTROL [initandlisten]
shard1:PRIMARY> rs.add("127.0.0.1:5777")
{ "ok" : 1 }

shard1:PRIMARY> rs.status()
{
"set" : "shard1",
"date" : ISODate("2019-10-10T13:16:30.878Z"),
"myState" : 1,
"term" : NumberLong(5),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"appliedOpTime" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"durableOpTime" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
}
},
"members" : [
{
"_id" : 4,
"name" : "127.0.0.1:2777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1272,
"optime" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"optimeDurable" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"optimeDate" : ISODate("2019-10-10T13:16:16Z"),
"optimeDurableDate" : ISODate("2019-10-10T13:16:16Z"),
"lastHeartbeat" : ISODate("2019-10-10T13:16:28.911Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T13:16:26.912Z"),
"pingMs" : NumberLong(0),
"configVersion" : 28
},
{
"_id" : 5,
"name" : "127.0.0.1:3777",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1370,
"optime" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"optimeDate" : ISODate("2019-10-10T13:16:16Z"),
"electionTime" : Timestamp(1570713059, 1),
"electionDate" : ISODate("2019-10-10T13:10:59Z"),
"configVersion" : 28,
"self" : true
},
{
"_id" : 6,
"name" : "127.0.0.1:4777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 514,
"optime" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"optimeDurable" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"optimeDate" : ISODate("2019-10-10T13:16:16Z"),
"optimeDurableDate" : ISODate("2019-10-10T13:16:16Z"),
"lastHeartbeat" : ISODate("2019-10-10T13:16:28.911Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T13:16:26.912Z"),
"pingMs" : NumberLong(0),
"configVersion" : 28
},
{
"_id" : 7,
"name" : "127.0.0.1:5777",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 11,
"optime" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"optimeDurable" : {
"ts" : Timestamp(1570713376, 1),
"t" : NumberLong(5)
},
"optimeDate" : ISODate("2019-10-10T13:16:16Z"),
"optimeDurableDate" : ISODate("2019-10-10T13:16:16Z"),
"lastHeartbeat" : ISODate("2019-10-10T13:16:28.911Z"),
"lastHeartbeatRecv" : ISODate("2019-10-10T13:16:27.075Z"),
"pingMs" : NumberLong(0),
"configVersion" : 28
}
],
"ok" : 1
}

在Primary插入数据,在所有端口Secondary测试数据是否正常
shard1:PRIMARY> db.movie.insert({"shouyue":"yunweibu"})
WriteResult({ "nInserted" : 1 })

shard1:PRIMARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }
{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }
{ "_id" : ObjectId("5d9f2fa0b384f3ba8df3a0ce"), "shouyue" : "yunweibu" } #查看各端口是否有此条数据

2777端口:
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 2777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:2777/
MongoDB server version: 3.4.6
shard1:SECONDARY> show dbs
2019-10-10T21:19:51.176+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:769:19
shellHelper@src/mongo/shell/utils.js:659:15
@(shellhelp2):1:1
shard1:SECONDARY> rs.slaveOk()
shard1:SECONDARY> use yoon
switched to db yoon
shard1:SECONDARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }
{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }
{ "_id" : ObjectId("5d9f2fa0b384f3ba8df3a0ce"), "shouyue" : "yunweibu" }

4777端口:
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 4777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:4777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten]
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten]
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten]
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-10T21:07:05.390+0800 I CONTROL [initandlisten]
shard1:SECONDARY> rs.slaveOk()
shard1:SECONDARY> use yoon
switched to db yoon
shard1:SECONDARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }
{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }
{ "_id" : ObjectId("5d9f2fa0b384f3ba8df3a0ce"), "shouyue" : "yunweibu" }

5777端口:
[root@127.0.0.1 bin]# /opt/mongodb_3_4/bin/mongo --port 5777
MongoDB shell version v3.4.6
connecting to: mongodb://127.0.0.1:5777/
MongoDB server version: 3.4.6
Server has startup warnings:
2019-10-10T21:15:35.059+0800 I CONTROL [initandlisten]
2019-10-10T21:15:35.059+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-10T21:15:35.059+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-10-10T21:15:35.059+0800 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-10-10T21:15:35.059+0800 I CONTROL [initandlisten]
2019-10-10T21:15:35.060+0800 I CONTROL [initandlisten]
2019-10-10T21:15:35.060+0800 I CONTROL [initandlisten] ** WARNING: You are running on a NUMA machine.
2019-10-10T21:15:35.060+0800 I CONTROL [initandlisten] ** We suggest launching mongod like this to avoid performance problems:
2019-10-10T21:15:35.060+0800 I CONTROL [initandlisten] ** numactl --interleave=all mongod [other options]
2019-10-10T21:15:35.060+0800 I CONTROL [initandlisten]
shard1:SECONDARY> rs.slaveOk()
shard1:SECONDARY> use yoon
switched to db yoon
shard1:SECONDARY> db.movie.find()
{ "_id" : ObjectId("5d9c7ee9d7a8df8fd023d6ed"), "name" : "hank" }
{ "_id" : ObjectId("5d9d9d5d159fa59c5d01985a"), "hname" : "yoon" }
{ "_id" : ObjectId("5d9d9e33159fa59c5d01985b"), "yname" : "hankyoon" }
{ "_id" : ObjectId("5d9f2aacdaabe0e11aebef86"), "kname" : "shouqi" }
{ "_id" : ObjectId("5d9f2fa0b384f3ba8df3a0ce"), "shouyue" : "yunweibu" }

MongoDB3.2升级至3.4.6升级完成。

但是真正的升级线上需要开发,测试配合来完成,保证升级的可用性。

MongoDB 3.2 升级至 3.4.6的更多相关文章

  1. 云数据库 MongoDB版

    阿里云云数据库MongoDB版是一种安全可靠.可弹性伸缩的云数据库服务,目前支持ReplicaSet和Sharding两种部署架构,通过简单的几步操作即可快速部署.阿里云云数据库MongoDB版是一种 ...

  2. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

  3. 【翻译】MongoDB指南/CRUD操作(四)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ...

  4. 【翻译】MongoDB指南/CRUD操作(三)

    [原文地址]https://docs.mongodb.com/manual/ CRUD操作(三) 主要内容: 原子性和事务(Atomicity and Transactions),读隔离.一致性和新近 ...

  5. 【翻译】MongoDB指南/CRUD操作(二)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...

  6. 【翻译】MongoDB指南/CRUD操作(一)

    [原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(一) 主要内容:CRUD操作简介,插入文档,查询文档. CRUD操作包括创建.读取.更新和删 ...

  7. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  9. MongoDB系列(一):简介及安装

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...

随机推荐

  1. 线程安全Collections.synchronizedList

    ollections.synchronizedList引发的线程安全问题 有些容器是线程安全的(Vector,ConcurrentLinkedQueue等),有些则不是(list等),利用类 似 pr ...

  2. Entity Framework Migrations 数据迁移

    在使用Entity Framework 过程中,经常会遇到需要变更model 的状况,此时可以使用Migrations ,将每次变更记录以便后续更换机器或是运行在生产环境,持久层可保持一致. 在Pac ...

  3. Spring之byte[]传输

    事出原因 某些原因,需要在在服务之间传输文件,想到只有通过Byte数组,或者是Stream传递,遂定下两方法,一个byte,一个inpustream,老样子,upload(@RequestParam( ...

  4. for 循环遍历数据,根据不同的条件判断动态渲染页面!

    整体的逻辑为:for 循环遍历出数据,在for 循环里判断,根据不同的条件渲染 一.html页面结构 二.css就不再写了 三.JS逻辑代码 var listGroup='' ;k<data.i ...

  5. 《C++ Primer(中文版)(第5版)》斯坦利·李普曼 (Stanley B. Lippman) (作者), 约瑟·拉乔伊 (Josee Lajoie) (作者), 芭芭拉·默 (Barbara E. Moo) (作者) azw3

    内容简介: 这本久负盛名的C++经典教程,时隔八年之久,终迎来的重大升级.除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委 ...

  6. 使用 MYSQLBINLOG 来恢复数据

    使用 MYSQLBINLOG 来恢复数据 2009-04-05 12:47:05 标签:mysql mysqlbinlog 恢复 数据库 数据 原创作品,允许转载,转载时请务必以超链接形式标明文章 原 ...

  7. java字符集编码乱码问题

    博客分类: web javajspservlet  最近做网页这块时碰到了正文字符乱码问题.别看这小小的一个问题,对我来说却花费了好长一段时间.现在让我慢慢分析它吧(说实话.这些有部分是从网上找的,但 ...

  8. spark动态资源(executor)分配

    spark动态资源调整其实也就是说的executor数目支持动态增减,动态增减是根据spark应用的实际负载情况来决定. 开启动态资源调整需要(on yarn情况下) 1.将spark.dynamic ...

  9. javascript if else优化指南

    不管是平时在学习js中还是在项目书中写js代码,都避免不了一个问题就是有时候要做大量的分支判断,很多人的第一反应就是使用if else.无可厚非,if else早平时做分支判断的时候是非常好用的,但是 ...

  10. python-模块加密hashlib

    import hashlib# md5ybm_pwd='yuanbapqingsdfs234FF234HF@F' #m = hashlib.md5() #bytes_ybq = ybm_pwd.enc ...