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

[经验分享] mongodb 安装配置及日常维护

[复制链接]
累计签到:77 天
连续签到:1 天
发表于 2014-8-14 09:57:31 | 显示全部楼层 |阅读模式
本文档主要介绍了mongodb安装,添加副本集、分片及日常维护操作,mongodb2.4.10支持hash分区,针对大并发访问,提供了较好的性能,建议使用ssd硬盘
mongodb安装
下载Mongodb 软件                                                                    
wget  http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.10.tgz               
创建用户组app和账号app                                                              
groupadd app                                                                        
useradd  app –g  app                                                            
创建数据目录、日志目录、配置文件目录                                                
su – app                                                                           
mkdir shard                                                                        
mkdir logs                                                                          
mkdir conf                                                                          
解压缩软件包                                                                        
tar xzvf  mongodb-linux-x86_64-2.4.10.tgz –C  /home/app                           
mv mongodb-linux-x86_64-2.4.10  mongodb2.4.10      
创建配置文件                                                                                            
vi  /home/app/conf/shard.conf                                                                           
配置选项:                                                                                             
dbpath = /home/app/shard                                                                                
bind_ip=10.0.0.1                                                                                       
port = 27018                                                                                            
logpath = /home/app/logs/shard.log                                                                     
logappend = true                                                                                       
replSet = rs1                                                                                          
shardsvr = true                                                                                         
fork = true                                                                                             
启动mongod服务                                                                                          
numactl --interleave=all  /home/app/mongodb2.4.10/bin/mongod -f  /home/app/conf/shard.conf              
在第二个host上启动同样的mongod服务                                                                     
numactl --interleave=all  /home/app/mongodb2.4.10/bin/mongod -f  /home/app/conf/shard.conf              
配置选项修改:                                                                                          
bind_ip=10.0.0.2                                                                                       
        在第三个host上配置仲裁者服务                                                                 
配置选项:                                                                                   
vi  /home/app/conf/arbiter.conf                                                              
dbpath = /home/app/arbiter                                                                  
port = 27020                                                                                 
logpath = /home/app/logs/arbiter.log                                                         
logappend = true                                                                             
fork = true                                                                                 
启动仲裁者:                                                                                 
numactl --interleave=all   /home/app/mongodb2.4.10/bin/mongod -f  /home/app/conf/arbiter.conf

部署副本集                                                                                   
连接主节点mongod:                                                                           
/home/app/mongodb2.4.10/bin/mongo  --host  10.0.0.1  --port 27018                           
为副本集添加成员:                                                                           
rs.add(“10.0.0.1:27018”)                                                                  
rs.add(“10.0.0.2:27018”)                                                                  
rs.addArb(“10.0.0.3:27020”)                                                               
       
设置成员优先级:                                                                           
var config = rs.config()                                                                    
config.members[0].priority = 2                                                              
config.members[1].priority = 1                                                              
rs.reconfig(config)                                                                        
                                                                                            
查看副本集状态:                                                                           
rs.status() / rs.isMaster()  / rs.conf()                                                  
                                                                                            
创建配置服务器  (建议3台,避免单点故障)                                                                           
配置选项:                                                                                 
vi  /home/app/conf/config.conf                                                              
dbpath = /home/app/configdb                                                                 
port = 27019                                                                                
logpath = /home/app/logs/config.log                                                         
logappend = true                                                                           
configsvr = true                                                                           
fork = true                                                                                 
启动配置服务器进程:                                                                        
numactl --interleave=all   /home/app/mongodb2.4.10/bin/mongod -f  /home/app/conf/config.conf
       
创建mongos服务                                                                                     
配置选项:                                                                                         
vi  /home/app/conf/route.conf                                                                     
configdb = 10.0.0.3:27019                                                                          
logpath = /home/app/logs/route.log                                                                 
logappend = true                                                                                   
fork = true                                                                                       
启动mongos进程:                                                                                   
numactl --interleave=all   /home/app/mongodb2.4.10/bin/mongos -f  /home/app/conf/route.conf        
                                                                                                   
启动分片集群                                                                                       
将副本集添加为分片:                                                                              
sh.addShard(“rs1/10.0.0.1:27018”)                                                               
                                                                                                   
查看集群状态:                                                                                    
sh.status()                                                                                       

对数据库启用分片:(集合也需要分片,命令见分片集群常用管理命令)                               
sh.enableSharding(“tts_test”)                  
                                                  
分片集群配置成功
531464_1404894319KKRA.jpg


分片集群常用管理命令                                                                   
创建索引:                                                                             
db.users.ensureIndex("xx" : 1 }                                                      
db.users.ensureIndex(("xx" : 1 }),{"background" : true } )         1或-1代表索引的方向                    
散列片键(使用HASH分片,解决部分分片负载不均衡问题) :                                                                           
                        db.users.ensureIndex({"username": "hashed"})       
                        sh.shardCollection("app.users",{"username": "hashed"})                                    

压缩数据:                                                                           
db.runCommand({"compact" : "collname"})     空间不会减小,但是占用资源较多                                                                                         
释放空间:                                                                           
进入数据库 db.repairDatabase()              
replSet 架构,可以停掉数据库,然后删除数据目录,从新从复制组中全同步数据,这个时候要考虑 oplog 的尺寸
                        1)将 primary stepDown,不出意外新的 primary 会起来;       
                        2)将原 primary kill 掉;       
                        3)删掉所有 data 数据(调用 repair 很慢,真不如干掉重新来);       
                        4)再重启动原 primary 的进程;       
                        5)以此循环完成整个复制组的全部重建。       
                                                              
主从切换:                                                                           
rs.stepDown([secs])   
查看复制:                                                                           
db.printReplicationInfo()                                                            
db.printSlaveReplicationInfo()                                                                     
停止服务:                                                                           
kill   pid                                                                           
db.shutdownServer()                                                                  
db.adminCommand({"shutdown" : 1})                                                   
                       
均衡器管理
sh.getBalancerState()
sh.isBalancerRunning()
sh.setBalancerState(true)                                                #关闭均衡器sh.setBalancerState(false)

mongodb状态监控
       
                        mongostat它的输出有以下几列:        
                        insert 每秒插入次数        
                        query 每秒查询次数        
                        update 每秒更新次数        
                        delete 每秒删除次数        
                        getmore 每秒执行getmore次数        
                        command 每秒的命令数,比以上插入、查找、更新、删除的综合还多,还统计了别的命令        
                        flushs 每秒执行fsync将数据写入硬盘的次数。        
                        mapped 所有的被mmap的数据量        
                        vsize 虚拟内存使用量        
                        res 物理内存使用量        
                        faults 每秒访问失败数(只有Linux有),数据被交换出物理内存,放到swap。不要超过100,否则就是机器内存太小,造成频繁swap写入。此时要升级内存或者扩展        
                        locked % 被锁的时间百分比,尽量控制在50%以下吧        
                        idx miss % 索引不命中所占百分比。如果太高的话就要考虑索引是不是少了        
                        qr 客户端等待从 MongoDB 实例读取数据的队列长度。        
                        qw 客户端等待向 MongoDB 实例写入数据的队列长度。        
                        ar 执行读取操作的活动客户端的数目。        
                        aw 执行写入操作的活动客户端的数目。        
                        netIn MongoDB 收到的网络流量,这包括 mongostat 本身的流量。        
                        netOut MongoDB 发送的网络流量,这包括 mongostat 本身的流量。        
                        conn 打开连接的总数。        
                        set 副本集的名称(如适用)。        
                        repl 节点的复制状态。(M:主版本,SEC:次,REC:恢复,UNK:未知,SLV:从属)        


运维网声明 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-23771-1-1.html 上篇帖子: MongoDB数据同步工具mongosync 下篇帖子: Spring+Mongo+Morphia 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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