sky 发表于 2014-8-14 09:57:31

mongodb 安装配置及日常维护

本文档主要介绍了mongodb安装,添加副本集、分片及日常维护操作,mongodb2.4.10支持hash分区,针对大并发访问,提供了较好的性能,建议使用ssd硬盘
mongodb安装
下载Mongodb 软件                                                                  
wgethttp://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.10.tgz               
创建用户组app和账号app                                                            
groupadd app                                                                        
useraddapp –gapp                                                            
创建数据目录、日志目录、配置文件目录                                                
su – app                                                                           
mkdir shard                                                                        
mkdir logs                                                                        
mkdir conf                                                                        
解压缩软件包                                                                        
tar xzvfmongodb-linux-x86_64-2.4.10.tgz –C/home/app                           
mv mongodb-linux-x86_64-2.4.10mongodb2.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--host10.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.priority = 2                                                            
config.members.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”)                  
                                                
分片集群配置成功



分片集群常用管理命令                                                                   
创建索引:                                                                           
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()   
查看复制:                                                                           
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]
查看完整版本: mongodb 安装配置及日常维护