日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongoDB3.4主从复制实现(第一种情况亲测)

發布時間:2024/9/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongoDB3.4主从复制实现(第一种情况亲测) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一種:

  • ?? ?開啟兩個mongodb進程,模擬兩臺機器;
  • ?? ?一個為master主服務器,另一個為slave從服務器;
  • ?? ?主服務器down機后,從服務器不會成為主服務器。
[python] view plain copy
  • #在當前目錄下創建mongodb的數據文件??
  • zheng@zheng:~$?cd?./mongodbTest/??
  • mkdir?./t1/db??
  • mkdir?./t2/db??
  • mkdir?./t1/log??
  • mkdir?./t2/log??
  • touch?./t1/log/mongodb.log??
  • touch?./t2/log/mongodb.log??
  • ??
  • zheng@zheng:~/mongodbTest$?tree??
  • .??
  • ├──?t1??
  • │???├──?db??
  • │???└──?log??
  • │???????└──?mongodb.log??
  • └──?t2??
  • ????├──?db??
  • ????└──?log??
  • ????????└──?mongodb.log??
  • ??
  • #設置主服務器,并啟動服務??
  • mongod?--dbpath?./t1/db?--logpath?./t1/log/mongodb.log??--port?50001?--logappend?--fork?--master??
  • ??
  • #設置從服務器,并啟動服務。--source?ip:port,設置其主服務器??
  • mongod?--dbpath?./t2/db?--logpath?./t2/log/mongodb.log??--port?50002?--logappend?--fork?--slave?--source?127.0.0.1:50001??
  • ??
  • #進入主數據庫??
  • mongo?--port?50001??
  • ??
  • #在主數據庫插入數據??
  • >?use?stu??
  • switched?to?db?stu??
  • >?for(i=1;i<1000;i++){??
  • ????db.s.insert({name:'hi'+1}??
  • )}??
  • WriteResult({?"nInserted"?:?1?})??
  • >?db.s.find().count()??
  • 999??
  • ??
  • #進入從數據庫??
  • mongo?--port?50002??
  • ??
  • #在從數據庫查詢??
  • >?show?dbs??
  • 2017-09-14T16:54:56.790+0800?E?QUERY????[main]?Error:?listDatabases?failed:{??
  • ????"ok"?:?0,??
  • ????"errmsg"?:?"not?master?and?slaveOk=false",??
  • ????"code"?:?13435,??
  • ????"codeName"?:?"NotMasterNoSlaveOk"??
  • }?:??
  • #從數據庫無法查看數據庫,使用rs.slaveOk()??
  • >?rs.slaveOk()??
  • >?show?dbs??
  • admin??0.000GB??
  • local??0.000GB??
  • stu????0.000GB??
  • >?use?stu??
  • switched?to?db?stu??
  • >?show?collections??
  • s??
  • >?db.s.find().count()??
  • 999??
  • #從數據庫無法插入數據??
  • >?db.stu.insert({name:'hello'})??
  • WriteResult({?"writeError"?:?{?"code"?:?10107,?"errmsg"?:?"not?master"?}?})??

  • 第二種:副本集

    • ?? ?主服務器down機后,從服務器自動切換。
    [python] view plain copy
  • #在當前目錄下創建mongodb的數據文件??
  • zheng@zheng:~$?cd?./mongodbTest/??
  • zheng@zheng:~/mongodbTest$?tree??
  • .??
  • ├──?t1??
  • │???├──?db??
  • │???└──?log??
  • │???????└──?mongodb.log??
  • ├──?t2??
  • │???├──?db??
  • │???└──?log??
  • │???????└──?mongodb.log??
  • └──?t3??
  • ????├──?db??
  • ????└──?log??
  • ????????└──?mongodb.log??
  • ??
  • #啟動三個mongodb進程,--replSet?name:設置三個mongodb在同一個副本下??
  • mongod?--bind_ip?192.168.14.12?--port?50001?--dbpath?./t1/db?--logpath?./t1/log/mongodb.log?--logappend?--fork?--replSet?zheng??
  • mongod?--bind_ip?192.168.14.12?--port?50002?--dbpath?./t2/db?--logpath?./t2/log/mongodb.log?--logappend?--fork?--replSet?zheng??
  • mongod?--bind_ip?192.168.14.12?--port?50003?--dbpath?./t3/db?--logpath?./t3/log/mongodb.log?--logappend?--fork?--replSet?zheng??
  • ??
  • #連接主服務器,此處設置192.168.14.12:50001為主服務器??
  • mongo?--host?192.168.14.12?--port?50001??
  • ??
  • #初始化,哪個服務器先初始化就是主服務器??
  • rs.initiate()??
  • ??
  • #初始化后,提示符變為zheng:SECONDARY>???
  • >?rs.initiate()??
  • {??
  • ????"info2"?:?"no?configuration?specified.?Using?a?default?configuration?for?the?set",??
  • ????"me"?:?"zheng:50001",??
  • ????"ok"?:?1??
  • }??
  • zheng:SECONDARY>???
  • ??
  • #查看當前狀態??
  • rs.status()??

  • [python] view plain copy
  • #提示符變為??
  • zheng:PRIMARY>??
  • ??
  • #添加副本集??
  • rs.add('192.168.14.12:50002')??
  • rs.add('192.168.14.12:50003')??
  • [python] view plain copy
  • #副本集添加成功后,當前狀態如圖??


  • [python] view plain copy
  • #向主服務器中插入數據??
  • zheng:PRIMARY>?db??
  • test??
  • zheng:PRIMARY>?for(i=0;i<=10;i++){db.t.insert({name:'name'+i})}??
  • WriteResult({?"nInserted"?:?1?})??
  • zheng:PRIMARY>?db.t.find().count()??
  • 11??
  • ??
  • ??
  • #啟動從服務器??
  • mongo?--host?192.168.14.12?--port?50002??
  • mongo?--host?192.168.14.12?--port?50003??
  • ??
  • #查看數據??
  • zheng:SECONDARY>?rs.slaveOk()??
  • zheng:SECONDARY>?db.t.find()??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e89"),?"name"?:?"name0"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e8a"),?"name"?:?"name1"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e8b"),?"name"?:?"name2"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e8d"),?"name"?:?"name4"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e8c"),?"name"?:?"name3"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e8e"),?"name"?:?"name5"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e8f"),?"name"?:?"name6"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e90"),?"name"?:?"name7"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e91"),?"name"?:?"name8"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e92"),?"name"?:?"name9"?}??
  • {?"_id"?:?ObjectId("59ba7f2060170e82e7b65e93"),?"name"?:?"name10"}??
  • ??
  • #刪除從服務器??
  • rs.remove('192.168.14.12:50002')??

  • #注意
    關閉主服務器后,再重新啟動,會發現原來的從服務器變為了從服務器,新啟動的服務器(原來的從服務器)變為了從服務器


    第三種:

    • 可設置優先級,優先級最高的就先為主服務器;
    • 主服務器down機后,優先級高的為新的主服務器。


    [python] view plain copy
  • #啟動三個mongodb進程,--replSet?name:設置三個mongodb在同一個副本下??
  • 和上面一樣......??
  • ??
  • #啟動mongo服務器??
  • mongo?--host?192.168.14.12?--port?50001??
  • ??
  • #設置主從服務器??
  • use?admin??
  • db.runCommand({"replSetInitiate":{"_id":"zheng","members":[{"_id":1,"host":"192.168.14.12:50001","priority":3},{"_id":2,"host":"192.168.14.12:50002","priority":2},{"_id":3,"host":"192.168.14.12:50003","priority":1}]}})??
  • ??
  • #查看當前狀態??
  • zheng:OTHER>?rs.status()??
  • {??
  • ????"set"?:?"zheng",??
  • ????"date"?:?ISODate("2017-09-14T13:43:58.663Z"),??
  • ????"myState"?:?1,??
  • ????"term"?:?NumberLong(1),??
  • ????"heartbeatIntervalMillis"?:?NumberLong(2000),??
  • ????"optimes"?:?{??
  • ????????"lastCommittedOpTime"?:?{??
  • ????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????"t"?:?NumberLong(1)??
  • ????????},??
  • ????????"appliedOpTime"?:?{??
  • ????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????"t"?:?NumberLong(1)??
  • ????????},??
  • ????????"durableOpTime"?:?{??
  • ????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????"t"?:?NumberLong(1)??
  • ????????}??
  • ????},??
  • ????"members"?:?[??
  • ????????{??
  • ????????????"_id"?:?1,??
  • ????????????"name"?:?"192.168.14.12:50001",??
  • ????????????"health"?:?1,??
  • ????????????"state"?:?1,??
  • ????????????"stateStr"?:?"PRIMARY",??
  • ????????????"uptime"?:?347,??
  • ????????????"optime"?:?{??
  • ????????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????????"t"?:?NumberLong(1)??
  • ????????????},??
  • ????????????"optimeDate"?:?ISODate("2017-09-14T13:43:56Z"),??
  • ????????????"infoMessage"?:?"could?not?find?member?to?sync?from",??
  • ????????????"electionTime"?:?Timestamp(1505396636,?1),??
  • ????????????"electionDate"?:?ISODate("2017-09-14T13:43:56Z"),??
  • ????????????"configVersion"?:?1,??
  • ????????????"self"?:?true??
  • ????????},??
  • ????????{??
  • ????????????"_id"?:?2,??
  • ????????????"name"?:?"192.168.14.12:50002",??
  • ????????????"health"?:?1,??
  • ????????????"state"?:?2,??
  • ????????????"stateStr"?:?"SECONDARY",??
  • ????????????"uptime"?:?12,??
  • ????????????"optime"?:?{??
  • ????????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????????"t"?:?NumberLong(1)??
  • ????????????},??
  • ????????????"optimeDurable"?:?{??
  • ????????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????????"t"?:?NumberLong(1)??
  • ????????????},??
  • ????????????"optimeDate"?:?ISODate("2017-09-14T13:43:56Z"),??
  • ????????????"optimeDurableDate"?:?ISODate("2017-09-14T13:43:56Z"),??
  • ????????????"lastHeartbeat"?:?ISODate("2017-09-14T13:43:58.317Z"),??
  • ????????????"lastHeartbeatRecv"?:?ISODate("2017-09-14T13:43:58.153Z"),??
  • ????????????"pingMs"?:?NumberLong(0),??
  • ????????????"syncingTo"?:?"192.168.14.12:50001",??
  • ????????????"configVersion"?:?1??
  • ????????},??
  • ????????{??
  • ????????????"_id"?:?3,??
  • ????????????"name"?:?"192.168.14.12:50003",??
  • ????????????"health"?:?1,??
  • ????????????"state"?:?2,??
  • ????????????"stateStr"?:?"SECONDARY",??
  • ????????????"uptime"?:?12,??
  • ????????????"optime"?:?{??
  • ????????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????????"t"?:?NumberLong(1)??
  • ????????????},??
  • ????????????"optimeDurable"?:?{??
  • ????????????????"ts"?:?Timestamp(1505396636,?2),??
  • ????????????????"t"?:?NumberLong(1)??
  • ????????????},??
  • ????????????"optimeDate"?:?ISODate("2017-09-14T13:43:56Z"),??
  • ????????????"optimeDurableDate"?:?ISODate("2017-09-14T13:43:56Z"),??
  • ????????????"lastHeartbeat"?:?ISODate("2017-09-14T13:43:58.317Z"),??
  • ????????????"lastHeartbeatRecv"?:?ISODate("2017-09-14T13:43:58.152Z"),??
  • ????????????"pingMs"?:?NumberLong(0),??
  • ????????????"syncingTo"?:?"192.168.14.12:50001",??
  • ????????????"configVersion"?:?1??
  • ????????}??
  • ????],??
  • ????"ok"?:?1??
  • }?

  • 來源:http://blog.csdn.net/zheng_lan_fang/article/details/77986007

    總結

    以上是生活随笔為你收集整理的mongoDB3.4主从复制实现(第一种情况亲测)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。