mongodb集群安装及延迟节点配置
本文主要介绍mongodb安装、副本集模式的配置、mongodb数据库的简单使用及延迟节点搭建和利用延迟节点恢复误删除的数据。一、系统环境平台:Centos6.6_x86_64实验环境:四台主机部署副本集模式集群主机:192.168.115.21、192.168.115.22、192.168.115.23、192.168.115.24规划:21为master节点,22为副本节点,23为副本节点,24为延迟节点目的:完成副本集模式集群的部署 测试延迟节点同步数据,当在主节点上误删除数据后利用延迟节点恢复数据注意:由于mongodb数据同步对时间的实时性要求较高事先要同步下各节点的时间二、安装mongodb1.软件安装软件包:mongodb-linux-x86_64-2.6.9.gz下载地址:wgethttp://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.6.9.tgztar-zxvfmongodb-linux-x86_64-2.6.9.tgzmvmongodb-linux-x86_64-2.6.9.tgz/usr/local/mongodb2.mongodb安装文件介绍mongod:数据库服务端,类似mysqld,每个实例启动一个进程,可以fork为Daemon运行mongo:客户端命令行工具,类似sqlplus/mysql,其实也是一个js解释器,支持js语法mongodump/mongorestore:将数据导入为bson格式的文件/将bson文件恢复为数据库,类似xtracbackupmongoexport/mongoimport:将collection导出为json/csv格式数据/将数据导入数据库,类似mysqldump/mysqlimportbsondump:将bson格式的文件转储为json格式的数据mongos:分片路由,如果使用了sharding功能,则应用程序连接的是mongos而不是mongodmongofiles:GridFS管理工具mongostat:实时监控工具3.配置mongodb环境变量vi/etc/profile添加如下内容:#SetMongodb Environmentexport MONGODB_HOME=/usr/local/mongodbexportPATH=$PATH:$MONGODB_HOME /binsource/etc/profile4.创建配置文件# vi/usr/local/mongodb/etc/mongodb.conf添加如下内容:fork = true #以后台Daemon形式运行服务quiet =trueport = 27017 #对外服务端口,Web管理端口在这个port的基础上+1000dbpath = /data/mongodb/ #数据文件存放路径,每个数据库会在其中创建一个子目录logpath = /usr/local/mongodb/logs/server.log #错误日志文件logappend = true #错误日志采用追加模式(默认是覆写模式)journal = true #开启日志功能,通过保存操作日志来降低单机故障的恢复时间rest =truehttpinterface= true5.启动mongodb/usr/local/mongodb/bin/mongod-f /usr/local/mongodb/etc/mongodb.conf6.查看mongodb启动进程默认监听在tcp/27017端口tcp/28017为web监听端口 三、集群配置MongoDB的副本集能够故障自动转移,在集群Master故障的时候,副本集可以自动投票,选举出新的Master,并引导其余的Slave服务器连接新的Master,目前官方推荐采用这种吗模式部署。1.每个节点修改配置文件添加如下一行# vi/usr/local/mongodb/etc/mongodb.confreplSet =hnrtest/192.168.115.21:27017,192.168.115.22:27017,192.168.115.23:270172.启动服务3.连接mongodb初始化集群#/usr/local/mongodb/bin/mongo 192.168.115.21:27017> db.runCommand({"replSetInitiate": { "_id" : "hnrtest" ,"members" : [ {"_id" : 1, "host" : "192.168.115.21:27017"},{"_id" : 2, "host" : "192.168.115.22:27017"},{"_id" : 3, "host" : "192.168.115.23:27017"}]}})执行命令出现以上错误提示,解决方法> useadmin> db.runCommand({"replSetInitiate" : { "_id" :"hnrtest" ,"members" : [ { "_id" : 1,"host" : "192.168.115.21:27017"},{ "_id" : 2,"host" : "192.168.115.22:27017"},{ "_id" : 3,"host" : "192.168.115.23:27017"}]}})此时通过内部自动选举21被选举为主节点4.通过修改优先级,手动指定主节点hnrtest:PRIMARY> cfg=rs.conf() #起始命令hnrtest:PRIMARY>cfg.members.priority=15hnrtest:PRIMARY> rs.reconfig(cfg) #提交配置可以看到,配置一提交角色状态立即改变,22成为主节点 四、数据库操作常用命令1.查看副本集节点状态信息:hnrtest:PRIMARY> rs.status()2.查看当前使用的库:hnrtest:PRIMARY> db3.查看所有库:show dbs4. 创建数据库:hnrtest:PRIMARY> usemydb如果没有往库中添加数据默认没有该库至少需要插入一条数据5. 插入数据:hnrtest:PRIMARY>db.test.insert({"a":"1"})6. 查看数据:db.test.find() 7. 删除选定的数据库:db.dropDatabase()8. 查看集合中所有数据条目:hnrtest:PRIMARY> db.test.count()9.查看数据同步时间:hnrtest:PRIMARY>rs.printReplicationInfo()10.副本节点上第一次执行命令时报错,需要打开写操作hnrtest:SECONDARY>rs.slaveOk()此时在执行查询命令,一切正常11.添加删除一个节点添加:在主节点上执行命令:hnrtest:PRIMARY>rs.add("192.168.115.#:27017")删除:在主节点上执行命令:hnrtest:PRIMARY>rs.remove("192.168.115.#:27017") 五、利用延迟节点恢复数据当在主节点上误删除数据时其他从节点实时同步主节点数据,从节点上的数据也被删除,而此时延迟节点由于延迟时间未到数据还未同步,可以恢复主节点上误删除的数据。1.延迟节点的配置1)将24加入副本集hnrtest:PRIMARY>rs.add("192.168.115.24:27017")2)修改24的优先级为0并设置延迟时长hnrtest:PRIMARY>cfg=rs.confhnrtest:PRIMARY>cfg.members.priority=0hnrtest:PRIMARY>cfg.members.slaveDelay=120hnrtest:PRIMARY>rs.reconfig(cfg)在主节点上插入一条数据,在延迟节点上查看同步时间,可见延迟120秒后同步数据2.延迟节点恢复数据1)模拟数据误删除执行以上命令,主节点及副本节点上的数据全部被删除,而延迟节点数据还在 2)恢复方法:1.先关闭从节点及主节点上服务(延迟节点除外)2.删除从节点及主节点数据目录下的所有文件(延迟节点除外)3.开启以上关闭的节点服务进程,会从延迟节点上同步数据 执行以上步骤后,所有节点数据恢复成原来的
页:
[1]