中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Mongodb主從模式篇

發布時間:2020-07-28 19:11:29 來源:網絡 閱讀:2356 作者:linuxblind 欄目:MongoDB數據庫

主從模式架構圖:

Mongodb主從模式篇

主從配置安裝:

10.10.20.160(master)-->10.10.20.161(slave)

Master

tar zxvf mongodb-linux-x86_64-2.2.2.tgz

ln -s mongodb-linux-x86_64-2.2.2 mongodb

mkdir -p /u01/mongodata/db/geomaster/

mkdir -p /u01/mongodata/log/

/usr/local/mongodb/bin/mongod --fork --port40000 --dbpath /u01/mongodata/db/geomaster/ --logpath/u01/mongodata/log/geomaster.log --logappend –master

 

Slave

tar zxvf mongodb-linux-x86_64-2.2.2.tgz

ln -s mongodb-linux-x86_64-2.2.2 mongodb

mkdir -p /u01/mongodata/db/geomaster/

mkdir -p /u01/mongodata/log/

/usr/local/mongodb/bin/mongod --fork --port40000 --dbpath /u01/mongodata/db/geoslave/ --logpath /u01/mongodata/log/geosalve.log–logappend --slave --source 10.10.20.160:40000

 

參數說明:

mongodmongoDBserver程序,啟動參數使用的主要有如下幾個

--fork fork出一個server端的daemon進程

--port server監聽端口

--dbpath 數據文件目錄

--logpath 日志文件路徑

--logappend 日志追加到日志文件中,而不是覆蓋寫入

 

mongod在主從情況下可以設置的參數有:

--master master模式

--salve salve模式

--source salve模式下指定master<server:port>

--only 只復制某一個數據庫

--salvedelay 從庫從主庫中同步延時

--autoresync 假如從庫數據不同步,自動同步

 

主從配置完畢后測試:

Master

/usr/local/mongodb/bin/mongo -port 40000

use test;

db.createCollection("table1");

db.test.table1.insert({tag:"test"});

db.test.table1.find();

 

slave

/usr/local/mongodb/bin/mongo -port 40000

db.test.table1.find();

有數據,說明同步成功

同步后在master上用db.currentOp()也能看到slave的線程

 

主從相關命令:

db.isMaster():主從都可執行,用這個命令判斷是不是master

db.getReplicationInfo():主上執行,獲取主從信息

db.printReplicationInfo():主從都可執行,獲取主從信息

db.printSlaveReplicationInfo();:從庫執行,查看主從延時

 

同步失敗處理方法:

如果同步失敗,可使用如下命令同步所有數據:

同步出現問題,日志會有如下記錄

TueFeb 19 16:31:45 [replslave] all sources dead: data too stale haltedreplication, sleeping for 5 seconds

都是每5秒重試,一直在重試,那么如果要解決只能執行下面的命令全部同步一下

Use admin

db.runCommand ( { "resync": 1 } )

也可在啟動從庫時添加--autoresync參數

 

同步原理:

同步就是master上把對數據的更改操作記錄到oplog中,然后slave抓取masteroplog執行。從這點看Oplog的功能和mysqlmysql-bin.的功能類似。Mysql-bin以二進制日志的形式存在,但是oplog是以一個mongodb的表的形式存在,該表在local庫表名為oplog.$main,該表為循環寫入形,所以不用定時清理。

 

修改oplog大小:

我們在首次啟動mongodb服務的時候如果沒有設置oplog的大小,那么它的默認值將是所在硬盤的5%,那么如果我們想要改變大小呢,必須重啟,然后在啟動的時候設置oplogsize,不過還有個小問題,因為之前的oplog已經存在了,所以修改完大小啟動會報錯,Tue Feb 19 15:43:19[initandlisten] cmdline oplogsize (10) different than existing (1779),解決方法就是將mongodb數據目錄下的local.*刪除,參見:http://api.mongodb.org/wiki/current/Halted%20Replication.html

由于刪除后oplog是重建的,slave的時間點信息比masteroplog的開始時間點要小,所以從庫只能做全同步才能繼續同步。但是有個問題,如果主庫數據非常多的話,做一次全同步是一件非常耗時的事,況且數據也沒有丟失。那么現在有個小技巧:

  1. 關閉slavemongo服務

  2. Master上在我們刪除local.*之后,不要急著啟動服務,先用linuxdate命令更改系統時間,讓時間小于slave上同步的最后時間,也就是slave執行db.printSlaveReplicationInfo()看到的時間

  3. 然后啟動主庫和從庫方能繼續同步

向AI問一下細節

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

AI

霍州市| 噶尔县| 界首市| 得荣县| 星座| 饶阳县| 华安县| 安徽省| 九台市| 东阳市| 车致| 竹山县| 兰考县| 富锦市| 漾濞| 巩义市| 吉木乃县| 马关县| 黑山县| 建始县| 五指山市| 长沙县| 平乐县| 黔东| 扎兰屯市| 绩溪县| 宁都县| 茌平县| 新密市| 盘山县| 时尚| 临夏市| 永德县| 隆安县| 汉川市| 克山县| 阜宁县| 稷山县| 五华县| 嘉定区| 和静县|