MongoDB系列文档4-配置MongoDB复制集
MongoDB系列文档
MongoDB系列文档1-MongoDB复制集简介
MongoDB系列文档2-复制的基本架构
MongoDB系列文档3-复制集中成员说明
MongoDB系列文档4-配置MongoDB复制集
MongoDB系列文档5-MongoDB分片介绍
MongoDB系列文档6-集群中数据分布
MongoDB系列文档7-数据区分
MongoDB系列文档8-部署分片集群
MongoDB系列文档9-分片集群的操作
MongoDB系列文档10-balance操作
1.4 配置MongoDB复制集
1.4.1 环境说明
系统环境说明:
[root@MongoDB ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@MongoDB ~]# uname -r2.6.32-696.el6.x86_64
[root@MongoDB ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@MongoDB ~]# getenforce
Disabled
[root@MongoDB ~]# hostname -I10.0.0.152 172.16.1.152
软件版本说明
本次使用的mongodb版本为:mongodb-linux-x86_64-3.2.8.tgz
1.4.2 前期准备,在root用户下操作
本次复制集复制采用Mongodb多实例进行
所有的操作都基于安装完成的mongodb服务,详情参照:http://www.cnblogs.com/clsn/p/8214194.html#_label3
#创建mongod用户
useradd -u800 mongod
echo 123456|passwd --stdin mongod # 安装mongodb
mkdir -p /mongodb/bin
cd /mongodb
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.8.tgz
tar xf mongodb-linux-x86_64-3.2.8.tgz
cd mongodb-linux-x86_64-3.2.8/bin/ &&\
cp * /mongodb/bin
chown -R mongod.mongod /mongodb# 切换到mongod用户进行后续操作
su - mongod
1.4.3 创建所需目录
for i in 28017 28018 28019 28020
do
mkdir -p /mongodb/$i/conf
mkdir -p /mongodb/$i/data
mkdir -p /mongodb/$i/logdone
1.4.4 配置多实例环境
编辑第一个实例配置文件
cat >>/mongodb/28017/conf/mongod.conf<<'EOF'
systemLog:
destination: file
path: /mongodb/28017/log/mongodb.log
logAppend: true
storage:
journal:
enabled: true
dbPath: /mongodb/28017/data
directoryPerDB: true
#engine: wiredTiger
wiredTiger:
engineConfig:
# cacheSizeGB: 1
directoryForIndexes: true
collectionConfig:
blockCompressor: zlib
indexConfig:
prefixCompression: true
processManagement:
fork: true
net:
port: 28017
replication:
oplogSizeMB: 2048
replSetName: my_repl
EOF
复制配置文件
for i in 28018 28019 28020
do
\cp /mongodb/28017/conf/mongod.conf /mongodb/$i/conf/done
修改配置文件
for i in 28018 28019 28020
do
sed -i "s#28017#$i#g" /mongodb/$i/conf/mongod.confdone
启动服务
for i in 28017 28018 28019 28020
do
mongod -f /mongodb/$i/conf/mongod.conf done
关闭服务的方法
for i in 28017 28018 28019 28020
do
mongod --shutdown -f /mongodb/$i/conf/mongod.conf done
1.4.5 配置复制集
登陆数据库,配置mongodb复制
shell> mongo --port 28017
config = {_id: 'my_repl', members: [
{_id: 0, host: '10.0.0.152:28017'},
{_id: 1, host: '10.0.0.152:28018'},
{_id: 2, host: '10.0.0.152:28019'}]
}
初始化这个配置
> rs.initiate(config)
到此复制集配置完成
1.4.6 测试主从复制
在主节点插入数据
my_repl:PRIMARY> db.movies.insert([ { "title" : "Jaws", "year" : 1975, "imdb_rating" : 8.1 },
{ "title" : "Batman", "year" : 1989, "imdb_rating" : 7.6 },
] );
在主节点查看数据
my_repl:PRIMARY> db.movies.find().pretty()
{
"_id" : ObjectId("5a4d9ec184b9b2076686b0ac"),
"title" : "Jaws",
"year" : 1975,
"imdb_rating" : 8.1
}
{
"_id" : ObjectId("5a4d9ec184b9b2076686b0ad"),
"title" : "Batman",
"year" : 1989,
"imdb_rating" : 7.6
}
注:在mongodb复制集当中,默认从库不允许读写。
在从库打开配置(危险)
注意:严禁在从库做任何修改操作
my_repl:SECONDARY> rs.slaveOk()
my_repl:SECONDARY> show tables;
movies
my_repl:SECONDARY> db.movies.find().pretty()
{
"_id" : ObjectId("5a4d9ec184b9b2076686b0ac"),
"title" : "Jaws",
"year" : 1975,
"imdb_rating" : 8.1
}
{
"_id" : ObjectId("5a4d9ec184b9b2076686b0ad"),
"title" : "Batman",
"year" : 1989,
"imdb_rating" : 7.6
}
在从库查看完成在登陆到主库
1.4.7 复制集管理操作
(1)查看复制集状态:
rs.status(); # 查看整体复制集状态
rs.isMaster(); # 查看当前是否是主节点
###(2)添加删除节点
rs.add("ip:port"); # 新增从节点
rs.addArb("ip:port"); # 新增仲裁节点
rs.remove("ip:port"); # 删除一个节点
注:
添加特殊节点时,
1>可以在搭建过程中设置特殊节点
2>可以通过修改配置的方式将普通从节点设置为特殊节点
/*找到需要改为延迟性同步的数组号*/;
(3)配置延时节点(一般延时节点也配置成hidden)
cfg=rs.conf()
cfg.members[2].priority=0
cfg.members[2].slaveDelay=120
cfg.members[2].hidden=true
注:这里的2是rs.conf()显示的顺序(除主库之外),非ID
重写复制集配置
rs.reconfig(cfg)
也可将延时节点配置为arbiter节点
cfg.members[2].arbiterOnly=true
配置成功后,通过以下命令查询配置后的属性
rs.conf();
1.4.8 副本集其他操作命令
查看副本集的配置信息
my_repl:PRIMARY> rs.config()
查看副本集各成员的状态
my_repl:PRIMARY> rs.status()
1.4.8.1 副本集角色切换(不要人为随便操作)
rs.stepDown()
rs.freeze(300) # 锁定从,使其不会转变成主库,freeze()和stepDown单位都是秒。
rs.slaveOk() # 设置副本节点可读:在副本节点执行
插入数据
> use app
switched to db app
app> db.createCollection('a')
{ "ok" : 0, "errmsg" : "not master", "code" : 10107 }
查看副本节点
> rs.printSlaveReplicationInfo()
source: 192.168.1.22:27017
syncedTo: Thu May 26 2016 10:28:56 GMT+0800 (CST)
0 secs (0 hrs) behind the primary