搭建高可用mongodb集群

【mongo基础】php

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。sql

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins   表链接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

 

【mongo搭建--副本集】mongodb

一、建立mongo数据存放路径:~/mongo_data/replset/data数据库

二、编写配置文件~/mongo_data/replset/mongo.confapp


dbpath=/home/XX/mongo_data/replset/data
logpath=/home/XX/mongo_data/replset/replset.log
pidfilepath=/home/XX/mongo_data/replset/replset.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=10.10.148.130
port=27017
oplogSize=10000
fork=true
noprealloc=true分布式

参数解释:测试

dbpath:数据存放目录日志

logpath:日志存放路径code

pidfilepath:进程文件,方便中止mongodbserver

directoryperdb:为每个数据库按照数据库名创建文件夹存放

logappend:以追加的方式记录日志

replSet:replica set的名字

bind_ip:mongodb所绑定的ip地址

port:mongodb进程所使用的端口号,默认为27017

oplogSize:mongodb操做日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%

fork:之后台方式运行进程

noprealloc:不预先分配存储

 

三、启动 mongo服务:mongod -f  mongo.conf

about to fork child process, waiting until server is ready for connections.
forked process: 29583
child process started successfully, parent exiting

四、初始化副本集

在三台机器上任意一台机器登录mongo

mongo
#使用admin数据库
> use admin
switched to db admin
#定义副本集配置变量,这里的 _id:”repset” 和上面命令参数“ –replSet repset” 要保持同样。
>config = { _id:"repset", members:[
... {_id:0,host:"192.168.1.136:27017"},
... {_id:1,host:"192.168.1.137:27017"},
... {_id:2,host:"192.168.1.138:27017"}]
... }
#输出(省略)
#初始化副本集配置
>rs.initiate(config);
#输出成功,几十秒至1~2分钟
{
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}
#查看日志,副本集启动成功后,138为主节点PRIMARY,13六、137为副本节点SECONDARY。
#或者客户端链接 mongo查看

#mongodb默认是从主节点读写数据的,副本节点上不容许读,须要设置副本节点能够读。
repset:SECONDARY> db.getMongo().setSlaveOk();

测试

 

PHP 链接 mongo副本集

<?php

$conn = new Mongo("mongodb://《id1》:27017,<id2>:27017,<id3>:27027",array('replicaSet'=>'replset'));
$db = $conn->selectDB('test');
$data=array('name'=>'summer','time'=>time());
$collection=$db->selectCollection('message');
try{
      $collection->insert($data);
}catch(MongoCursorException $e){
    echo $e->getMessage();
}
相关文章
相关标签/搜索