mongodb主从复制

1.mongoDB简介

    MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2.环境

系统:Ubuntu14.0.4 

Master 192.168.20.11

 Slave  192.168.20.12

3.MongoDB安装

 3.1使用apt-get安装

sudo apt-get update
sudo apt-get –y install mongodb

 

 3.2 测试连接到MongoDB数据库

以下是连接到mongodb数据库,并创建了test数据库。

   

4 使用源码方式安装

4.1下载mongodb源码包

sudo wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-4.0.2.tgz

 

4.2 解压

tar xf mongodb-linux-x86_64-ubuntu1604-4.0.2.tgz

 

4.3 移动解压的mongodb

mv mongodb-linux-x86_64-ubuntu1604-4.0.2 /usr/local/mongodb

 

4.4 写入环境变量

sudo vim /etc/profile
export MONGO=/usr/local/mongodb
export PATH=$PATH:$MONGO/bin

:wq  #保存退出
source /etc/profile #重新加载环境变量

 

 

4.5 编写mongodb配置文件

sudo vim /etc/mongod.conf
verbose=true
port=27017
logpath=/var/log/mongodb/mongodb.log
logappend=true
dbpath=/home/nick/mongodb/db
directoryperdb=true
auth=false
fork=true
quiet=true
bind_ip = 0.0.0.0

 

4.6 创建mongodb目录

sudo mkdir -p /var/log/mongodb/logs  #创建mongodb日志存放位置
sudo touch /var/log/mongodb/logs/mongodb.log #创建mongodb日志文件
sudo mkdir -p /home/nick/mongodb/db #创建mongodb数据库存放位置

 

4.7 创建mongodb启动脚本

sudo vim /etc/init.d/mongodb
#BEGIN INIT INFO
# Provides: mongodb
# Required-Start:
# Required-Stop:
# Default-Stop: 0 1 6
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO
. /lib/lsb/init-functions
PROGRAM=/usr/local/mongodb/bin/mongod
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`
test -x $PROGRAM || exit 0
case "$1" in
 start)
    ulimit -n 3000
    log_begin_msg "Starting MongoDB server"
    $PROGRAM -f /etc/mongod.conf
    log_end_msg 0
    ;;

 stop)
    log_begin_msg "Stopping MongoDB server"
    if [ ! -z "$MONGOPID" ]; then
        kill -15 $MONGOPID
    fi
    log_end_msg 0
    ;;

 status)
    ;;
    *)
    log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"
    exit 1
esac

 

4.8 添加mongodb到系统服务并开机启动

# 加可执行权限
sudo chmod +x /etc/init.d/mongodb
# 注册开机脚本 sudo update-rc.d mongodb defaults
# 启动服务器 sudo service mongodb start

 

5.MongoDB主从配置

master:默认为false,当设置为true,则配置当前实例作为主节点。

slave:默认为false,当设置为true,则配置当前实例作为从节点。

source:默认为空,用于从节点,指定从节点的复制来源(主节点的IP+端口),

格式为:<host><:port>

only:默认为空,用于从节点,主动复制默认复制主节点上所有的数据库,通过设置此项指定需要复制的数据库名称

slavedelay:设置从库同步主库的延迟时间,用于从设置,默认为0,单位秒。

autoresync:默认为false,用于从设置。是否自动重新同步。设置为true,如果落后主超过10秒,会强制从自动重新同步。如果oplogSize太小,此设置可能有问题。如果OPLOG大小不足以存储主的变化状态和从的状态变化之间的差异,这种情况下强制重新同步是不必要的。当设置autoresync选项设置为false,10分钟内从不会进行大于1次的自动重新同步。

5.1 MongoDB主节点配置

  

sudo vim /etc/mongodb.conf
dbpath=/var/lib/mongodb  #数据库文件存放位置
#where to log
logpath=/var/log/mongodb/mongodb.log  #数据库日志文件位置
logappend=true
bind_ip = 192.168.20.11  #监听IP地址,默认为127.0.0.1
#port = 27017  #MongoDB默认监听27017端口
# Enable journaling, http://www.mongodb.org/display/DOCS/Journaling
journal=true
fork=true
master=true   #确定自己为主节点服务器
autoresync=true
slavedelay=5
oplogSize=2048

#完成后重启MongoDB服务

sudo service mongodb restart

 

 

 

 

 5.2 MongoDB主从节点配置

vim /etc/mongodb.conf
dbpath=/home/bfadmin/mongodb/mongodbdata
logpath=/home/bfadmin/mongodb/mongodblog/mongodb.log
port=27017
bind_ip=0.0.0.0
fork=true
logappend=true
master=true
slave=true
source=192.168.100.33:27026
autoresync=true
slavedelay=5
oplogSize=2048

 

        

 5.3 MongoDB从节点配置

  

sudo vim /etc/mongodb.conf
# mongodb.conf
# Where to store the data.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
bind_ip = 192.168.20.12
#port = 27017
# Enable journaling, http://www.mongodb.org/display/DOCS/Journaling
journal=true
source = 192.168.20.11
slave = true #确定自己为从节点服务器

# 完成后重启MongoDB服务
sudo service mongodb restart

 

 

6.常见故障

 show dbs 错误,解决办法,在mongodb数据库shell输入

 rs.slaveOk()或者db.getMongo().setSlaveOk()

 rs.slaveOk()

 

posted @ 2019-03-06 16:08  NickCqila  阅读(1294)  评论(0编辑  收藏  举报