搜尋此網誌
2017年3月12日 星期日
2017年3月10日 星期五
Mongodb 建立有 security 機制的同步備份設定
第1步最重要, DNS 沒有設定合理, 同步備份就無法開始。Primary主機就找不到 Member
1. 每台電腦都必須 setup hostname and dns record
vi /etc/hosts
add IP and domain name
2. 每台電腦都必須
echo "syncme" > /etc/mongod.key
chown mongod:mongod /etc/mongod.key
3. 每台電腦都必須
vi /etc/mongod.conf
security:
authorization: enabled
keyFile: /etc/mongod.key
replication:
oplogSizeMB: 10240
replSetName: rs1
systemctl restart mongod
4. 回到 Primary 主機上
mongo --authenticationDatabase=admin -u root -p password --host 127.0.0.1
初使化 replSet
rs.initiate()
確認
rs.status()
會看到PRIMARY字眼,表示初始化完成
加入第2台DB
rs.add("192.168.1.2:27017")
加入第3台DB
rs.add("192.168.1.3:27017")
依此類推
1. 每台電腦都必須 setup hostname and dns record
vi /etc/hosts
add IP and domain name
2. 每台電腦都必須
echo "syncme" > /etc/mongod.key
chown mongod:mongod /etc/mongod.key
3. 每台電腦都必須
vi /etc/mongod.conf
security:
authorization: enabled
keyFile: /etc/mongod.key
replication:
oplogSizeMB: 10240
replSetName: rs1
systemctl restart mongod
4. 回到 Primary 主機上
mongo --authenticationDatabase=admin -u root -p password --host 127.0.0.1
初使化 replSet
rs.initiate()
確認
rs.status()
會看到PRIMARY字眼,表示初始化完成
加入第2台DB
rs.add("192.168.1.2:27017")
加入第3台DB
rs.add("192.168.1.3:27017")
依此類推
- The End -
2017年3月3日 星期五
以 mongod --repair 修復DB資料
先停止 mongod 的服務,
語法: mongod --dbpath DB資料匣 --repair --repairpath 修復後的DB資料匣
範例: mongod --dbpath /data/db --repair --repairpath /data/db0
修復期間,會在 DB資料匣 建立一個 mongod.lock 以防止 MONGO 服務啟動
修復完畢,會自動被刪除掉。
要注意的是,修復好的DB 必須要注意其擁有者權限是否被更動為 root 了
不然 MONGO 服務就會啟動失敗,一旦啟動失敗 立刻查看 LOG 最後的紀錄原因。
參考資料
- THE END -
語法: mongod --dbpath DB資料匣 --repair --repairpath 修復後的DB資料匣
範例: mongod --dbpath /data/db --repair --repairpath /data/db0
修復期間,會在 DB資料匣 建立一個 mongod.lock 以防止 MONGO 服務啟動
修復完畢,會自動被刪除掉。
要注意的是,修復好的DB 必須要注意其擁有者權限是否被更動為 root 了
不然 MONGO 服務就會啟動失敗,一旦啟動失敗 立刻查看 LOG 最後的紀錄原因。
參考資料
- THE END -
2017年1月5日 星期四
MongoDB 3.x 啟用連線認證
先參考
https://scalegrid.io/blog/configuring-mongodb-cr-authentication-as-default-on-mongodb-3-x/
以及這篇 另外 Bugj問題這篇(MongoDB - admin user not authorized)
如果另一台MongoDB不調整認證方式,會導致資料恢復失敗,所以:
執行以下指令:
db.adminCommand({authSchemaUpgrade: 1});
確認出現 OK 的提示之後,日後進行 Data Restore 才不會出現以下
the users and roles collections in the dump have an incompatible auth version with target server: cannot restore users of auth version 5 to a server of auth version 3
官方文件參考
- The End -
https://scalegrid.io/blog/configuring-mongodb-cr-authentication-as-default-on-mongodb-3-x/
以及這篇 另外 Bugj問題這篇(MongoDB - admin user not authorized)
先新增管理員
切換到admin資料庫
use admin
新增使用者
db.createUser(
{
user: "superuser",
pwd: "xxxxxxxxxx",
roles: [ { role: "root", db: "admin" } ]
}
)
新增唯獨權限的使用者 將來管理方便
use admin
db.createUser(
{
user: "reader",
pwd: "reader1234567",
roles: [ { role: "readAnyDatabase", db: "admin" } ]
}
)
use admin
db.createUser(
{
user: "reader",
pwd: "reader1234567",
roles: [ { role: "readAnyDatabase", db: "admin" } ]
}
)
啟用 MongoDB 的帳密連線
vi /etc/mongod.conf
security:
authorization: enabled
然後重啟
systemctl restart mongod
還沒結束!!!
因為Mongodb 啟用連線認證之後,所以備份的資料結構都改變了,如果另一台MongoDB不調整認證方式,會導致資料恢復失敗,所以:
連線進去
mongo --authenticationDatabase=admin -u superuser -p xxxxxxxxxx 執行以下指令:
db.adminCommand({authSchemaUpgrade: 1});
確認出現 OK 的提示之後,日後進行 Data Restore 才不會出現以下
the users and roles collections in the dump have an incompatible auth version with target server: cannot restore users of auth version 5 to a server of auth version 3
官方文件參考
2016年12月13日 星期二
BananaPI M2Ultra 香蕉派跑 MongoDB
四年前好奇香蕉派與樹莓派有什麼差異,就買了一張來玩玩看。當時單核心CPU的樹莓已經很轟動了,就試試看標榜雙核CPU的香蕉吧。結果一次就喜歡上了,雖然經過幾年下來,也是有買 RASPBERRY PI 3 MODEL B 來用。
可是最近要測試 MongoDB , 就發現 RAM 不太夠用了。最近看到香蕉派M2Ultra這款有2GB的RAM,且還內建8GB 的 eMMC flash,就上掏寶下單了。後來測試MongoDB的心得,效能還真的很不錯。打算再買M64繼續試試看。
拆開前樣子
從紙盒拆開的樣子
一樣很好奇播放 MP4 影片的效能,當我接上了4年前買的 INTEL SSD 之後,看到以前第一代香蕉幫我傳回來的影片,立刻播放看看,果然很順暢。
另外,因為板子上內建了8GB 的 eMMC flash,所以可以透過 dd 指令,將 image 拷入當做硬碟開機的概念。整個過程大約要17分鐘,我是將 image 先放進USB裡, 然後再從 USB 拷進 eMMC flash 的。現在不用插記憶卡也能開機,簡直跟一般電腦沒什麼兩樣了。
例如:
先用 sudo fdisk -l 找到 emmc 的裝置名稱,通常是 /dev/mmcblk1
接下來將 image 燒錄至 emmc 裡面:
sudo dd if=ubuntu-mate-15.10-desktop-armhf-raspberry-pi-2-bpi-m3-sd-emmc-20151203.img of=/dev/mmcblk1 bs=10MB
(參考這裡 http://droidspa.blogspot.tw/search/label/Banana%20PI)
至於一開始的記憶卡,我推薦購買 U3 規格的 16GB 卡片來用,價格帶已經讓一般人容易入手了,image 的寫入速度快了一倍以上,開機速度也加快許多。
可是最近要測試 MongoDB , 就發現 RAM 不太夠用了。最近看到香蕉派M2Ultra這款有2GB的RAM,且還內建8GB 的 eMMC flash,就上掏寶下單了。後來測試MongoDB的心得,效能還真的很不錯。打算再買M64繼續試試看。
拆開前樣子
從紙盒拆開的樣子
拿出壓克力
拿出香蕉派 M2U
組合好的樣子
為了接上 SSD HD, 還跑了一趟光華去買了這個 DC 接頭。
最後,
MongoDB 運行時候資料讀寫過程中,CPU 的4個核心都同時運作,實在很滿意。希望開機 IMAGE 更新可以再更快一些。一樣很好奇播放 MP4 影片的效能,當我接上了4年前買的 INTEL SSD 之後,看到以前第一代香蕉幫我傳回來的影片,立刻播放看看,果然很順暢。
另外,因為板子上內建了8GB 的 eMMC flash,所以可以透過 dd 指令,將 image 拷入當做硬碟開機的概念。整個過程大約要17分鐘,我是將 image 先放進USB裡, 然後再從 USB 拷進 eMMC flash 的。現在不用插記憶卡也能開機,簡直跟一般電腦沒什麼兩樣了。
例如:
先用 sudo fdisk -l 找到 emmc 的裝置名稱,通常是 /dev/mmcblk1
接下來將 image 燒錄至 emmc 裡面:
sudo dd if=ubuntu-mate-15.10-desktop-armhf-raspberry-pi-2-bpi-m3-sd-emmc-20151203.img of=/dev/mmcblk1 bs=10MB
(參考這裡 http://droidspa.blogspot.tw/search/label/Banana%20PI)
至於一開始的記憶卡,我推薦購買 U3 規格的 16GB 卡片來用,價格帶已經讓一般人容易入手了,image 的寫入速度快了一倍以上,開機速度也加快許多。
2016年12月9日 星期五
BananaPI UBUNTU 16.04 安裝 MongoDB
先註記一下, MongoDB 最好是跑在 32bits 上
但是我還沒購買 64bits 的Banana PI,所以就先強制安裝 32bits 吧。
因此命令模式執行 mongo client 就會看到溫馨提示32bits有記憶體的限制等等。
開始:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
注意
Ubuntu 16.04 版本的方式
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Ubuntu 14.04 版本的方式
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
然後務必
apt-get update
接下來,安裝
apt-get install -y mongodb mongodb-clients mongodb-server
完成之後,確認服務狀態
service mongodb status
設定開機服務自動啟動
systemctl enable mongodb
systemctl status mongodb
- The End -
但是我還沒購買 64bits 的Banana PI,所以就先強制安裝 32bits 吧。
因此命令模式執行 mongo client 就會看到溫馨提示32bits有記憶體的限制等等。
開始:
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
注意
Ubuntu 16.04 版本的方式
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Ubuntu 14.04 版本的方式
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
然後務必
apt-get update
接下來,安裝
apt-get install -y mongodb mongodb-clients mongodb-server
完成之後,確認服務狀態
service mongodb status
設定開機服務自動啟動
systemctl enable mongodb
systemctl status mongodb
- The End -
2016年11月15日 星期二
創建 mongodb 的 pid
在 centos 底下,創建 mongodb 的 pid
不然每次要找 mongo 都很不好找到。
ln -s /var/lib/mongo/mongod.lock /var/run/mongodb.pid
- END -
不然每次要找 mongo 都很不好找到。
ln -s /var/lib/mongo/mongod.lock /var/run/mongodb.pid
- END -
2016年8月30日 星期二
查出 MongoDB 各個 DB 或 collection 的 size
查出 MongoDB 各個 DB 的 size
在 shell 底下,執行以下
db.adminCommand( { listDatabases: 1 } )
查出 MongoDB 各個 collection 的 size
在 shell 底下,執行以下
Example output (first metric is
在 shell 底下,執行以下
db.adminCommand( { listDatabases: 1 } )
查出 MongoDB 各個 collection 的 size
在 shell 底下,執行以下
var collectionNames = db.getCollectionNames(), stats = [];
collectionNames.forEach(function (n) { stats.push(db[n].stats()); });
stats = stats.sort(function(a, b) { return b['size'] - a['size']; });
for (var c in stats) { print(stats[c]['ns'] + ": " + stats[c]['size'] + " (" + stats[c]['storageSize'] + ")"); }
Example output (first metric is
size
, second is storageSize
)
2016年8月6日 星期六
mongodb backup and restore
全部DataBase
(有規劃 replication) 在 linux 底下範例:
mongodump --host 127.0.0.1 --port 27017 --oplog --out /var2/db_backup/
(無規劃 replication) 在 linux 底下範例:
mongodump --host 127.0.0.1 --port 27017 --out /var2/db_backup/
在 linux 底下範例:
(有規劃 replication) 在 linux 底下範例:
mongorestore --oplogReplay -h 127.0.0.1 /var2/db_backup
(無規劃 replication) 在 linux 底下範例:
mongorestore --drop -h 127.0.0.1 /tmp/db_backup
特定 Database
mongodb 在 linux 底下 backup 範例:
mongodump -h 127.0.0.1 -d Octavius -o ./Octavius-backup
mongodb 在 linux 底下 restore 範例:
mongorestore --drop -h 127.0.0.1 -d Octavius /tmp/db/Octavius
Windows版的 MongoDB
mongodb 在 dos 底下 backup 範例:
mongodump --drop /h 127.0.0.1 /d Octavius --out E:\TEMP\db\Octavius
mongodb 在 dos 底下 restore 範例:
mongorestore --drop /h 127.0.0.1:27017 /d Octavius --out E:\TEMP\db\Octavius
有設定帳密審核的 linux 底下
先去官網下載整套mongo,不要使用 yum 下載的版本,因為帳密永遠核不通過
假設帳密已經存在 admin 這個database裡面
mongodump --host 127.0.0.1 --port 27017 --authenticationDatabase=admin -u username -p userpassword --oplog --out /var2/db_backup/
mongorestore --drop -h 127.0.0.1 --port 27017 --authenticationDatabase=admin -u username -p userpassword /var2/db_backup/
2016年8月1日 星期一
MongoDB Log Rotation
參考 https://docs.mongodb.com/manual/tutorial/rotate-log-files/
由於 LOG SIZE 愈來愈大,導致讀取LOG緩慢
透過 Log Rotation,可以立刻以新的檔案名稱繼續寫LOG
舊的Log 檔名自動會被備標註 日期期間
登入 mongo 之後
use admin
db.runCommand( { logRotate : 1 } )
即可
由於 LOG SIZE 愈來愈大,導致讀取LOG緩慢
透過 Log Rotation,可以立刻以新的檔案名稱繼續寫LOG
舊的Log 檔名自動會被備標註 日期期間
登入 mongo 之後
use admin
db.runCommand( { logRotate : 1 } )
即可
2016年7月30日 星期六
改變 MongoDB 的 ReplicaSet heartbeat timeout
由於兩岸網路不穩定,影響 MongoDB 的 replica set 效能
heartbeatIntervalMillis 預設是 2000 微秒,我將它放大3倍
heartbeat timeout 預設是 10 秒,我將它放大3倍
先用 rs.conf(); 看一下內容,在最尾巴的 settings 裡面會呈現出來
config = rs.conf()
config.settings.heartbeatIntervalMillis=6000
config.settings.heartbeatTimeoutSecs=30
rs.reconfig(config, {force : true})
2016年7月18日 星期一
MongoDB 強制設定為 PRIMARY
MongoDB 的 Replica sets 很厲害。但是要控制它還要花點功夫。大家都會用到當發生狀況,從 Primary 轉變為 Secondary 之後,怎麼再轉回 Primary 問題。
priority 值愈大,就是 primary
輸入 rs.config() 可以看到參數狀態
例如要對第2台主機改變成為 primary 的話,可以採用以下
config = rs.conf()
config.members[3].priority = 0.5
rs.reconfig(config, {force : true})
還有一種情況,當 primary 主機停機超過 10秒
也會降格成為 secondary
官網提到以下兩個指令,可以令SERVER不關機情況下,改以手動控制SERVER
凍結 Replica sets 幾秒 :
暫停掉 Replica sets 幾秒 :
priority 值愈大,就是 primary
輸入 rs.config() 可以看到參數狀態
例如要對第2台主機改變成為 primary 的話,可以採用以下
config = rs.conf()
config.members[3].priority = 0.5
rs.reconfig(config, {force : true})
還有一種情況,當 primary 主機停機超過 10秒
也會降格成為 secondary
官網提到以下兩個指令,可以令SERVER不關機情況下,改以手動控制SERVER
凍結 Replica sets 幾秒 :
rs.freeze(120)或
暫停掉 Replica sets 幾秒 :
rs.stepDown(120)
2016年5月26日 星期四
Linux MongoDB Replication
寫在前面,避免踩到地雷。因為架設了環境,省略了DNS SERVER存在,所以就在各DB主機上,直接修改 hosts 圖方便,讓各DB主機可以相互用 hostname 找到對方,而不是用 IP 位置來找彼此。但是要注意:
不可以在扮演仲裁角色(arbiters)的主機上,hosts寫成這樣
127.0.0.1 mongodb4 mongodb4.hgdata.com.tw
正確應該是
192.168.1.xx mongodb4 mongodb4.hgdata.com.tw
否則仲裁角色主機會一直呈現 OTHER> 的提示,
從 telnet localhost 27017 失敗時候發現的
telnet localhost 27017 會失敗,但是
telnet 127.0.0.1 27017 卻成功。
=======================================
製作KEY ( 如不製作KEY 本節可以先忽略)
openssl rand -base64 741 > /var/lib/mongo/mongo-keyfile
chmod 600 mongo-keyfile
chown mongod.mongod /var/lib/mongo/mongo-keyfile
改 600 屬性,一定要作,不然無法啟動 MongoDB
把這 Key 放到每一台機器的 /var/lib/mongo/mongo-keyfile 檔案中。
接下來就要啟用 Replica Set 與認證模式。
vi /etc/mongod.conf
改以下
security:
keyFile: /var/lib/mongo/mongo-keyfile
重啟 MongoDB 服務
systemctl restart mongod
=======================================
架構上,分別有4台 MongoDB Server
192.168.1.51 Mondb1
192.168.1.52 Mondb2
192.168.1.53 Mondb3
192.168.1.54 Mondb4 規劃轉成仲裁角色,用來分配其他三台成員的角色
開始:
vi /etc/mongod.conf
改以下
replication:
oplogSizeMB: 10240
replSetName: "rs1"
重啟 MongoDB 服務
systemctl restart mongod
=======================================
從 192.168.1.21 輸入 mongo 進去 concole
確認
rs.status()
初使化 replSet
rs.initiate()
再確認
rs.status()
會看到PRIMARY字眼,表示初始化完成
加入第二台DB
rs.add("192.168.1.22:27017")
rs.add("192.168.1.23:27017")
加入仲裁主機
rs.addArb("192.168.1.24:27017")
從 192.168.1.21 再確認
rs.status()
看到 192.168.1.22 是
"health" : 1,
"state" : 0,
"stateStr" : "STARTUP"
state的意義
0 Phase 1, starting up
1 Primary member
2 Secondary member
然後發現 192.168.1.21 變成了 rs1:SECONDARY> 提示
意思各主機之間選舉完成,該主機已經轉型成 SECONDARY 角色
*** 到 192.168.1.22 主機上
初使化 replSet
rs.initiate()
確認
rs.status()
然後發現 192.168.1.22 變成了 rs1:PRIMARY> 提示
*** 到 192.168.1.23 主機上
初使化 replSet
rs.initiate()
注意:如果 /etc/mongod.conf 裡面的設定是 bindIp: 127.0.0.1 就會失敗
確認
rs.status()
然後發現 192.168.1.23 變成了 rs1:PRIMARY> 提示
-----------------------------------------------
END
-----------------------------------------------
查看複制集狀態
rs.status()
rs.isMaster();
以rs.help() 顯示更多 rs指令
以db.help() 顯示更多 db指令
db.oplog.rs.find();
db.printReplicationInfo();
db.printSlaveReplicationInfo();
db.system.replset.find();
db.getMongo().setSlaveOk();
增加節點
rs.add("localhost:28013")
rs.status();
減少節點
rs.remove("localhost:28014")
不可以在扮演仲裁角色(arbiters)的主機上,hosts寫成這樣
127.0.0.1 mongodb4 mongodb4.hgdata.com.tw
正確應該是
192.168.1.xx mongodb4 mongodb4.hgdata.com.tw
否則仲裁角色主機會一直呈現 OTHER> 的提示,
從 telnet localhost 27017 失敗時候發現的
telnet localhost 27017 會失敗,但是
telnet 127.0.0.1 27017 卻成功。
=======================================
製作KEY ( 如不製作KEY 本節可以先忽略)
openssl rand -base64 741 > /var/lib/mongo/mongo-keyfile
chmod 600 mongo-keyfile
chown mongod.mongod /var/lib/mongo/mongo-keyfile
改 600 屬性,一定要作,不然無法啟動 MongoDB
把這 Key 放到每一台機器的 /var/lib/mongo/mongo-keyfile 檔案中。
接下來就要啟用 Replica Set 與認證模式。
vi /etc/mongod.conf
改以下
security:
keyFile: /var/lib/mongo/mongo-keyfile
重啟 MongoDB 服務
systemctl restart mongod
=======================================
架構上,分別有4台 MongoDB Server
192.168.1.51 Mondb1
192.168.1.52 Mondb2
192.168.1.53 Mondb3
192.168.1.54 Mondb4 規劃轉成仲裁角色,用來分配其他三台成員的角色
開始:
vi /etc/mongod.conf
改以下
replication:
oplogSizeMB: 10240
replSetName: "rs1"
重啟 MongoDB 服務
systemctl restart mongod
=======================================
從 192.168.1.21 輸入 mongo 進去 concole
確認
rs.status()
初使化 replSet
rs.initiate()
再確認
rs.status()
會看到PRIMARY字眼,表示初始化完成
加入第二台DB
rs.add("192.168.1.22:27017")
rs.add("192.168.1.23:27017")
加入仲裁主機
rs.addArb("192.168.1.24:27017")
從 192.168.1.21 再確認
rs.status()
看到 192.168.1.22 是
"health" : 1,
"state" : 0,
"stateStr" : "STARTUP"
state的意義
0 Phase 1, starting up
1 Primary member
2 Secondary member
然後發現 192.168.1.21 變成了 rs1:SECONDARY> 提示
意思各主機之間選舉完成,該主機已經轉型成 SECONDARY 角色
*** 到 192.168.1.22 主機上
初使化 replSet
rs.initiate()
確認
rs.status()
然後發現 192.168.1.22 變成了 rs1:PRIMARY> 提示
*** 到 192.168.1.23 主機上
初使化 replSet
rs.initiate()
注意:如果 /etc/mongod.conf 裡面的設定是 bindIp: 127.0.0.1 就會失敗
確認
rs.status()
然後發現 192.168.1.23 變成了 rs1:PRIMARY> 提示
確認本機DB 角色是否為 Master, 指令:
rs.isMaster()
END
-----------------------------------------------
查看複制集狀態
rs.status()
rs.isMaster();
以rs.help() 顯示更多 rs指令
以db.help() 顯示更多 db指令
db.oplog.rs.find();
db.printReplicationInfo();
db.printSlaveReplicationInfo();
db.system.replset.find();
db.getMongo().setSlaveOk();
增加節點
rs.add("localhost:28013")
rs.status();
減少節點
rs.remove("localhost:28014")
2016年5月25日 星期三
Centos7 安裝 MongoDB
由於 selinux 會影響 mongodb 的啟動,所以
vi /etc/selinux/config
SELINUX=disabled
然後重啟 OS
1. 加入 MongoDB Repository
vi /etc/yum.repos.d/mongodb.repo
參考 https://www.mongodb.com/download-center?jmp=nav#community
OS 是 64-Bit 的話
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
2. 安裝 3.4.x:
yum install -y mongodb-org
(會自動安裝五個套件:
mongodb-org-3.4.x
mongodb-org-server
mongodb-org-shell
mongodb-org-tools
mongodb-org-mongos
)
3. 修改
vi /etc/mongod.conf
先將預設的 bind IP 127.0.0.1 修改為 0.0.0.0
vi /etc/security/limits.d/20-nproc.conf
尾巴加一行後存檔
mongod soft nproc 500000
4. 防火牆設定
systemctl stop firewalld
systemctl disable firewalld
或者是
firewall-cmd --permanent --zone=public --add-port=27017/tcp
firewall-cmd --reload
systemctl restart mongod
5. 啟動與查服務的狀態
systemctl enable mongod
systemctl start mongod
ps auxw | grep mongod
systemctl status mongod
如果無法執行,可以考慮兩個方向:
1. SELINUX=disabled
vi /etc/selinux/config
SELINUX=disabled
2. 如果 SELinux 是enforcing 模式,則
yum -y install policycoreutils-python
semanage port -a -t mongod_port_t -p tcp 27017
查 LOG
/var/log/mongodb/mongod.log
6. 最後參照官網教學 Disable Transparent Huge Pages ( Link )
vi /etc/init.d/disable-transparent-hugepages
填入以下腳本檔內容
chmod 755 /etc/init.d/disable-transparent-hugepages
根據 OS 的不同,參考以下指令:
將作業系統重新開機,登入之後 啟動 mongo 確認是否還有警告提示
vi /etc/selinux/config
SELINUX=disabled
然後重啟 OS
1. 加入 MongoDB Repository
vi /etc/yum.repos.d/mongodb.repo
參考 https://www.mongodb.com/download-center?jmp=nav#community
OS 是 64-Bit 的話
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
2. 安裝 3.4.x:
yum install -y mongodb-org
(會自動安裝五個套件:
mongodb-org-3.4.x
mongodb-org-server
mongodb-org-shell
mongodb-org-tools
mongodb-org-mongos
)
3. 修改
vi /etc/mongod.conf
先將預設的 bind IP 127.0.0.1 修改為 0.0.0.0
vi /etc/security/limits.d/20-nproc.conf
尾巴加一行後存檔
mongod soft nproc 500000
4. 防火牆設定
systemctl stop firewalld
systemctl disable firewalld
或者是
firewall-cmd --permanent --zone=public --add-port=27017/tcp
firewall-cmd --reload
systemctl restart mongod
5. 啟動與查服務的狀態
systemctl enable mongod
systemctl start mongod
ps auxw | grep mongod
systemctl status mongod
如果無法執行,可以考慮兩個方向:
1. SELINUX=disabled
vi /etc/selinux/config
SELINUX=disabled
2. 如果 SELinux 是enforcing 模式,則
yum -y install policycoreutils-python
semanage port -a -t mongod_port_t -p tcp 27017
查 LOG
/var/log/mongodb/mongod.log
6. 最後參照官網教學 Disable Transparent Huge Pages ( Link )
vi /etc/init.d/disable-transparent-hugepages
填入以下腳本檔內容
#!/bin/bash ### BEGIN INIT INFO # Provides: disable-transparent-hugepages # Required-Start: $local_fs # Required-Stop: # X-Start-Before: mongod mongodb-mms-automation-agent # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Disable Linux transparent huge pages # Description: Disable Linux transparent huge pages, to improve # database performance. ### END INIT INFO case $1 in start) if [ -d /sys/kernel/mm/transparent_hugepage ]; then thp_path=/sys/kernel/mm/transparent_hugepage elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then thp_path=/sys/kernel/mm/redhat_transparent_hugepage else return 0 fi echo 'never' > ${thp_path}/enabled echo 'never' > ${thp_path}/defrag re='^[0-1]+$' if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]] then # RHEL 7 echo 0 > ${thp_path}/khugepaged/defrag else # RHEL 6 echo 'no' > ${thp_path}/khugepaged/defrag fi unset re unset thp_path ;; esac設定可執行權限
chmod 755 /etc/init.d/disable-transparent-hugepages
根據 OS 的不同,參考以下指令:
Distribution | Command |
---|---|
Ubuntu and Debian | sudo update-rc.d disable-transparent-hugepages defaults
|
SUSE | sudo insserv /etc/init.d/disable-transparent-hugepages
|
Red Hat, CentOS, Amazon Linux, and derivatives |
sudo chkconfig --add disable-transparent-hugepages
|
2015年4月27日 星期一
Install MongoDB on Red Hat Enterprise, CentOS, or Fedora
Source:http://docs.mongodb.org/v2.2/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/
vi /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
yum -y install mongo-10gen mongo-10gen-server
chkconfig mongod on
service mongod start
#systemctl start mongod.service
vi /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
yum -y install mongo-10gen mongo-10gen-server
chkconfig mongod on
service mongod start
#systemctl start mongod.service
訂閱:
文章 (Atom)