- 浏览: 152479 次
最新评论
文章列表
前一段时间使用repair命令修复线上的数据库,发现数据库中碎片巨大,占用200多G的数据在repair之后只有50多G,然后就研究了一下Mongodb是如何利用已经删除了的空间的。 分析下源码(源码版本2.2.2,新版本可能随时更新): Mongodb在执行删除(文档)操作时,并不会进行物理删除,而是将他们放入每个命名空间维护的删除列表里。
//pdfile.cpp delete()
/
修改MONGODB 最大连接数
- 博客分类:
- mongodb
问题: 今天PHP 测试端出错。不知是否为MONGODB的问题。测试最时而正常,刷新多次后就出错。
想到是否为连接次数的原因呢,所以想到把最大连接数修改后,再让他们测试一下,是否问题依旧。
修改方法:
---------------------------------------------------------------------------------------
1.修改系统参数:
vi /etc/rc.local#!/bin/sh## This script will be executed *after* all the other init scripts.# ...
MongoDB 运行状态、性能监控,分析
- 博客分类:
- mongodb
mongostat详解
mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。
它的输出有以下几列:
inserts/s 每秒插入次数
query/s 每秒查询次数
update/s 每秒更新次数
delete/s 每秒删除次数
getmore/s
redis安装与基本命令入门
- 博客分类:
- redis
一.安装
详细参考:http://redis.io/download
可能遇到的问题:1.和一般的安装不同,没有config和make install编译后就可执行2.在redhat 5.4 32位下面make出错undefined reference to__sync_add_and_fetch_4编译时使用:make CFLAGS="-march=i686"3.启动redis server后,SecureCRT进入redis-cli,输入不断在后面追加IP:Port显示设置当前的Session Options-->Terminal-->Emulation ...
一、驱动
mongo对应的java驱动的下载地址
https://github.com/mongodb/mongo-java-driver/downloads
二、文档
API文档的地址
http://api.mongodb.org/java/
官方入门地址
http://www.mongodb.org/display/DOCS/Java+Tutorial
在java里像在shell里一样操作mongo的一个东东
http://www.jongo.org
Redis主从自动failover
- 博客分类:
- redis
Redis主从架构持久化存在一个问题,即前次测试的结论,持久化需要配置在主实例上才能跨越实例保证数据不丢失,这样以来主实例在持久化数据到硬盘的过程中,势必会造成磁盘的I/O等待,经过实际测试,这个持久化写硬盘的过程给应用程序带来的影响无法忍受;因而在大多数场景下,会考虑把持久化配置在从实例上,当主实例宕机后,通过手动或者自动的方式将从实例提升为主实例,继续提供服务!当主实例恢复后,先从原从实例上同步数据,同步完成后再恢复到原始的主从状态!要实现这种的要求,需要有keepalive的配合,一方面keepalive提供了VIP,可以避免修改应用程序连接,同时redis实例的配置文件监听部分也需要 ...
目录[-]
1. 安装Keeplived依赖
2. 安装Keepalived
3. 配置Keepalived
4. 运行Keepalived
5. 总结
Keepalived原理与实战精讲
- 博客分类:
- Web前端
Keepalived原理与实战精讲
http://bbs.ywlm.net/thread-845-1-1.htmlgotop&FinalBSD
什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的
今天发现Jedis 默认的连接方式 jedis=new Jedis(“localhost”,6379),老是发生connection timeout. 后来发现jedis类包还有一种可以设置最大连接时间的方法。
1->获取Jedis实例需要从JedisPool中获取;2->用完Jedis实例需要还给JedisPool;3->如果Jedis在使用过程中出错,则也需要还给JedisPool;代码如下
复制代码 代码如下:
JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(100); ...
搭建高可用MongoDB集群(四):分片
- 博客分类:
- mongodb
按照上一节中《搭建高可用mongodb集群(三)—— 深入副本集》搭建后还有两个问题没有解决:
从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?
数据压力大到机器支撑不了的时候能否做到自动扩展?
在系统早期,数据量还小的时候不会引起太大的问题,但是随着数据量持续增多,后续迟早会出现一台机器硬件瓶颈问题的。而mongodb主打的就是海量数据架构,他不能解决海量数据怎么行!不行!“分片”就用这个来解决这个问题。
传统数据库怎么做海量数据读写?其实一句话概括:分而治之。上图看看就清楚了,如下 taobao岳旭强在infoq中提到的 架构图:
在上一篇文章《搭建高可用mongodb集群(二)—— 副本集》 介绍了副本集的配置,这篇文章深入研究一下副本集的内部机制。还是带着副本集的问题来看吧!
副本集故障转移,主节点是如何选举的?能否手动干涉下架某一台主节点。
官方说副本集数量最好是奇数,为什么?
mongodb副本集是如何同步的?如果同步不及时会出现什么情况?会不会出现不一致性?
mongodb的故障转移会不会无故自动发生?什么条件会触发?频繁触发可能会带来系统负载加重?
Bully算法 mongodb副本集故障转移功能得益于它的选举机制。选举机制采用了Bully算法,可以很方便从分布式节点中选出主节点。一个分布式集群 ...
在上一篇文章《搭建高可用MongoDB集群(一)——配置MongoDB》 提到了几个问题还没有解决。
主节点挂了能否自动切换连接?目前需要手工切换。
主节点的读写压力过大如何解决?
从节点每个上面的数据都是对数据库全量拷贝,从节点压力会不会过大?
数据压力大到机器支撑不了的时候能否做到自动扩展?
这篇文章看完这些问题就可以搞定了。NoSQL的产生就是为了解决大数据量、高扩展性、高性能、灵活数据模型、高可用性。但是光通过主从模式的架构远远达不到上面几点,由此MongoDB设计了副本集和分片的功能。这篇文章主要介绍副本集:
在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写、海量数据高效存储、高可扩展性和高可用性这些难题。不过就是因为这些问题Nosql诞生了。
NOSQL有这些优势:
大数据量,可以通过廉价服务器存储 ...
搭建mongodb集群(副本集+分片)
- 博客分类:
- mongodb
完整的搭建mongodb集群(副本集+分片)的例子。。。
准备四台机器,分别是bluejoe1,bluejoe2,bluejoe3,以及bluejoe0
副本集及分片策略确定如下:
将创建3个副本集,命名为shard1,shard2,shard3;
以上3个副本集作为3个分片;
每个副本集包含3个副本(主、辅1、辅2);
副本分开存储,即shard1存在bluejoe1、bluejoe2、bluejoe3上各一份。。。以此类推
将创建3个配置库实例,一台机器一个
bluejoe0上配置一个mongos(mongos一般可以配置在应用端)
画了一个图:
...
一 简介
安装使用centos 5.10
Master 192.168.235.135
Slave 192.168.235.152
Vip 192.168.235.200
编译环境 yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel
当 Master 与 Slave 均运作正常时, Master负责服务,Slave负责Standby; 当 Master 挂掉,Slave 正常时, Slave接管服务,同时关闭主从复制功能; 当 Master 恢复正常,则从Slave同步数据,同步数据之后 ...