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

[经验分享] linux下MongoDB数据库安装、配置、主从同步、备份与恢复

[复制链接]

尚未签到

发表于 2018-10-27 10:34:59 | 显示全部楼层 |阅读模式
linux下MongoDB数据库安装、配置、主从同步、备份与恢复
  2011-02-11 16:08:01| 分类:LNMP&&LAMP| 标签:linuxmongodbmongodb安装mongodb备份与恢复mongodb主从同步|字号订阅
=== MongoDB 概述 ===  Mongo是一个高性能,开源,模式自由(schema-free)的文档型数据库,它在许多场景下可用于替代传统的关系型数据库或键/值(key-value)存储方式。Mongo使用C++开发,具有以下特性:
  l 面向集合的存储:适合存储对象及JSON形式的数据。
  l 动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
  l 完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
  l 查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。
  l 复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
  l 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
  l 自动分片以支持云级别的伸缩性(处于早期alpha阶段):自动分片功能支持水平的数据库集群,可动态添加额外的机器。
  模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
  存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized dOcument Format)。
  MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
  MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。
  === 安装、配置 ===
  源码包:wget http://downloads.mongodb.org/linux/mongodb-linux-i686-latest.tgz
  1.解压tar -zxvf mongodb-linux-i686-1.6.5.tgz
  重命名mv mongodb-linux-i686-1.6.5.tgz mongodb
  2.创建数据库文件目录,默认为/data/db,我把数据库文件目录放在当前文件夹下,mkdir -p data/mongodb,创建日志目录mkdir log
  3.启动服务
  cd /usr/local/mongodb/bin
  ./mongod -dbpath=/data/mongodb -logpath=/var/log/mongodb.log
  4.安装完,进行测试
  [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 }
  5.将mongoDB服务加入随机启动
  vi /etc/rc.local
  使用vi编辑器打开配置文件,并在其中加入下面一行代码
  /usr/local/mongodb/bin/mongod -dbpath=/data/mongodb --port 27017
  -logpath=/var/log/mongodb.log --logappend &
  === 主从同步 ===
  1.建立数据库目录
mkdir /mongodb/masterdbmkdir/mongodb/slavedb_1mkdir/mongodb/slavedb_2  2.分别启动主从服务器
启动主服务器 监听10000端口./bin/mongod-dbpath /mongodb/masterdb/--port 10000 --master  启动两个从服务器 分别用10001 和 10002 端口 也可以使用 master master-> slave 的设置
./bin/mongod-dbpath /mongodb/slavedb_1--sourcelocalhost:10000 --slave --port 10001./bin/mongod-dbpath /mongodb/slavedb_2--sourcelocalhost:10000 --slave --port 10002#启动后 就会看到有日志 显示 从主服务器复制内容了  相关参数:./mongod --help
--autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据  --slavedelay 同步延迟,单位:秒
  3.测试主从
  a、在主服务器新建数据库
./bin/mongo--port 10001show dbs#里面只有系统数据库,同时如果做插入数据的操作 会提示 not masteruse testdbdb.blog.save({title:"new article"})  b、在从服务器上查看同步数据
./bin/mongo--port 10001MongoDB shell version: 1.6.0connecting to: 127.0.0.1:10001/test> show dbsadminlocaltestdb> use testdbswitched 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


运维网声明 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-627039-1-1.html 上篇帖子: mongodb通过@Indexes对多列建立索引 下篇帖子: 第11期面授mongodb教学大纲(课程已讲)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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