欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mongodb副本集和分片示例詳解

 更新時間:2019年08月09日 08:32:29   作者:徐彪的網(wǎng)絡(luò)日志  
這篇文章主要給大家介紹了關(guān)于Mongodb副本集和分片的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mongodb具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

因為之前沒用過mongo,所以最近的開發(fā)踩了不少坑,現(xiàn)在熟練了不少。

mongo在許多地方用起來還有許多不如意的地方,比如不知道如何加行鎖,雖然mongo本身可以加寫鎖, 多寫的時候保證原子性,但不能向mysql在事務(wù)中 select ... for update 這樣加鎖, 這樣可以在應(yīng)用代碼中添加邏輯并且保證該對應(yīng)行不被讀取或修改。

還好的是Mongodb4.0是支持事務(wù)的(看網(wǎng)上貌似3.6就支持了,但得自己開啟)。剛好前端時間有些業(yè)務(wù)需求需要用到事務(wù)來保證數(shù)據(jù)的準(zhǔn)確性,因為一個動作內(nèi)有多條出入和修改的操作,如果中途報錯需要回滾。

連接mongo的shell后使用 db.version() 來查看mongodb的版本

Python只用mongo事務(wù)

在python中使用使用 pymongo 來操作數(shù)據(jù)庫

import pymongo
mc = pymongo.MongoClient('mongodb://localhost:27018', connect=False, maxPoolSize=2000)
with mc.start_session() as session:
 with session.start_transaction():
  mc['test']['test'].insert_one({'a': 1}, session=session)
  mc['test']['test'].delete_one({'a': 1}, session=session)
  ...

但在實際使用中卻報了個錯

MongoError: Transaction numbers are only allowed on a replica set member or mongos.

上網(wǎng)搜索后很多解決方法都是npm安裝一個什么包,然后用它啟動mongo。

其實根據(jù)英文的意思也差不多能明白是怎么回事,網(wǎng)上搜索后發(fā)現(xiàn)了根本原因:事務(wù)只支持副本集和切片。而我這開發(fā)環(huán)境是直接mongod啟的

副本集

副本集搭建

啟動兩個mongodb服務(wù)(一個master,一個slave)

# 1
/usr/local/mongodb/mongodb4.0.10/bin/mongod \
--bind_ip=0.0.0.0 --port=27018
--logpath=/var/log/mongodb/mongodb_4_0_10.log \
--dbpath=/data/mongo_4.0.10_db \
--replSet rs0 --fork
# 2
/usr/local/mongodb/mongodb4.0.10/bin/mongod \
--bind_ip=0.0.0.0 --port=27019 \
--logpath=/var/log/mongodb/mongodb_4_0_10-2.log \
--dbpath=/data/mongo_4.0.10_db-2 \
--replSet rs0 --fork

在mongo shell中執(zhí)行

# 啟動一個新的副本集
rs.initiate()
# 添加一個副本集
rs.add("localhost.localdomain:27019")

這樣的的話就可以使用mongodb的事務(wù)了

單節(jié)點也是支持事務(wù)的,我多加一個slave節(jié)點只是為了測試一下

slave節(jié)點讀

默認(rèn)slave節(jié)點是不能讀的,在Mongo客戶端使用命令 db.setSlaveOk() 來開啟slave節(jié)點讀,

這樣的可以讀寫分離(master寫,slave讀),關(guān)于slave讀對副本集間的同步的影響我沒有實踐就不寫了,網(wǎng)上有資料介紹。

master選舉

http://www.mongoing.com/archives/295

分片

分片集群我沒有搭建,這里有個文章寫的比較不錯,分片加副本集搭建,這樣既分流的數(shù)據(jù)也保證了數(shù)據(jù)的備份。等有時間自己搭建我在詳細(xì)記錄這里的坑

http://www.dbjr.com.cn/article/167276.htm

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

最新評論