亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mongodb相關(單實例、復制集、分片集)

發布時間:2020-02-27 08:33:06 來源:網絡 閱讀:2936 作者:wdw王大為 欄目:MongoDB數據庫

一、mongodb的單實例搭建

1、下載包地址

1、各個版本的下載地址
https://www.mongodb.org/downloads
2、本文安裝最新版本3.6.5
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.5.tgz

2、安裝

1、解壓
tar xf mongodb-linux-x86_64-3.6.5.tgz  &&  mv mongodb-linux-x86_64-3.6.5  /usr/local/mongodb-3.6.5

2、創建相關目錄
mkdir -p /data/mongodb27017/{data,log,conf}

3、參數文件配置,vim /data/mongodb27017/conf/mongodb-27017.cnf
port=27017
bind_ip=192.168.142.48,127.0.0.1
dbpath=/data/mongodb27017/data
logpath=/data/mongodb27017/log/mongodb.log
pidfilepath=/data/mongodb27017/mongodb.pid
logappend=true
fork=true
auth=true

3、啟動和關閉

1、啟動mongodb
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27017/conf/mongodb-27017.cnf

2、客戶端命令行首次進入
/usr/local/mongodb-3.6.5/bin/mongo --port=27017

3、創建超管用戶
db.createUser(
{
user: "admin",
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
}
)

4、客戶端命令行再次進入
/usr/local/mongodb-3.6.5/bin/mongo 192.168.142.48:27017/admin -u admin -p123456
> db.getCollectionNames()
[ "system.users", "system.version" ]

5、關閉mongodb
/usr/local/mongodb-3.6.5/bin/mongo 192.168.142.48:27017/admin -u admin -p123456
> db.shutdownServer()

?

二、 mongodb的復制集搭建

在單實例的基礎上創建復制集(已經配置超管用戶)

192.168.142.48:27017
192.168.142.48:27018
192.168.142.48:27019

1、新增keyfile文件

1、vim keyfile
123456all

2、設置權限
chmod 600 keyfile

2、配置文件,基于單實例的基礎上額外增加

# /data/mongodb27017/conf/mongodb-27017.cnf
keyFile=/data/mongodb27017/keyfile
oplogSize=1024
replSet=rs_one

# /data/mongodb27018/conf/mongodb-27018.cnf
keyFile=/data/mongodb27018/keyfile
oplogSize=1024
replSet=rs_one

# /data/mongodb27019/conf/mongodb-27019.cnf
keyFile=/data/mongodb27019/keyfile
oplogSize=1024
replSet=rs_one

3、啟動實例

/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27017/conf/mongodb-27017.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27018/conf/mongodb-27018.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27019/conf/mongodb-27019.cnf

4、配置復制集

1、任意一臺命令行登錄
/usr/local/mongodb-3.6.5/bin/mongo 192.168.142.48:27017/admin -u admin -p123456

2、配置復制集成員
config = {
"_id":"rs_one",
members:[
{"_id":0,host:"192.168.142.48:27017"},
{"_id":1,host:"192.168.142.48:27018"},
{"_id":2,host:"192.168.142.48:27019",arbiterOnly:true}]
}

3、初始化復制集
rs.initiate(config)

4、查看復制集狀態
rs.conf(),查看副本集的配置
rs.status(),查看副本集的狀態
rs.printSlaveReplicationInfo(),查看各節點同步狀態
rs.printReplicationInfo(),查看同步事件概況
db.isMaster(),查看當前復制集概況

5、復制集的管理

1、添加副本集成員
使用rs.add(HOST_NAME:PORT)添加新的副本集機器,例如:rs.add("192.168.142.48:27019")

2、刪除副本集成員
使用rs.remove(HOST_NAME:PORT)刪除副本集機器,例如:rs.remove("192.168.142.48:27019")

3、副本集參數配置
對于復雜的副本集配置,rs.reconfig函數修改比rs.add和rs.remove更有用
    var a = rs.config()
    rs.reconfig(a)

4、解決報錯"not master and slaveOk=false"
    1).本次生效 rs.slaveOk();
    2).永久生效 vim ~/.mongorc.js,增加一行rs.slaveOk(); 這樣的話以后每次通過mongo命令進入從庫都可以查詢了

5、對于仲裁節點修改為副本集普通成員
    1、刪除仲裁節點,rs.remove("192.168.142.48:27019")
    2、重新啟動仲裁節點所在實例(必須)
    3、重新添加成員,rs.add("192.168.142.48:27019")

6、手動降級主節點為普通節點
PRIMARY> rs.stepDown()

6、復制集選舉節點原理
當一個備份節點無法與主節點聯通時,他就聯系并請求其他成員將自己選舉為主節點,其他成員做幾項理性的檢查

1、自身是否能夠與主節點聯通
2、希望被選舉為主節點的備份節點的數據是否是最新
3、有沒有其他更高優先級的成員可以被選舉為主節點

發生主節點選舉時,優先級priority最高的備份節點如果數據不是最新,必須使用復制將自己的數據更新為最新或最新之一,才能成為新的主節點
?

三、 mongodb的分片集搭建

分片集的原理
mongodb相關(單實例、復制集、分片集)

在復制集搭建的基礎上創建分片集

復制集rs_one
192.168.142.48:27017
192.168.142.48:27018
192.168.142.48:27019

復制集rs_two
192.168.142.49:27017
192.168.142.49:27018
192.168.142.49:27019

復制集rs_three
192.168.142.50:27017
192.168.142.50:27018
192.168.142.50:27019

配置服務器config server復制集
復制集rs_cfg
192.168.142.48:40011
192.168.142.48:40012
192.168.142.48:40013

1、配置文件

1、rs_one,rs_two,rs_three涉及的實例配置文件需要(在復制集的基礎上)額外添加
shardsvr=true

2、rs_cfg涉及的實例配置文件需要(在復制集的基礎上)額外添加
configsvr=true

3、mongos的配置文件
port=20000
bind_ip=192.168.142.48,127.0.0.1
logpath=/data/mongodb20000/log/mongodb.log
pidfilepath=/data/mongodb20000/mongodb.pid
keyFile=/data/mongodb20000/keyfile
logappend=true
fork=true
configdb=rs_cfg/192.168.142.48:40011,192.168.142.48:40012,192.168.142.48:40013

note:其中rs_cfg/192.168.142.48:40011,192.168.142.48:40012,192.168.142.48:40013為config server復制集

2、keyfile文件內容保持一致

復制集rs_one,rs_two,rs_three的keyfile文件內容
config server復制集rs_cfg的keyfile文件內容
mongos的keyfile文件內容

文件內容(可更復雜設置)
123456all

3、啟動

1、啟動復制集
rs_one  192.168.142.48
rs_two  192.168.142.49
rs_three  192.168.142.50
分別啟動復制集
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27017/conf/mongodb-27017.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27018/conf/mongodb-27018.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb27019/conf/mongodb-27019.cnf

2、啟動config server復制集rs_cfg
rs_cfg  192.168.142.48
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb40011/conf/mongodb-40011.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb40012/conf/mongodb-40012.cnf
/usr/local/mongodb-3.6.5/bin/mongod -f /data/mongodb40013/conf/mongodb-40013.cnf

3、啟動mongos
192.168.142.48
/usr/local/mongodb-3.6.5/bin/mongos -f /data/mongodb20000/conf/mongodb-20000.cnf

4、配置分片

1、命令行進入mongos
/usr/local/mongodb-3.6.5/bin/mongo 192.168.142.48:20000/admin -u admin -p123456
note:這里雖然搭建mongos無密碼auth認證,但是必須使用密碼認證登錄才能添加分片,密碼和config server保持一致

2、將副本集加入集群中
sh.addShard("rs_one/192.168.142.48:27017,192.168.142.48:27018,192.168.142.48:27019")
sh.addShard("rs_two/192.168.142.49:27017,192.168.142.49:27018,192.168.142.49:27019")
sh.addShard("rs_three/192.168.142.50:27017,192.168.142.50:27018,192.168.142.50:27019")

3、查看集群狀態
sh.status()

4、配置表的分片策略
db.runCommand({enablesharding:"wang"})
db.runCommand({shardcollection:"wang.t1",key:{id:1}})

5、查看表狀態
use wang
for(var i=0;i<100000;i++)  db.t1.insert({"id":i,uname:'wdw'+i});
db.t1.stats()

5、報錯解決,添加addShard沖突

1、報錯信息
mongos> sh.addShard("rs_one/192.168.142.48:27017,192.168.142.48:27018,192.168.142.48:27019")
{
    "ok" : 0,
    "errmsg" : "E11000 duplicate key error collection: admin.system.version index: _id_ dup key: { : \"shardIdentity\" }",
    "code" : 11000,
    "codeName" : "DuplicateKey",
    ......
}

2、解決,連接rs_one主節點,刪除admin.system.version集合中記錄
rs_one:PRIMARY> db.system.version.remove({"_id":"shardIdentity"})
WriteResult({
    "writeError" : {
        "code" : 13,
        "errmsg" : "not authorized on admin to execute command { delete: \"system.version\", ordered: true, $clusterTime: { clusterTime: Timestamp(1528280178, 1), signature: { hash: BinData(0, 914ECCE14D194F41251247EAB282E1F346D4C7D0), keyId: 6563852648502525972 } }, $db: \"admin\" }"
    }
})
報錯由于admin用戶的角色是root,不具有修改admin.system.version的權限,添加對應權限
db.grantRolesToUser("admin", [ { role: "__system", db: "admin" } ])

3、再次刪除
rs_one:PRIMARY> db.system.version.remove({"_id":"shardIdentity"})
WriteResult({
    "nRemoved" : 0,
    "writeError" : {
        "code" : 40070,
        "errmsg" : "cannot delete shardIdentity document while in --shardsvr mode"
    }
})
刪除時報錯,意思是說不能在分片模式下刪除這張表中的這條記錄,然后我們關閉rs_one,然后以非shardsvr的方式啟動,刪除這條記錄后,再以shardsvr方式啟動

4、以非shardsvr的方式啟動,刪除這條記錄,再以shardsvr方式啟動
    1)配置文件注釋掉 #shardsvr=true
    2)重新啟動實例
    3)刪除system.version對應記錄,db.system.version.remove({"_id":"shardIdentity"})
    4)配置文件開啟 shardsvr=true
    5)重新啟動實例

5、重新addShard
ongos> sh.addShard("rs_one/192.168.142.48:27017,192.168.142.48:27018,192.168.142.48:27019")
{
    "shardAdded" : "rs_one",
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1528284663, 7),
        "signature" : {
            "hash" : BinData(0,"qLejzYtJDR1Bpt84+Hapdi1w1/I="),
            "keyId" : NumberLong("6563903792973086740")
        }
    },
    "operationTime" : Timestamp(1528284663, 7)
}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沛县| 柳河县| 太白县| 确山县| 玉树县| 吴堡县| 宾川县| 来宾市| 高要市| 福海县| 南陵县| 岱山县| 灵武市| 长宁区| 台中县| 仁化县| 新竹县| 洛阳市| 比如县| 荥阳市| 天全县| 抚州市| 康乐县| 任丘市| 云林县| 石景山区| 南城县| 云阳县| 丘北县| 芮城县| 汝城县| 和硕县| 曲松县| 玉溪市| 丰都县| 灵宝市| 汾西县| 呈贡县| 桦甸市| 德惠市| 资源县|