副本集的搭建
主要过程参考:
http://blog.youkuaiyun.com/luonanqin/article/details/8497860
使用三台服务器:
* primary
* secondary
* arbiter
当primary挂掉的情况下,secondary会直接被选为primary,primary重新上线之后集群会恢复初始配置。
当secondary或者arbiter挂掉的情况下,无影响
当secondary和arbiter同时挂掉情况下,primary变成secondary
在搭建MongoDB副本集过程出错,出错如下:
rs.initiate(cfg)
{
“ok” : 0,
“errmsg” : “couldn’t initiate : need all members up to initiate, not ok : 128.1.1.65:10001”
}
原因:这台服务器的防火墙打开了,用service iptables stop关闭即可。
使用YCSB进行性能测试
下载最新的YCSB-0.14后,在cygwin下使用maven编译成功,运行:
$ ./bin/ycsb load mongodb
java.lang.NoClassDefFoundError: com/yahoo/ycsb/Client
Caused by: java.lang.ClassNotFoundException: com.yahoo.ycsb.Client
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: com.yahoo.ycsb.Client. Program will exit.
Exception in thread “main”
ycsb生成的java命令使用了以/cygdrive/开始的绝对路径,同时jar的分隔符使用的是 “:”所以无法找到相应的类,改成相对路径和分隔符之后
D:\360Downloads\YCSB-master>java -cp ./core/target/core-0.1.4.jar;./mongodb/target/mongodb-binding-0.1.4.jar;./mongodb/target/archive-tmp/mongodb-binding-0.1.4.
jar;./mongodb.properties com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.MongoDbClient -P workloads/workloada -threads 10 -load >test.log
测试正常。
更改配置文件workload/workloada
mongodb.url=mongodb://168.7.1.64:10000
mongodb.database=ycsb
mongodb.writeConcern=normal
recordcount=1000000
operationcount=1000000
workload=com.yahoo.ycsb.workloads.CoreWorkload
readallfields=true
readproportion=0.5
updateproportion=0.5
scanproportion=0
insertproportion=0
requestdistribution=zipfian