升级MongoDB到3.0.2并启用wiredTiger存储引擎 基于ubuntu 14.04

升级MongoDB到3.0.2并启用wiredTiger存储引擎

首先对mongodb 3.0之前的数据进行备份:

 

for (var i = 1; i <= 50000; i++) {
 db.dbdao.insert( { x : i , name: "dbdao.com" , name1:"dbdao.com", name2:"dbdao.com", name3:"dbdao.com"} )
}

root@dbdao-Inspiron-560s:~# mongodump --out dbdao
connected to: 127.0.0.1
Wed Apr 8 03:41:12.499 all dbs
Wed Apr 8 03:41:12.500 DATABASE: test to dbdao/test
Wed Apr 8 03:41:12.513 test.system.indexes to dbdao/test/system.indexes.bson
Wed Apr 8 03:41:12.514 1 objects
Wed Apr 8 03:41:12.514 test.dbdao to dbdao/test/dbdao.bson
Wed Apr 8 03:41:12.564 50000 objects
Wed Apr 8 03:41:12.564 Metadata for test.dbdao to dbdao/test/dbdao.metadata.json

以上dbdao是用户自己定义的一个备份目录。

 

之后安装mongodb 3.0.2

 

操作系统是Ubuntu 14.04.1 LTS \n \l

主要步骤如下:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo service mongod start



安装详细步骤如下

root@dbdao-Inspiron-560s:~# sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.08FbwQ9cDM --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.com
gpg: key 7F0CEB10: public key "Richard Kreuter <richard@10gen.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

root@dbdao-Inspiron-560s:~# echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse


sudo apt-get update
sudo apt-get install -y mongodb-org

 

之后创建wiredTiger使用的存储目录并修改必要的参数

 

 

sudo mkdir -p /m01/mondata
 sudo chown mongodb:mongodb /m01/mondata
 sudo echo "storageEngine = wiredTiger" >> /etc/mongod.conf 

 修改 sudo vi /etc/mongod.conf 

 dbpath=/var/lib/mongodb

 修改为

 dbpath=/m01/mondata

root@dbdao-Inspiron-560s:~# mongo
MongoDB shell version: 3.0.2
connecting to: test
Server has startup warnings: 
2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] 
2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] 
2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] 
> db.dbdao.count();
50000


修改/etc/security/limits.conf 加入如下内容 : sudo vi /etc/security/limits.conf

* soft nproc 1024
root soft nproc unlimited

* soft nofile 64000 # 加入的内容
* hard nofile 64000 # 加入的内容

修改/etc/rc.local 如下sudo vi /etc/rc.local


touch /var/lock/subsys/local

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then # ↑加入的内容
 echo never > /sys/kernel/mm/transparent_hugepage/enabled # │
fi # │
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then # │
 echo never > /sys/kernel/mm/transparent_hugepage/defrag # │
fi 


修改 /etc/init/mongod.conf , 加入 vi /etc/init/mongod.conf

在pre-start script 这一行下面加入下面的内容

 if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then
 echo never > /sys/kernel/mm/transparent_hugepage/enabled
 fi
 if [ -f /sys/kernel/mm/transparent_hugepage/defrag ]; then
 echo never > /sys/kernel/mm/transparent_hugepage/defrag
 fi


 

之后导入先前的数据,并启动mongodb @wiredTiger

dfsds

root@dbdao-Inspiron-560s:/var/lib/mongodb# sudo service mongod restart
mongod start/running, process 6983
root@dbdao-Inspiron-560s:/var/lib/mongodb# sudo service mongod status
mongod start/running, process 6983



root@dbdao-Inspiron-560s:/m01/mondata# cd /m01/mondata/


root@dbdao-Inspiron-560s:/m01/mondata# ls -l
total 132
-rw-r--r-- 1 mongodb nogroup 16384 Apr 8 04:03 collection-0-1898341878753293233.wt
-rw-r--r-- 1 mongodb nogroup 16384 Apr 8 04:03 index-1-1898341878753293233.wt
drwxr-xr-x 2 mongodb nogroup 4096 Apr 8 04:02 journal
-rw-r--r-- 1 mongodb nogroup 16384 Apr 8 04:03 _mdb_catalog.wt
-rwxr-xr-x 1 mongodb nogroup 5 Apr 8 04:02 mongod.lock
-rw-r--r-- 1 mongodb nogroup 16384 Apr 8 04:04 sizeStorer.wt
-rw-r--r-- 1 mongodb nogroup 95 Apr 8 04:02 storage.bson
-rw-r--r-- 1 mongodb nogroup 46 Apr 8 04:02 WiredTiger
-rw-r--r-- 1 mongodb nogroup 495 Apr 8 04:02 WiredTiger.basecfg
-rw-r--r-- 1 mongodb nogroup 21 Apr 8 04:02 WiredTiger.lock
-rw-r--r-- 1 mongodb nogroup 874 Apr 8 04:04 WiredTiger.turtle
-rw-r--r-- 1 mongodb nogroup 40960 Apr 8 04:04 WiredTiger.wt

通过命令 echo "db.serverStatus()"| mongo|grep wiredTiger 可以确认是否启用了wiredTiger

root@dbdao-Inspiron-560s:/m01/mondata# echo "db.serverStatus()"| mongo|grep wiredTiger
 "name" : "wiredTiger"
 "wiredTiger" : {


使用mongorestore 导入之前导出的数据

root@dbdao-Inspiron-560s:~# mongorestore dbdao/
2015-04-08T04:12:18.779-0400 building a list of dbs and collections to restore from dbdao/ dir
2015-04-08T04:12:18.779-0400 reading metadata file from dbdao/test/dbdao.metadata.json
2015-04-08T04:12:18.780-0400 restoring test.dbdao from file dbdao/test/dbdao.bson
2015-04-08T04:12:19.904-0400 restoring indexes for collection test.dbdao from metadata
2015-04-08T04:12:19.905-0400 finished restoring test.dbdao
2015-04-08T04:12:19.905-0400 done

root@dbdao-Inspiron-560s:~# mongo
MongoDB shell version: 3.0.2
connecting to: test

> db.dbdao.count();
50000

以上完成了mongodb单个节点下的升级,升级后启用了mongodb 3.0最新的wiredTiger存储引擎。
总的来说mongodb的升级要比oracle这类传统RDBMS要简单得多。

Comments

  1. for (var i = 1; i <= 50000; i++) { db.dbdao.insert( { x : i , name: “dbdao.com” , name1:”dbdao.com”, name2:”dbdao.com”, name3:”dbdao.com”} )}root@dbdao-Inspiron-560s:~# mongodump –out dbdaoconnected to: 127.0.0.1Wed Apr 8 03:41:12.499 all dbsWed Apr 8 03:41:12.500 DATABASE: test to dbdao/testWed Apr 8 03:41:12.513 test.system.indexes to dbdao/test/system.indexes.bsonWed Apr 8 03:41:12.514 1 objectsWed Apr 8 03:41:12.514 test.dbdao to dbdao/test/dbdao.bsonWed Apr 8 03:41:12.564 50000 objectsWed Apr 8 03:41:12.564 Metadata for test.dbdao to dbdao/test/dbdao.metadata.jsonsudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10echo “deb http://repo.mongodb.org/apt/ubuntu “$(lsb_release -sc)”/mongodb-org/3.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.listsudo apt-get updatesudo apt-get install -y mongodb-orgsudo service mongod startroot@dbdao-Inspiron-560s:~# sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10Executing: gpg –ignore-time-conflict –no-options –no-default-keyring –homedir /tmp/tmp.08FbwQ9cDM –no-auto-check-trustdb –trust-model always –keyring /etc/apt/trusted.gpg –primary-keyring /etc/apt/trusted.gpg –keyserver hkp://keyserver.ubuntu.com:80 –recv 7F0CEB10gpg: requesting key 7F0CEB10 from hkp server keyserver.ubuntu.comgpg: key 7F0CEB10: public key “Richard Kreuter ” importedgpg: Total number processed: 1gpg: imported: 1 (RSA: 1)root@dbdao-Inspiron-560s:~# echo “deb http://repo.mongodb.org/apt/ubuntu “$(lsb_release -sc)”/mongodb-org/3.0 multiverse” | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.listdeb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiversesudo apt-get updatesudo apt-get install -y mongodb-org sudo mkdir -p /m01/mondata sudo chown mongodb:mongodb /m01/mondata sudo echo “storageEngine = wiredTiger” >> /etc/mongod.conf 修改 sudo vi /etc/mongod.conf dbpath=/var/lib/mongodb 修改为 dbpath=/m01/mondataroot@dbdao-Inspiron-560s:/var/lib/mongodb# sudo service mongod restartmongod start/running, process 6983root@dbdao-Inspiron-560s:/var/lib/mongodb# sudo service mongod statusmongod start/running, process 6983root@dbdao-Inspiron-560s:/m01/mondata# cd /m01/mondata/root@dbdao-Inspiron-560s:/m01/mondata# ls -ltotal 132-rw-r–r– 1 mongodb nogroup 16384 Apr 8 04:03 collection-0-1898341878753293233.wt-rw-r–r– 1 mongodb nogroup 16384 Apr 8 04:03 index-1-1898341878753293233.wtdrwxr-xr-x 2 mongodb nogroup 4096 Apr 8 04:02 journal-rw-r–r– 1 mongodb nogroup 16384 Apr 8 04:03 _mdb_catalog.wt-rwxr-xr-x 1 mongodb nogroup 5 Apr 8 04:02 mongod.lock-rw-r–r– 1 mongodb nogroup 16384 Apr 8 04:04 sizeStorer.wt-rw-r–r– 1 mongodb nogroup 95 Apr 8 04:02 storage.bson-rw-r–r– 1 mongodb nogroup 46 Apr 8 04:02 WiredTiger-rw-r–r– 1 mongodb nogroup 495 Apr 8 04:02 WiredTiger.basecfg-rw-r–r– 1 mongodb nogroup 21 Apr 8 04:02 WiredTiger.lock-rw-r–r– 1 mongodb nogroup 874 Apr 8 04:04 WiredTiger.turtle-rw-r–r– 1 mongodb nogroup 40960 Apr 8 04:04 WiredTiger.wt通过命令 echo “db.serverStatus()”| mongo|grep wiredTiger 可以确认是否启用了wiredTigerroot@dbdao-Inspiron-560s:/m01/mondata# echo “db.serverStatus()”| mongo|grep wiredTiger “name” : “wiredTiger” “wiredTiger” : {使用mongorestore 导入之前导出的数据root@dbdao-Inspiron-560s:~# mongorestore dbdao/2015-04-08T04:12:18.779-0400 building a list of dbs and collections to restore from dbdao/ dir2015-04-08T04:12:18.779-0400 reading metadata file from dbdao/test/dbdao.metadata.json2015-04-08T04:12:18.780-0400 restoring test.dbdao from file dbdao/test/dbdao.bson2015-04-08T04:12:19.904-0400 restoring indexes for collection test.dbdao from metadata2015-04-08T04:12:19.905-0400 finished restoring test.dbdao2015-04-08T04:12:19.905-0400 doneroot@dbdao-Inspiron-560s:~# mongoMongoDB shell version: 3.0.2connecting to: testServer has startup warnings: 2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] 2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is ‘always’.2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** We suggest setting it to ‘never’2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] 2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ‘always’.2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] ** We suggest setting it to ‘never’2015-04-08T04:02:11.903-0400 I CONTROL [initandlisten] > db.dbdao.count();50000修改/etc/security/limits.conf 加入如下内容 : sudo vi /etc/security/limits.conf* soft nproc 1024root soft nproc unlimited* soft nofile 64000 # 加入的内容* hard nofile 64000 # 加入的内容修改/etc/rc.local 如下sudo vi /etc/rc.localtouch /var/lock/subsys/localif test -f /sys/kernel/mm/transparent_hugepage/enabled; then # ↑加入的内容 echo never > /sys/kernel/mm/transparent_hugepage/enabled # │fi # │if test -f /sys/kernel/mm/transparent_hugepage/defrag; then # │ echo never > /sys/kernel/mm/transparent_hugepage/defrag # │fi 修改 /etc/init/mongod.conf , 加入 vi /etc/init/mongod.conf在pre-start script 这一行下面加入下面的内容 if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if [ -f /sys/kernel/mm/transparent_hugepage/defrag ]; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi之后 udo service mongod restart

Trackbacks

  1. […] 注意确保在所有上述Server上已经安装了MongoDB 3.0以上版本,否则首先安装MongoDB,要在Ubuntu上安装MongoDB可以按照这个教程,《升级MongoDB到3.0.2并启用wiredTiger存储引擎 基于ubuntu 14.04》,http://www.askmaclea… […]

  2. […] 注意确保在所有上述Server上已经安装了MongoDB 3.0以上版本,否则首先安装MongoDB,要在Ubuntu上安装MongoDB可以按照这个教程,《升级MongoDB到3.0.2并启用wiredTiger存储引擎 基于ubuntu 14.04》,http://www.askmaclea… […]

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号