国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

Mongodb副本集和分片示例詳解

2020-10-29 18:41:23
字體:
來源:轉載
供稿:網友

前言

因為之前沒用過mongo,所以最近的開發踩了不少坑,現在熟練了不少。

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

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

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

Python只用mongo事務

在python中使用使用 pymongo 來操作數據庫

import pymongomc = 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.

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

其實根據英文的意思也差不多能明白是怎么回事,網上搜索后發現了根本原因:事務只支持副本集和切片。而我這開發環境是直接mongod啟的

副本集

副本集搭建

啟動兩個mongodb服務(一個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中執行

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

這樣的的話就可以使用mongodb的事務了

單節點也是支持事務的,我多加一個slave節點只是為了測試一下

slave節點讀

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

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

master選舉

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

分片

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

http://m.survivalescaperooms.com/article/167276.htm

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 塔河县| 平远县| 太仓市| 广宁县| 龙井市| 阳西县| 梁山县| 平陆县| 左贡县| 蕲春县| 万山特区| 洛南县| 太湖县| 中山市| 太原市| 林口县| 延寿县| 镇江市| 英德市| 巴马| 蒙山县| 清流县| 汾西县| 五原县| 博罗县| 墨竹工卡县| 富裕县| 来凤县| 南和县| 舒兰市| 古田县| 绵阳市| 静宁县| 青浦区| 乌拉特后旗| 麻阳| 武夷山市| 黎平县| 旅游| 廉江市| 关岭|