【MongoDB】主从同步

本文详细介绍了MongoDB主从同步的配置步骤,包括配置文件的设置、数据同步、启动服务和测试,以及双主机的部署。MongoDB因其灵活性、性能和高可用性在多个领域得到广泛应用。
摘要由CSDN通过智能技术生成

 上一篇介绍了MongoDB的基础操作。本文主要介绍MongoDB的主从同步Master和Slave的配置方法以及双主机的配置方法”

1 Master和Slave的配置方法

1.1 预览


# 主机器(master)
master: 192.168.189.131
mongodb home: /opt/mongodb-2.4.9
data file: /opt/mongodbdata/mongodb_db
log file: /opt/mongodbdata/mongodb_logs
# 从机器(slave)
slave: 192.168.189.132
mongodb home: /opt/mongodb-2.4.9
data file: /opt/mongodbdata/mongodb_db
log file: /opt/mongodbdata/mongodb_logs
rm -rf /opt/mongodbdata/*
mkdir /opt/mongodbdata/mongodb_db
mkdir /opt/mongodbdata/mongodb_logs
# 注意:这里,最好是用scp命令把主机器的mongodb的所有目录和文件远程拷贝
# 到从机器上去, 之前不要去启动,主机器,否则启动从的时候会报错(在
# 日志文件中可以看到错误:mongodb ERROR: Client::~Client _context should be null but is not;client:replslave)
# 这样的话, 只需要把数据文件data目录下的所有文件删除,重新启动即可

# 复制:两边目录尽可能是一致的文件夹
scp -r -P22 mongodb-2.4.9/
mongodbdata/ root@192.168.189.132:/opt/

1.2 建立conf文件


mkdir /opt/mongodb-2.4.9/conf
# 红色为主从需要的配置文件
[root@localhost conf]# more mongod.conf
port=27017 # 端口号
fork=true  # 以守护进程的方式运行,创建服务器进程
logpath=/opt/mongodbdata/mongodb_logs/mongodb.log # 日志输出文件路径
logappend=true # 日志输出方式
dbpath=/opt/mongodbdata/mongodb_db # 数据库路径
shardsvr=true # 设置是否分片
maxConns=600 # 数据库的最大连接数
master=true
oplogSize=2048 # 类似于mysql的日志滚动,单位m

[root@localhost conf]# more mongod.conf
port=27017  # 端口号
fork=true   # 以守护进程的方式运行,创建服务器进程
logpath=/opt/mongodbdata/mongodb_logs/mongodb.log # 日志输出文件路径
logappend=true #日志输出方式
dbpath=/opt/mongodbdata/mongodb_db # 数据库路径
shardsvr=true # 设置是否分片
maxConns=600  # 数据库的最大连接数
slave=true
source=192.168.189.131:27017  # 指定主mongodb server
slavedelay=10   # 延迟复制,单位为秒
autoresync=true # 当发现从服务器的数据不是最新时,向主服务器请求同步数据

1.3 启动


cd mongodb-2.4.9/bin/
./mongod -f
/opt/mongodb-2.4.9/conf/mongod.conf

1.4 测试


# Master:
MongoDB shell version: 2.0.7
connecting to: test
> show dbs
local 4.201171875GB
> use xin
switched to db xin
> db.test.save({title:"just 
 test"})
> db.test.find()
{ "_id" :ObjectId("502d3643c5664ca66103a7cf"), "title" : "just
 test" }
> show dbs
local 4.201171875GB
xin 0.203125GB

# slave:
> show dbs
local 0.078125GB
xin 0.203125GB
# 再查看复制状态
> db.printReplicationInfo()
this is a slave, printing slave replication info.
source:  10.48.255.244:27017
 syncedTo:
Thu Aug 16 2012 18:33:27 GMT+0000 (UTC)
 =
18 secs ago (0.01hrs)
>
> db.printSlaveReplicationInfo()
source:  10.48.255.244:27017
 syncedTo:
Thu Aug 16 2012 18:34:37 GMT+0000 (UTC)
 =
20 secs ago (0.01hrs)

2 双主机

2.1 建立conf文件


# 红色的为后添加,master slave 配置文件基本一致source 为对方的主机
[root@localhost conf]# more mongod.conf
port=27017   # 端口号
fork=true   # 以守护进程的方式运行,创建服务器进程
logpath=/opt/mongodbdata/mongodb_logs/mongodb.log # 日志输出文件路径
logappend=true #日志输出方式
dbpath=/opt/mongodbdata/mongodb_db # 数据库路径
shardsvr=true # 设置是否分片
maxConns=600 # 数据库的最大连接数
master=true
oplogSize=2048 # 类似于mysql的日志滚动,单位m
slave=true
source=192.168.189.132:27017 # 指定主mongodb server
slavedelay=10   # 延迟复制,单位为秒
autoresync=true # 当发现从服务器的数据不是最新时,向主服务器请求同步数据
slave:
[root@localhost conf]# more mongod.conf
port=27017 # 端口号
fork=true  # 以守护进程的方式运行,创建服务器进程
logpath=/opt/mongodbdata/mongodb_logs/mongodb.log # 日志输出文件路径
logappend=true # 日志输出方式
dbpath=/opt/mongodbdata/mongodb_db # 数据库路径
shardsvr=true # 设置是否分片
maxConns=600 # 数据库的最大连接数
master=true
oplogSize=2048 #类 似于mysql的日志滚动,单位m
slave=true
source=192.168.189.131:27017 # 指定主mongodb server
slavedelay=10  # 延迟复制,单位为秒
autoresync=true # 当发现从服务器的数据不是最新时,向主服务器请求同步数据

# slave
[root@localhost conf]# more mongod.conf 
port=27017 # 端口号
fork=true # 以守护进程的方式运行,创建服务器进程
logpath=/opt/mongodbdata/mongodb_logs/mongodb.log # 日志输出文件路径
logappend=true # 日志输出方式
dbpath=/opt/mongodbdata/mongodb_db # 数据库路径
shardsvr=true # 设置是否分片
maxConns=600  # 数据库的最大连接数

master=true
oplogSize=2048 # 类似于mysql的日志滚动,单位m

slave=true
source=192.168.189.131:27017   #指定主mongodb server
slavedelay=10                  #延迟复制,单位为秒
autoresync=true                #当发现从服务器的数据不是最新时,向主服务器请求同步数

2.2 启动


cd mongodb-2.4.9/bin/
./mongod -f
/opt/mongodb-2.4.9/conf/mongod.conf

2.3 测试

# Master
> show dbs
local 2.0771484375GB
> use xin
switched to db xin
> db.test.find()
{ "_id" :
ObjectId("547ddf806e04e32bbe9abf93"), "title" : "just
test" }
> show dbs
local 2.0771484375GB
xin 0.203125GB

# slave
> show dbs
local 2.0771484375GB
xin 0.203125GB
> use frank
switched to db frank
> db.ftest.save({f1:"f1 
test"})
> db.ftest.find()
{ "_id" : ObjectId("890ddfe66123ddf877ea62a2"),
"f1" : "f1 test" }
>

# Master:
> show dbs
local 2.0771484375GB
frank 0.203125GB
xin 0.203125GB
> db.ftest.find()
{ "_id" :
ObjectId("890ddfe66123ddf877ea62a2"), "f1" : "f1
test" }

3 结束语

  由于MongoDB灵活的数据模型、易于扩展、高性能、高可用等一系列突出的优点,广泛应用在物联网、游戏、物流、直播、社交等各个领域。

如果您喜欢这篇文章,可扫描下方二维码,关注公众号(SRE技术栈)查看更多文章!

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank hwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值