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()