MongoDB部署(更新中)

一、安装

1、基本规划

目标版本:MongoDB Community Edition 3.6.15

安装方式:YUM

 

2、配置yum源及MongoDB安装

touch /etc/yum.repos.d/mongodb-org-3.6.repo

配置如下

[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

注:版本号可按需修改,如需要安装3.4版本,则 touch /etc/yum.repos.d/mongodb-org-3.4.repo

[mongodb-org-3.4]
name=MongoDB 3.4 Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=1

yum install mongodb-org

Dependencies Resolved

====================================================================================================================================================
 Package                                 Arch                        Version                             Repository                            Size
====================================================================================================================================================
Installing:
 mongodb-org                             x86_64                      3.6.15-1.el7                        mongodb-org-3.6                      5.8 k
Installing for dependencies:
 mongodb-org-mongos                      x86_64                      3.6.15-1.el7                        mongodb-org-3.6                       12 M
 mongodb-org-server                      x86_64                      3.6.15-1.el7                        mongodb-org-3.6                       21 M
 mongodb-org-shell                       x86_64                      3.6.15-1.el7                        mongodb-org-3.6                       12 M
 mongodb-org-tools                       x86_64                      3.6.15-1.el7                        mongodb-org-3.6                       65 M

Transaction Summary
====================================================================================================================================================
Install  1 Package (+4 Dependent packages)

Total download size: 109 M
Installed size: 287 M

100多兆的安装包大小,嫌慢可以直接从以下路径下载:

MongoDB 3.6(RHEL7)RPM包地址

 

二、配置

1、前期配置

ulimit推荐配置:

-f (file size): unlimited
-t (cpu time): unlimited
-v (virtual memory): unlimited [1]
-l (locked-in-memory size): unlimited
-n (open files): 64000
-m (memory size): unlimited [1] [2]
-u (processes/threads): 64000

特别的,RHEL系的Linux会利用nproc限制最大进程数,而不理会ulimit的设置。需要单独配置文件如下:

RHEL / CentOS 7    4096    /etc/security/limits.d/20-nproc.conf
RHEL / CentOS 6    1024    /etc/security/limits.d/90-nproc.conf

具体到MongoDB,可以在 /etc/security/limits.d/99-mongodb-nproc.conf 中配置更大的 soft nproc 和 hard nproc。注:若有运行中mongod、mongos,需要重启生效。

 

2、用户与目录

RPM包安装的MongoDB会自动创建mongod用户,以及

数据目录:/var/lib/mongo
日志目录:/var/log/mongodb

并会自动归属到mongod:mongod。二进制包安装的需要自行配置。

路径可以在 /etc/mongod.conf 中调整
数据目录:storage.dbPath
日志目录:systemLog.path

目录若有调整(包括端口),需关闭SELinux,或如下配置:

Configure SELinux policy for MongoDB

 

3、启动与关闭

service mongod start|stop|restart

启动日志如下

[root@ceshi2377 ~]# cat /var/log/mongodb/mongod.log 
2019-12-03T22:56:39.086+0800 I CONTROL  [main] ***** SERVER RESTARTED *****
2019-12-03T22:56:39.829+0800 I CONTROL  [initandlisten] MongoDB starting : pid=1808 port=27017 dbpath=/var/lib/mongo 64-bit host=ceshi2377
2019-12-03T22:56:39.829+0800 I CONTROL  [initandlisten] db version v3.6.15
2019-12-03T22:56:39.829+0800 I CONTROL  [initandlisten] git version: 18934fb5c814e87895c5e38ae1515dd6cb4c00f7
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten] modules: none
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten] build environment:
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten]     distmod: rhel70
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten]     distarch: x86_64
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2019-12-03T22:56:39.830+0800 I CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { fork: true, pidFilePath: "/var/run/mongodb/mongod.pid", timeZoneInfo: "/usr/share/zoneinfo" }, storage: { dbPath: "/var/lib/mongo", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2019-12-03T22:56:39.834+0800 I STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=256M,cache_overflow=(file_max=0M),session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),compatibility=(release="3.0",require_max="3.0"),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2019-12-03T22:56:40.402+0800 I STORAGE  [initandlisten] WiredTiger message [1575385000:402545][1808:0x7fe497392b80], txn-recover: Set global recovery timestamp: 0
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.675+0800 I STORAGE  [initandlisten] createCollection: admin.system.version with provided UUID: ba3997a1-3549-44b6-b8b9-0fbb24ef41ea
2019-12-03T22:56:40.712+0800 I COMMAND  [initandlisten] setting featureCompatibilityVersion to 3.6
2019-12-03T22:56:40.719+0800 I STORAGE  [initandlisten] createCollection: local.startup_log with generated UUID: 3457f157-2b95-46ad-81ac-a3656913f9fd
2019-12-03T22:56:40.729+0800 I FTDC     [initandlisten] Initializing full-time diagnostic data capture with directory '/var/lib/mongo/diagnostic.data'
2019-12-03T22:56:40.731+0800 I NETWORK  [initandlisten] listening via socket bound to 127.0.0.1
2019-12-03T22:56:40.731+0800 I NETWORK  [initandlisten] listening via socket bound to /tmp/mongodb-27017.sock
2019-12-03T22:56:40.731+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
2019-12-03T22:56:40.743+0800 I STORAGE  [LogicalSessionCacheRefresh] createCollection: config.system.sessions with generated UUID: 016b7cab-ba6a-4cd4-a81d-b9806aab397f
2019-12-03T22:56:40.748+0800 I INDEX    [LogicalSessionCacheRefresh] build index on: config.system.sessions properties: { v: 2, key: { lastUse: 1 }, name: "lsidTTLIndex", ns: "config.system.sessions", expireAfterSeconds: 1800 }
2019-12-03T22:56:40.748+0800 I INDEX    [LogicalSessionCacheRefresh] 	 building index using bulk method; build may temporarily use up to 500 megabytes of RAM
2019-12-03T22:56:40.749+0800 I INDEX    [LogicalSessionCacheRefresh] build index done.  scanned 0 total records. 0 secs

有该提示,说明正常启动:NETWORK  [initandlisten] waiting for connections on port 27017
在配置文件中 net.port 默认 27017

 

4、mongo shell 启动

[root@ceshi2377 ~]# mongo --host 127.0.0.1:27017
MongoDB shell version v3.6.15
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ba7a7ae6-fd65-4c0f-a897-d15c7f46ec07") }
MongoDB server version: 3.6.15
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
Server has startup warnings: 
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-12-03T22:56:40.544+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] 
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-12-03T22:56:40.545+0800 I CONTROL  [initandlisten] 
> 

 

三、mongo shell 基础操作

本章仅介绍mongo shell方式,更多driver见参考文档二

下表首先列举了MongoDB的相关术语

MySQL术语MongoDB术语注解
databasedatabase数据库
tablecollection表/集合
rowducument行记录/文档
columnfield字段/域
primary keyprimary key主键
indexindex索引

 

1、登录

mongo --username <user> --password <pass> --host <host> --port 28015
mongo -u <user> -p <pass> --host <host> --port 28015

直接运行mongo而不指定任何参数,将会尝试从 localhost:27017 登录

2、退出

control+c 或者 exit

3、.mongorc.js 文件

位于HOME目录下,mongo shell 会先展示该文件的内容(如果存在的话),继而显示 prompt 信息。也可以--eval方式选择其他js文件。若以 --norc 方式启动shell,将不会读取该文件。

4、库的操作

(1)显示所有数据库:show dbs

(2)显示当前所在库:db(首次登录默认在test库)

(3)定位到某个库:

    法一:use <database>

    法二:db = db.getSiblingDB('users'),将db对象指向数据库名:users

(4)

 

 

 

 

参考文档:

Install MongoDB Community Edition on Red Hat Enterprise or CentOS Linux

MongoDB Drivers and ODM

MongoDB Backup Methods

mongodb通用备份方案

挖一挖MongoDB的备份与还原(实现指定时间点还原和增量备份还原)

MongoDB的常规备份策略

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值