MongoDB基础

介绍

技术 特性 适用场景 说明
MongoDB NoSQL - 官网
- Doc
- 下载

运维

安装

参考Install MongoDB Community Edition

CentOS7安装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
37
# 下载
$ cd /usr/local
$ wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-server-4.2.1-1.el7.x86_64.rpm
$ wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-mongos-4.2.1-1.el7.x86_64.rpm
$ wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-tools-4.2.1-1.el7.x86_64.rpm
$ wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.2/x86_64/RPMS/mongodb-org-shell-4.2.1-1.el7.x86_64.rpm

# 安装
$ yum -y localinstall mongodb-org-mongos-4.2.1-1.el7.x86_64.rpm
$ yum -y localinstall mongodb-org-server-4.2.1-1.el7.x86_64.rpm
$ yum -y localinstall mongodb-org-shell-4.2.1-1.el7.x86_64.rpm
$ yum -y localinstall mongodb-org-tools-4.2.1-1.el7.x86_64.rpm

# 创建数据存储目录
$ mkdir -p /data-run/mongodb/data/db

# 创建日志文件
$ touch /data-run/mongodb/logs

# 设置所有者
$ chown -R mongod:mongod /data-run/

# 配置配置文件
$ vi /etc/mongod.conf
##### 内容开始 #####
dbpath=/data-run/mongodb/data/db
logpath=/data-run/mongodb/logs
fork=true
auth=true
bind_ip=0.0.0.0
##### 内容结束 #####

# 管理mongodb
$ systemctl status mongod.service
$ systemctl start mongod.service
$ systemctl stop mongod.service
$ systemctl enable mongod.service

Ubuntu16.04中安装MongoDB

参考Install MongoDB Community Edition on Ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下载
$ cd /usr/local
$ https://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/4.2/multiverse/binary-amd64/mongodb-org-server_4.2.0_amd64.deb

# 安装
$ dpkg -i mongodb-org-server_4.2.0_amd64.deb

# 安装客户端
$ wget https://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/4.2/multiverse/binary-amd64/mongodb-org-shell_4.2.0_amd64.deb
$ dpkg -i mongodb-org-shell_4.2.0_amd64.deb

# 安装运维工具
$ wget https://repo.mongodb.org/apt/ubuntu/dists/xenial/mongodb-org/4.2/multiverse/binary-amd64/mongodb-org-tools_4.2.0_amd64.deb
$ dpkg -i mongodb-org-tools_4.2.0_amd64.deb

Ubuntu18.04中安装MongoDB

参考Install MongoDB Community Edition on Ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下载
$ cd /usr/local
$ wget https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.2/multiverse/binary-amd64/mongodb-org-server_4.2.0_amd64.deb

# 安装
$ dpkg -i mongodb-org-server_4.2.0_amd64.deb

# 安装客户端
$ wget https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.2/multiverse/binary-amd64/mongodb-org-shell_4.2.0_amd64.deb
$ dpkg -i mongodb-org-shell_4.2.0_amd64.deb

# 安装运维工具
$ wget https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/4.2/multiverse/binary-amd64/mongodb-org-tools_4.2.0_amd64.deb
$ dpkg -i mongodb-org-tools_4.2.0_amd64.deb

Mac中安装MongoDB

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装
$ brew install mongodb
# Install the MongoDB Binaries with TLS/SSL Support
brew install mongodb --with-openssl
# Install the Latest Development Release of MongoDB
brew install mongodb --devel


# 启动一次
$ brew services run mongodb

# 启动被设置开机启动
$ brew services start mongodb

配置mongod.conf

1
$ sudo vi /etc/mongod.conf

内容如下:

1
2
3
4
5
6
port=27017
dbpath=/mongodb/data/db
logpath=/mongodb/logs
logappend=true
noauth=true
wiredTigerCacheSizeGB = 1

管理

1
2
3
4
5
6
7
8
# 启动
$ sudo service mongod start

# 停止
$ sudo service mongod stop

# 重启
$ sudo service mongod restart

管理用户

创建管理员用户

1
2
3
4
5
6
7
$ mongo
> use admin
switched to db admin
> db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
# 验证是否创建成功,如果返回1,则表示成功。
> db.auth("admin", "admin")
> exit

创建dbOwner用户

该用户代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等。

1
2
> use yourdatabase
> db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })

创建数据库读写账户

该用户用于该数据的读写,只拥有读写权限。

1
2
> use yourdatabase
> db.createUser({ user: "youruser2", pwd: "yourpassword2", roles: [{ role: "readWrite", db: "yourdatabase" }] })

配置开启验证

1
2
3
4
# Mac版
$ vi /usr/local/etc/mongod.conf
# CentOS版
$ vi /etc/mongod.conf

增加如下配置

1
2
security:
authorization: enabled

重启MongoDB。

1
$ mongod --auth

配置连接字符串

1
$ mongodb://username:password@localhost/database

导出

1
2
3
$ mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段1,字段2 -o file --type json/csv
# 示例
$ ./mongoexport -h 127.0.0.1 -d dbname -c article -f title -o /usr/local/article.json --type json

导入

1
2
3
4
5
6
7
$ mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
# 示例
$ ./mongoimport -d dbname -c article --file /usr/local/article.json --headerline --type json
$ ./mongoimport -d dbname -c article --file /usr/local/article.json --headerline --type json --upsert --drop
# 说明
--drop 导之前先删除
--upsert 存在更新,不存在插入。

备份

1
$ mongodump -h dbhost -d dbname -o 目录路径

还原

1
$ mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径

卸载

1
2
3
$ sudo apt-get purge mongodb-org*
$ sudo rm -r /var/log/mongodb
$ sudo rm -r /var/lib/mongodb

命令行工具

1
2
3
4
5
6
7
8
9
10
11
# 使用默认端口连接MongoDB
$ mongo 192.168.1.100

# 连接MongoDB并指定端口
$ mongo 192.168.1.100:27017

# 连接到指定的MongoDB数据库
$ mongo 192.168.1.100:27017/test

# 指定用户名和密码连接到指定的MongoDB数据库
$ mongo 192.168.1.200:27017/test -u user -p password

可视化运维工具

MongoDB Cloud Manager

MongoDB Cloud Manager是官方推出的运维自动化管理系统,是企业版才支持的功能,社区用户也可以下载试用。Cloud Manager 主要功能包括

  • MongoDB 集群(复制集、分片)的自动化部署
  • 集群监控、及报警定制
  • 自动数据备份与还原

访问MongoDB

命令行访问

1
$ mongo --port 27017 -u "username" -p "password" --authenticationDatabase "admin"

图形界面访问

略。

客户端

MongoDB Compass

Robo 3T

MongoChef现已更名为Studio 3T。

NoSQL Manager for MongoDB Professional

Toad

安装客户端

Ubuntu中安装Robo 3T

1
2
3
$ cd /usr/local
$ sudo wget https://download.robomongo.org/1.2.1/linux/robo3t-1.2.1-linux-x86_64-3e50a65.tar.gz
$ sudo tar -zxvf robo3t-1.2.1-linux-x86_64-3e50a65.tar.gz

进入安装目录,找到可执行文件,首先按住左键把它拖到桌面先不放开,然后按下Alt,此时出现一个菜单,选择“链接到此处”,松开之后就在桌面上创建好快捷方式。

Studio 3T

https://studio3t.com/

NoSQLBooster

https://nosqlbooster.com/

MongoDB Compass

https://www.mongodb.com/products/compass

NoSQL Manager

https://www.mongodbmanager.com/

Mongo Management Studio

http://mms.litixsoft.de/

分片

概念

分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程。将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载。

角色

分片角色 作用 约束
配置服务器 是一个独立的mongod进程,保存集群和分片的元数据,即各分片包含了哪些数据的信息。最先开始建立,启用日志功能。
像启动普通的mongod一样启动配置服务器,指定configsvr选项。不需要太多的空间和资源,配置服务器的1KB空间相当于真是数据的200MB。
保存的只是数据的分布表。当服务不可用,则变成只读,无法分块、迁移数据。
配置服务器必须开启奇数个,入1个或则3个,开启2个则会报错。
路由服务器 即mongos,起到一个路由的功能,供程序连接。
本身不保存数据,在启动时从配置服务器加载集群信息,开启mongos进程需要知道配置服务器的地址,指定configdb选项。
-
分片服务器 是一个独立普通的mongod进程,保存数据信息。可以是一个副本集也可以是单独的一台服务器。 -

部署步骤

环境说明

  • 操作系统:CentOS7.2
  • 内核:4.15
角色 IP 主机名
配置服务器 192.168.1.91 node1
路由服务器 192.168.1.92 node2
分片服务器 192.168.1.93 node3
分片服务器 192.168.1.94 node4
分片服务器 192.168.1.95 node5

配置配置服务器

配置路由服务器

配置分片服务器

分片扩容

分片收缩

优化

常见问题

mongoexport导出csv中文乱码

notepad

编码 -> 转换为UTF-8 with BOM编码格式

sublime text

File -> save with Encoding -> UTF-8 with BOM

参考

坚持原创技术分享,您的支持将鼓励我继续创作!
0%