这篇文章主要介绍了详解mongoDB主从复制搭建详细过程的相关资料,这里对实现主从复制进行了详细的步骤介绍,需要的朋友可以参考下。
实验目的搭建mongoDB主从复制 {#实验目的搭建mongodb主从复制}
[sourcecode language="plain"]
主:192.168.2.71
从:192.168.2.72
[/sourcecode]
一、下载MongoDB {#一-下载mongodb}
前往mongodb官网下载页面:https://www.mongodb.org/downloads下载相应的版本,比如目前的Linux x64位最新版:mongodb-linux-x86_64-2.6.4.tgz
不过有点坑爹是,下载链接明明是tgz格式,结果下载后变成了gz格式:
先下载看看好了。
二、MongoDB主安装 {#二-mongodb主安装}
[sourcecode language="plain"]
[root@tiejiangSRC1 ~]# cd /usr/local/src/
[root@tiejiangSRC1 src]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.9.tgz
[root@tiejiangSRC1 src]# gzip -d mongodb-linux-x86_64-rhel62-3.2.9.tgz
[root@tiejiangSRC1 src]# tar xvf mongodb-linux-x86_64-rhel62-3.2.9.tar
[root@tiejiangSRC1 src]# mv mongodb-linux-x86_64-rhel62-3.2.9 /usr/local/mongodb 将解压后的文件夹移动重命名至/usr/local/mongodb
[root@tiejiangSRC1 src]# cd /usr/local/mongodb/bin/
[/sourcecode]
三、MongoDB从安装 {#三-mongodb从安装}
[sourcecode language="plain"]
[root@tiejiangSRC2 ~]# cd /usr/local/src/
[root@tiejiangSRC2 src]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.9.tgz
[root@tiejiangSRC2 src]# gzip -d mongodb-linux-x86_64-rhel62-3.2.9.tgz
[root@tiejiangSRC2 src]# tar xvf mongodb-linux-x86_64-rhel62-3.2.9.tar
[root@tiejiangSRC2 src]# mv mongodb-linux-x86_64-rhel62-3.2.9 /usr/local/mongodb 将解压后的文件夹移动&重命名至/usr/local/mongodb
[root@tiejiangSRC2 src]# cd /usr/local/mongodb/bin/
[/sourcecode]
四、MongoDB的bin下各工具的用途
[sourcecode language="plain"]
mongod:数据库服务端,类似mysqld,每个实例启动一个进程,可以fork为Daemon运行
mongo:客户端命令行工具,类似sqlplus/mysql,其实也是一个js解释器,支持js语法
mongodump/mongorestore:将数据导入为bson格式的文件/将bson文件恢复为数据库,类似xtracbackup
mongoexport/mongoimport:将collection导出为json/csv格式数据/将数据导入数据库,类似- - - mysqldump/mysqlimport
bsondump:将bson格式的文件转储为json格式的数据
mongos:分片路由,如果使用了sharding功能,则应用程序连接的是mongos而不是mongod
mongofiles:GridFS管理工具 mongostat:实时监控工具
[/sourcecode]
五、主服务器配置 {#五-主服务器配置}
[sourcecode language="plain"]
创建两个文件夹 存数据和日志
[root@tiejiangSRC1 ~]# mkdir -p /home/tiejiang/mongodb/mongo /home/tiejiang/mongodb/mlog/
[root@tiejiangSRC1 ~]# cd /usr/local/mongodb/bin/
[root@tiejiangSRC1 bin]# vim mongodb_master.conf
#指定端口
port=27017
#后台运行
fork=true
#规定数据库的位置
dbpath=/home/tiejiang/mongodb/mongo
#规定数据库的日志文件
logpath=/home/tiejiang/mongodb/mlog/mongodb.log
#标志这个机器是MongoDB的主
master=true
#允许的地址 为了安全,这里为了实验,先注释掉
bind_ip=127.0.0.1,192.168.0.4
#禁止http访问
nohttpinterface=true
通过刚刚创建的配置文件启动MongoDB数据库
[root@tiejiangSRC1 bin]# ./mongod -f ./mongodb_master.conf
about to fork child process, waiting until server is ready for connections.
forked process: 25742
child process started successfully, parent exiting
[/sourcecode]
六、从服务器配置 {#六-从服务器配置}
[sourcecode language="plain"]
创建两个文件夹 存数据和日志
[root@tiejiangSRC2 ~]# mkdir -p /home/tiejiang/mongodb/mongo /home/tiejiang/mongodb/mlog/
[root@tiejiangSRC2 ~]# cd /usr/local/mongodb/bin/
[root@tiejiangSRC2 bin]# vim mongodb_slave.conf
#指定端口
port=27017
#后台运行
fork=true
#规定数据库的位置
dbpath=/home/tiejiang/mongodb/mongo
#规定数据库的日志文件
logpath=/home/tiejiang/mongodb/mlog/mongodb.log
#声明从
slave=true
#规定从属于哪个ip 注意:ip是主服务器的 最好用内网ip
source=192.168.2.71:27017
#允许的地址 为了安全
bind_ip=127.0.0.1,192.168.2.72
#禁止http访问
nohttpinterface=true
通过刚刚创建的配置文件启动MongoDB数据库
[root@tiejiangSRC2 bin]# ./mongod -f ./mongodb_slave.conf
about to fork child process, waiting until server is ready for connections.
forked process: 25840
child process started successfully, parent exiting
[/sourcecode]
七、MongoDB主从测试:主创建表 {#七-mongodb主从测试主创建表}
[sourcecode language="plain"]
登录进入数据库
[root@tiejiangSRC1 ~]# cd /usr/local/mongodb/bin/
[root@tiejiangSRC1 bin]# ./mongo
> use word
switched to db word
> db.Tiej.save({name:"tiejiang.org"})
WriteResult({ "nInserted" : 1 })
> db.Tiej.find()
{ "_id" : ObjectId("58fee36a9b5b51ee756194d5"), "name" : "tiejiang.org" }
[/sourcecode]
八、MongoDB主从测试:从同步表 {#八-mongodb主从测试从同步表}
[sourcecode language="plain"]
登录进入数据库
[root@tiejiangSRC2 ~]# cd /usr/local/mongodb/bin/
[root@tiejiangSRC2 bin]# ./mongo
> rs.slaveOk();
> show dbs;
local 0.000GB
word 0.000GB
> use word
switched to db word
> db.Tiej.find()
{ "_id" : ObjectId("58fee36a9b5b51ee756194d5"), "name" : "tiejiang.org" }
[/sourcecode]