订阅

把最新的文章发送到您的邮箱中.

部署 MongoDB

MongoDB 简介


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


当然这部分 Shadow 也不是很熟。因为我以前是用 PHP+Mysql 的
Nodejs、MongoDB 和 JavaScript 也是刚接触不久


MongoDB 安装与备份还原迁移


安装篇


  1. 更新库并安装MongoDB
    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
    sudo echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee/etc/apt/sources.list.d/mongodb-org-3.6.list
    sudo apt-get update
    sudo apt-get install -y mongodb-org

2.验证 MongoDB 的版本号
mongod --version

服务器返回内容 db version vx.x

3.启动 MongoDB
sudo systemctl start mongod

4.查看 MongoDB 状态
sudo systemctl status mongod

5.配置 MongoDB
输入命令进入数据库
mongo
装载数据库admin
use admin
创建用户admin至数据库admin并给予管理员权限
db.createUser( { user: "admin", pwd: "这里改成你要设置的密码", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
创建并装载您要使用的数据库 例如shadow
use shadow
创建用户shadow至数据库shadow并给予管理员权限
db.createUser( { user: "shadow", pwd: "这里改成你要设置的密码", roles: [ { role: "readWrite", db: "shadow" }, { role: "clusterMonitor", db: "admin" } ] } )
退出Mongodb
quit()

6.修改 mongod.conf
更改MongoDB的mongod.conf来达到需要认证才能进入MongoDB程序的效果
sudo nano /etc/mongod.conf
在最后添加以下内容
security: authorization: enabled

7.重启 MongoDB
sudo systemctl restart mongod
输入命令验证进入 mongodb
mongo -u admin -p 这里改成你设置好的密码 --authenticationDatabase=admin


备份还原与迁移


以下以备份 Shadow 数据库为例

1.备份
备份MongoDB数据库
创建一个文件夹让你来备份文件
sudo mkdir /var/sqlbackups/mongodb
然后输入命令备份
sudo mongodump –db Shadow ––out /var/sqlbackups/mongodb/date +"%m-%d-%y"
其中 Shadow (注意:所有Linux系统都是区分大小写的)为你要备份的数据库 /var/sqlbackups/mongodb/ 刚刚创建的文件夹 date +"%m-%d-%y" 新建一个文件夹名为目前的时间
服务器应该返回的结果为:

Output of mongodump

2018-04-15T13:17:47.685-0500    writing Shadow.restaurants to /var/sqlbackups/mongodb/04-48-18/Shadow/restaurants.bson
2018-04-15T13:17:47.907-0500    writing Shadow.restaurants metadata to /var/sqlbackups/mongodb/04-48-18/Shadow/restaurants.metadata.json
2018-04-15T13:17:47.911-0500    done dumping Shadow.restaurants (0 documents)
2018-04-15T13:17:47.911-0500    writing Shadow.system.indexes to /var/sqlbackups/mongodb/04-48-18/Shadow/system.indexes.bson

一般来说,我们需要对数据库进行定期备份。因此,大家可以将mongodump命令设置为cron任务以定期执行备份.
sudo crontab -e

在crontab提示符下输入以下命令:

Crontab window
3 3 * * * mongodump --out /var/sqlbackups/mongodb/`date +"%m-%d-%y"

根据MongoDB的具体规模,过频的备份可能导致磁盘空间不足。因此我们还需要定期清理一些旧的备份或者进行压缩。例>如通过以下命令每七天删除全部旧有备份:
find /var/sqlbackups/mongodb/ -mtime +7 -exec rm -rf {} \;

当然这也是可以加入到crontab中的
sudo crontab -e

在crontab提示符下输入以下命令:

Crontab window
3 1 * * * find /var/backups/mongobackups/ -mtime +7 -exec rm -rf {} \;

这样一来我们就不用担心数据会丢失了。

2.还原
还原很简单就一句命令,也不用去设置定期任务。
sudo mongorestore ––db Shadow ––drop /var/sqlbackups/mongodb/04-48-18/Shadow/
服务器应该返回的结果为

Output of mongorestore

2018-04-15T13:41:27.876-0500    building a list of collections to restore from /var/sqlbackups/mongodb/04-48-18/Shadow/ dir
2018-04-15T13:41:27.908-0500    reading metadata file from /var/sqlbackups/mongodb/04-48-18/Shadow/restaurants.metadata.json
2018-04-15T13:41:27.909-0500    restoring Shadow.restaurants from file /var/sqlbackups/mongodb/04-48-18/Shadow/restaurants.bson
2018-04-15T13:41:28.591-0500    restoring indexes for collection Shadow.restaurants from metadata
2018-04-15T13:41:28.592-0500    finished restoring Shadow.restaurants (0 documents)
2018-04-15T13:41:28.592-0500    done
这样就成功的还原了数据库

3.迁移
这我就不多说了,就是把备份时生成的Shadow文件夹复制到另外一台服务器进行还原。


返回列表