热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB数据库的安装、配置、主从同步、备份与恢复教程

MongoDB概述Mongo是一个高性能,开源,模式自由(schema-free)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值(key-value)存储方式。Mongo使用C++开发,具有以下特性:1、面向集合的存储:适合存储对象及JSON形式的数据。2、
=== MongoDB 概述 ===
Mongo是一个高性能,开源,模式自由(schema-free)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值(key-value)存储方式。Mongo使用C++开发,具有以下特性: 
1、面向集合的存储:适合存储对象及JSON形式的数据。 
2、动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。 
3、完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。 
4、查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。 
5、复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。 
6、高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。 
7、自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。 
8、模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。 
9、存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。 
10、MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。 
11、MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。 

=== 安装、配置 ===
wget http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz  
tar -zxvf mongodb-linux-i686-1.6.5.tgz 
mv mongodb-linux-i686-1.6.5.tgz mongodb 
创建数据库文件目录,默认为/data/db,我把数据库文件目录放在当前文件夹下,mkdir -p data/mongodb,创建日志目录mkdir log 
启动服务 
cd /usr/local/mongodb/bin 
./mongod -dbpath=/data/mongodb -logpath=/var/log/mongodb.log 
安装完,进行测试
[root@localhost bin]# ./mongo 
MongoDB shell version: 1.6.5 
connecting to: test 
> db.foo.save({a:1}) 
> db.foo.find() 
{ "_id" : ObjectId("4d292a457e289d5d90dc6f33"), "a" : 1 } 
将mongoDB服务加入随机启动
echo "/usr/local/mongodb/bin/mongod --dbpath=/data/mongodb --port 27017 --logpath=/var/log/mongodb.log --logappend &" >> /etc/rc.local 

=== 主从同步 ===
1.建立数据库目录
mkdir  /mongodb/masterdb
mkdir /mongodb/slavedb_1
mkdir /mongodb/slavedb_2
2.分别启动主从服务器
启动主服务器 监听10000端口
./bin/mongod -dbpath /mongodb/masterdb/ --port 10000 --master  
启动两个从服务器  分别用10001 和 10002 端口  也可以使用 master master-> slave 的设置
./bin/mongod -dbpath /mongodb/slavedb_1 --source localhost:10000 --slave --port 10001
./bin/mongod -dbpath /mongodb/slavedb_2 --source localhost:10000 --slave --port 10002
#启动后  就会看到有日志 显示 从主服务器复制内容了
相关参数:./mongod --help
--autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据
--slavedelay 同步延迟,单位:秒
3.测试主从
a、在主服务器新建数据库
./bin/mongo --port 10001
show dbs
#里面只有系统数据库,同时如果做插入数据的操作 会提示 not master
use testdb
db.blog.save({title:"new article"})
b、在从服务器上查看同步数据
./bin/mongo --port 10001 
MongoDB shell version: 1.6.0 
connecting to: 127.0.0.1:10001/test 
> show dbs 
admin 
local 
testdb 
> use testdb 
switched to db testdb 
> db.blog.find() 
{ "_id" : ObjectId("4c776ccce7af0727ce4b6234"), "title" : "new article" } #此为同步过来的数据,测试成功 

=== 备份与恢复 ===
mongodump -h 192.168.0.39:10001 -d csf -o /backup/mongodb
将/tmp/backup 下面的文件导入数据库:
mongorestore -h 192.168.0.39:10001 -d csf -drop --directoryperdb /backup/mongodb/csf/
mongodb提供了两个命令来备份(mongodump )和恢复(mongorestore )数据库。
1、备份数据库
语法:mongodump -h IP -d 数据库 -o 文件存在路径
./mongodump -h 127.0.0.1 -d testdb -o /backup/mongobak/ 
connected to: 127.0.0.1:10000 
DATABASE: testdb         to     /data/dump/testdb 
        testdb.blog to /data/dump/testdb/blog.bson 
                 1 objects 
        testdb.system.indexes to /data/dump/testdb/system.indexes.bson 
                 1 objects 
出现此提示说明备份成功 
2、恢复数据库
语法:mongorestore -h 主机 -d 目标库 -drop  --directoryperdb 源文件
【注释】--drop参数,有此参数,则表示,先删除所有的记录,然后恢复。如无此参数,则恢复备份时候的数据,备份之后新增加的数据依然存在;/backup/mongodb则是备份文件存放路径
./mongorestore -h 127.0.0.1 --directoryperdb /data/dump     
3.另外mongodb还提供了mongoexport 和 mongoimport 这两个命令来导出或导入数据,导出的数据是json格式的。也可以实现备份和恢复的功能。
例:
mongoexport -d mixi_top_city_prod -c building_45 -q '{ "uid" : "10832545" }' > mongo_10832545.bson
mongoimport -d mixi_top_city -c building_45 --file mongo_10832545.bson

推荐阅读
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
author-avatar
熊字饼爱优乐美
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有