设为首页 收藏本站
查看: 1424|回复: 0

[经验分享] mongodb的安装配置与主从配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-20 10:20:54 | 显示全部楼层 |阅读模式

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB是NoSQL中的一种,随着越来越多公司产品使用,已经开始逐步取代一些高性能查询的地位了。


它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

面向集合存储,易存储对象类型的数据。

模式自由。

支持动态查询。

支持完全索引,包含内部对象。

支持查询。

支持复制和故障恢复。

使用高效的二进制数据存储,包括大型对象(如视频等)。

自动处理碎片,以支持云计算层次的扩展性

支持RUBY,PYTHON,JAVA,C++,PHP等多种语言。

文件存储格式为BSON(一种JSON的扩展)

可通过网络访问

#########  安装过程  ##########

1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@master yunwei]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.3.tgz
[iyunv@master yunwei]# tar zxf mongodb-linux-x86_64-3.0.3.gz -C /usr/local/
[iyunv@master yunwei]# cd /usr/local
[iyunv@master local]# ln -s mongodb-linux-x86_64-3.0.3 mongodb
[iyunv@master local]# ll
lrwxrwxrwx   1 root root   26 Jun 15 10:26 mongodb -> mongodb-linux-x86_64-3.0.3
[iyunv@master local]# cd mongodb
[iyunv@master mongodb]# ll
total 68
drwxr-xr-x 2 root root  4096 Jun 15 10:26 bin
-rw-r--r-- 1 1046 1046 34520 May 12 05:35 GNU-AGPL-3.0
-rw-r--r-- 1 1046 1046  1359 May 12 05:35 README
-rw-r--r-- 1 1046 1046 22660 May 12 05:35 THIRD-PARTY-NOTICES



bin下的mongod就是MongoDB的服务端进程,mongo就是其客户端,其它的命令用于MongoDB的其它用途如MongoDB文件导出等。

2、 启动MongoDB、要先建立好MongoDB 存放数据文件和日志文件的目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
[iyunv@master mongodb]# pwd
/mysqldata/mongodb
[iyunv@master mongodb]# ll
total 8
drwxr-xr-x 2 root root 4096 Jun 15 14:27 db     # 存放db数据的文件
drwxr-xr-x 2 root root 4096 Jun 15 14:28 log    # 存放mongodb的日志文件
[iyunv@master mongodb]# cd log
[iyunv@master log]# pwd
/mysqldata/mongodb/log
[iyunv@master log]# ll
total 4
-rw-r--r-- 1 root root 2440 Jun 15 15:06 mongodb.log
-rw-r--r-- 1 root root    0 Jun 15 15:05 mongodb.log.2015-06-15T07-06-06




3、在MongoDB安装目录下的bin下使用mongod启动MongoDB;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
第一种命令启动:
[iyunv@master mongodb]# cd bin/
[iyunv@master bin]# ll
total 116340
-rwxr-xr-x 1 1046 1046  4305912 May 12 05:35 bsondump
-rwxr-xr-x 1 1046 1046 11694552 May 12 05:43 mongo
-rwxr-xr-x 1 1046 1046 22349960 May 12 05:43 mongod
-rwxr-xr-x 1 1046 1046  6199144 May 12 05:35 mongodump
-rwxr-xr-x 1 1046 1046  6001840 May 12 05:35 mongoexport
-rwxr-xr-x 1 1046 1046  5956232 May 12 05:35 mongofiles
-rwxr-xr-x 1 1046 1046  6211952 May 12 05:35 mongoimport
-rwxr-xr-x 1 1046 1046  5686856 May 12 05:35 mongooplog
-rwxr-xr-x 1 1046 1046 22129448 May 12 05:43 mongoperf
-rwxr-xr-x 1 1046 1046  6332464 May 12 05:35 mongorestore
-rwxr-xr-x 1 1046 1046 10552760 May 12 05:43 mongos
-rwxr-xr-x 1 1046 1046  5909928 May 12 05:35 mongostat
-rwxr-xr-x 1 1046 1046  5769944 May 12 05:35 mongotop
[iyunv@master bin]# ./mongod --help       # 可以使用--help查看mongodb的帮助文档
[iyunv@master bin]# ./mongod --dbpath=/mysqldata/mongodb/db/ --logpath=/mysqldata/mongodb/log/mongodb.log --logappend --port=27017 --fork &
[iyunv@master log]# netstat -lanp | grep 27017
tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      2661/./mongod      
unix  2      [ ACC ]     STREAM     LISTENING     2420077 2661/./mongod       /tmp/mongodb-27017.sock

第二种配置文件启动:
mkdir /etc/mongodb
cd /etc/mongodb
vim mongodb.conf
  port=27017 #端口号
  fork=true #以守护进程的方式运行,创建服务器进程
  logpath=/mysqldata/mongodb/log/mongodb.log #日志输出文件路径
  logappend=true #日志输出方式
  dbpath=/mysqldata/mongodb/db #数据库路径
  shardsvr=true #设置是否分片
  maxConns=600 #数据库的最大连接数
  
启动: mongod -f /etc/mongodb/mongodb.conf





4、可以看到,已启动成功,现在使用mongo客户端访问一下该数据库,看到下面的就说明启动成功了(如果出现在些警告也没关系的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[iyunv@master bin]# ./mongo
MongoDB shell version: 3.0.3
connecting to: test
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
> show dbs;
local  0.078GB
> use local;
switched to db local
> show tables;
startup_log
system.indexes
> select * from system.indexes;
2015-06-15T15:23:16.469+0800 E QUERY    SyntaxError: Unexpected identifier




############  MongoDB一些命令的使用  #############

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[iyunv@master bin]# ./mongo
MongoDB shell version: 3.0.3
connecting to: test
Welcome to the MongoDB shell.
> db    #查看所有数据库
local
> show collections
startup_log
system.indexes
> use mydb #直接use mydb 就可以创建mydb这个数据库
switched to db mydb
> db
mydb
> db.user.save({name:'Rod',age:30})    #新增数据
> for(var i=1;i<=10;i++) db.user.save({x:8,y:i})  #遍历插入10条数据
> db.user.find()
{ "_id" : ObjectId("557e8101e23d20a4115e493d"), "x" : 8, "y" : 1 }
{ "_id" : ObjectId("557e8101e23d20a4115e493e"), "x" : 8, "y" : 2 }
{ "_id" : ObjectId("557e8101e23d20a4115e493f"), "x" : 8, "y" : 3 }
{ "_id" : ObjectId("557e8101e23d20a4115e4940"), "x" : 8, "y" : 4 }
{ "_id" : ObjectId("557e8101e23d20a4115e4941"), "x" : 8, "y" : 5 }
{ "_id" : ObjectId("557e8101e23d20a4115e4942"), "x" : 8, "y" : 6 }
{ "_id" : ObjectId("557e8101e23d20a4115e4943"), "x" : 8, "y" : 7 }
{ "_id" : ObjectId("557e8101e23d20a4115e4944"), "x" : 8, "y" : 8 }
{ "_id" : ObjectId("557e8101e23d20a4115e4945"), "x" : 8, "y" : 9 }
{ "_id" : ObjectId("557e8101e23d20a4115e4946"), "x" : 8, "y" : 10 }
> db.user.find({y:{$lt:5}})    #查询y小于5的数据
{ "_id" : ObjectId("557e8101e23d20a4115e493d"), "x" : 8, "y" : 1 }
{ "_id" : ObjectId("557e8101e23d20a4115e493e"), "x" : 8, "y" : 2 }
{ "_id" : ObjectId("557e8101e23d20a4115e493f"), "x" : 8, "y" : 3 }
{ "_id" : ObjectId("557e8101e23d20a4115e4940"), "x" : 8, "y" : 4 }
> db.user.findOne()    #只查询第一条数据
{ "_id" : ObjectId("557e8101e23d20a4115e493d"), "x" : 8, "y" : 1 }







二、mongodb主从复制配置


主从复制是mongodb最常用的复制方式,这种方式很灵活.可用于备份,故障恢复,读扩展等.最基本的设置方式就是建立一个主节点和一个或多个从节点,每个从节点要知道主节点的地址. 我们用两种方式来实现主从.


这里我们用一主一从实现mongodb的复制
配置文件方式:
1.主机
mongodb-master  10.48.255.244   master
mongodb-slave   10.48.255.243   slave

2.把以上安装过程应用于mongodb这两个主机,配置文件稍加改动
在mongodb-master上,配置文件增加
1
2
master=true
oplogSize=2048 #类似于mysql的日志滚动,单位m




在mongodb-slave上,配置文件增加:
1
2
3
4
slave=true
source=10.48.100.1:27017   #指定主mongodb server
slavedelay=10               #延迟复制,单位为秒
autoresync=true             #当发现从服务器的数据不是最新时,向主服务器请求同步数据





命令方式:
1)实验环境
主:192.168.0.14
从:192.168.0.64

2)时间同步
两台机器做时间同步
[iyunv@zabbix_server src]# ntpdate time.windows.com

3)启动服务
master:192.168.0.14
启动命令

1
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork





slave:192.168.0.64
启动命令

1
/usr/local/mongodb/bin/mongod --slave --source 192.168.0.14:27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork










运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141428-1-1.html 上篇帖子: MongoDB mongodump 按时间区域导出数据 下篇帖子: mongodb副本集
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表