搭建高可用mongodb集群
博客专区 > SibylY 的博客 > 博客详情
搭建高可用mongodb集群
SibylY 发表于1年前
搭建高可用mongodb集群
  • 发表于 1年前
  • 阅读 17
  • 收藏 1
  • 点赞 0
  • 评论 0

【mongo基础】

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

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

 

【mongo搭建--副本集】

1、创建mongo数据存放路径:~/mongo_data/replset/data

2、编写配置文件~/mongo_data/replset/mongo.conf


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:日志存放路径

pidfilepath:进程文件,方便停止mongodb

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

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

replSet:replica set的名字

bind_ip:mongodb所绑定的ip地址

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

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

fork:以后台方式运行进程

noprealloc:不预先分配存储

 

3、启动 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

4、初始化副本集

在三台机器上任意一台机器登陆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,136、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();
}

 

共有 人打赏支持
粉丝 29
博文 368
码字总数 307264
×
SibylY
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: