***MongoDB安装部署及简介
简述:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
环境:CentOS 5.5 x64
安装:
环境:CentOS 5.5 x64
安装:
- cd /root/tools
- wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
- tar zxvf mongodb-linux-x86_64-2.0.0.tgz
- mv mongodb-linux-x86_64-2.0.0 /elain/apps/mongodb-linux-x86_64-2.0.0
- ln -s /elain/apps/mongodb-linux-x86_64-2.0.0 /elain/apps/mongodb
- ln -s /elain/apps/mongodb/bin/* /bin/
#添加用户组
- /usr/sbin/groupadd -g 690 mongodb
- /usr/sbin/useradd -g mongodb mongodb -u 690 -s /sbin/nologin
#创建存储目录
- mkdir -p /elain/data/mongodb/db/
- chown -R mongodb.mongodb /elain/data/mongodb/db/
#启动运行
- nohup mongod --dbpath /elain/data/mongodb/db &
#开机自启动
- echo "mongod --dbpath /elain/data/db" >>/etc/rc.local
#以服务方式启动mongodb,要求验证
- /elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
#注:参数中用到的目录需创建
#停止
#停止
- kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'`
#验证启动
- [root@md01 ~]# netstat -ln
- Active Internet connections (only servers)
- Proto Recv-Q Send-Q Local Address Foreign Address State
- tcp 0 0 0.0.0.0:28001 0.0.0.0:* LISTEN
- tcp 0 0 0.0.0.0:27001 0.0.0.0:* LISTEN
还可以通过访问:http://ip:28001/ 浏览
#登录:
#登录:
- mongo --host serverip:27001
- [root@md01 ~]# mongo --host localhost:27001
- MongoDB shell version: 2.0.0
- connecting to: localhost:27001/test
- >
#测试
- [root@md02 mongodb]# mongo
- MongoDB shell version: 1.8.3
- connecting to: test
- Thu Sep 8 22:16:13 [initandlisten] connection accepted from 127.0.0.1:43643 #2
- > db.foo.save( { a : 1 } )
- > db.foo.find()
- { "_id" : ObjectId("4e68ce01f4be44b5812e7f9a"), "a" : 1 }
附录一:
mongodb的bin下各工具的用途:
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:实时监控工具
附录二:
mongod的主要参数有:
dbpath: 数据文件存放路径,每个数据库会在其中创建一个子目录。
logpath:错误日志文件
logappend: 错误日志采用追加模式(默认是覆写模式)
bind_ip: 对外服务的绑定ip,一般设置为空,及绑定在本机所有可用ip上,如有需要可以单独指定
port: 对外服务端口。Web管理端口在这个port的基础上+1000
fork: 以后台Daemon形式运行服务
journal:开启日志功能,通过保存操作日志来降低单机故障的恢复时间,在1.8版本后正式加入,取代在1.7.5版本中的dur参数。
syncdelay: 执行sync的间隔,单位为秒。
directoryperdb: 每个db存放在单独的目录中,建议设置该参数。
maxConns: 最大连接数
repairpath: 执行repair时的临时目录。在如果没有开启journal,异常宕机后重启,必须执行repair操作。
mongodb的bin下各工具的用途:
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:实时监控工具
附录二:
mongod的主要参数有:
dbpath: 数据文件存放路径,每个数据库会在其中创建一个子目录。
logpath:错误日志文件
logappend: 错误日志采用追加模式(默认是覆写模式)
bind_ip: 对外服务的绑定ip,一般设置为空,及绑定在本机所有可用ip上,如有需要可以单独指定
port: 对外服务端口。Web管理端口在这个port的基础上+1000
fork: 以后台Daemon形式运行服务
journal:开启日志功能,通过保存操作日志来降低单机故障的恢复时间,在1.8版本后正式加入,取代在1.7.5版本中的dur参数。
syncdelay: 执行sync的间隔,单位为秒。
directoryperdb: 每个db存放在单独的目录中,建议设置该参数。
maxConns: 最大连接数
repairpath: 执行repair时的临时目录。在如果没有开启journal,异常宕机后重启,必须执行repair操作。
***常用命令含备份恢复
#以服务方式启动mongodb,要求验证
/elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
#注:参数中用到的目录需创建
#停止
kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'`
#验证启动
[root@md01 ~]# netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:28001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:27001 0.0.0.0:* LISTEN
还可以通过访问:http://ip:28001/ 浏览
#远程登录:
mongo --host serverip:27001
#本机登录:
mongo --port 27001
[root@md01 ~]# mongo --host localhost:27001
MongoDB shell version: 2.0.0
connecting to: localhost:27001/test
>
#获取MongoDB服务器统计信息
> db.runCommand({"serverStatus" : 1})
#使用实时监控工具
mongostat -h localhost:27001
#查看版本
> db.version()
2.0.0
用户管理:
> db.addUser("root","123456"); #添加管理员root
> use test
switched to db test
> db.addUser("test_w","123456"); #为TEST库添加普通用户test_w
> use test
switched to db test
> db.addUser("test_r", "123456", true); #为TEST库添加只读用户test_r
> db.system.users.remove({"user": "test_w"}); #删除名为test_w的用户
> db.auth("test_w", "123456"); #验证并切换用户身份
> db.system.users.find(); #查看当前库的所有用户
> show users; #查看当前库的所有用户
> use admin
> db.runCommand({"buildInfo":1}) #查看系统信息与mongodb版本
数据管理:
>use elain #建库
>db.elain.insert({name:'elain'}); #数据插入
>db.elain.remove({name:'elain'}); #数据删除
>db.elain.remove({name:'elain'}); #数据删除(永久删除)
>show dbs; #显示数据库
>show collections; #显示表
>db.elain.find(); #数据查询
>db.elain.findOne(); #只查一行
>db #查看当前所在库
>db.collection.count(); #统计colleciton的数量
>db.collection.drop(); #删除此colleciton
>db.foo.find().count #某个数据的数量
>db.deliver_status.dataSize(); #查看collection数据的大小
>db.deliver_status.stats(); #查看colleciont状态
>db.deliver_status.totalIndexSize(); #查询所有索引的大小
#删除数据库
use elain;
db.dropDatabase();
#修复数据库
db.repairDatabase();
#删除表
db.elain.drop();
#查看profiling
show profile
>db.test.find({},{"_id":0}); #不显示id列
>db.test.find({'name':/mp/i}); #正则查找忽略大小写
db.elain.ensureIndex({"name":1}); #建立索引
db.elain.dropIndex({"name":1}); #删除索引
db.elain.find({"name":"elain"}).explain(); #查看索引
---------------------------------------
"$lt" <
"$lte" <=
"$gt" >
"$gte" >=
"$ne" <>
"$in" 一个键匹配多个值
"$nin" 一个键不匹配多个值
$not 不匹配
$all 匹配数组全值
$size 数组长度
$slice 返子集合 {"$slice”:10} -10 [10,20]
. 内嵌文档 {“name.first”:“xxx”}
$where *通常情况下不建议使用
-----------------------------------------
备份恢复:
数据导出:
/elain/apps/mongodb/bin/mongoexport -h 127.0.0.1:27001 -uroot -p -d elain -c -o elain elain_con.csv
数据导入:
/elain/apps/mongodb/bin/mongoimport -h 127.0.0.1:27001 -uroot -p -d elain -c elain elain_con.csv
备份数据库:
mongodump -h 127.0.0.1:27001 -uroot -p -d elain -o /elain/backup/mongodb
恢复数据库:
mongorestore -h 127.0.0.1:27001 -uroot -p -d elain /elain/backup/mongodb/elain
恢复数据库(恢复前清除已有数据):
mongorestore -h 127.0.0.1:27001 -uroot -p -d elain --drop /elain/backup/mongodb/elain
性能测试:
备份方面:mongodump的速度和压缩率都最好,每秒125M的数据,压缩率达28%
恢复方面:
mongoimport速度较快,但不保证数据完整导入
mongorestore,速度较慢,比mongoimport慢2.5倍左右,但是根据mongodump导出的数据,可以完整导入数据。
/elain/apps/mongodb/bin/mongod --fork --port 27001 --auth --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
#注:参数中用到的目录需创建
#停止
kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'`
#验证启动
[root@md01 ~]# netstat -ln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:28001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:27001 0.0.0.0:* LISTEN
还可以通过访问:http://ip:28001/ 浏览
#远程登录:
mongo --host serverip:27001
#本机登录:
mongo --port 27001
[root@md01 ~]# mongo --host localhost:27001
MongoDB shell version: 2.0.0
connecting to: localhost:27001/test
>
#获取MongoDB服务器统计信息
> db.runCommand({"serverStatus" : 1})
#使用实时监控工具
mongostat -h localhost:27001
#查看版本
> db.version()
2.0.0
用户管理:
> db.addUser("root","123456"); #添加管理员root
> use test
switched to db test
> db.addUser("test_w","123456"); #为TEST库添加普通用户test_w
> use test
switched to db test
> db.addUser("test_r", "123456", true); #为TEST库添加只读用户test_r
> db.system.users.remove({"user": "test_w"}); #删除名为test_w的用户
> db.auth("test_w", "123456"); #验证并切换用户身份
> db.system.users.find(); #查看当前库的所有用户
> show users; #查看当前库的所有用户
> use admin
> db.runCommand({"buildInfo":1}) #查看系统信息与mongodb版本
数据管理:
>use elain #建库
>db.elain.insert({name:'elain'}); #数据插入
>db.elain.remove({name:'elain'}); #数据删除
>db.elain.remove({name:'elain'}); #数据删除(永久删除)
>show dbs; #显示数据库
>show collections; #显示表
>db.elain.find(); #数据查询
>db.elain.findOne(); #只查一行
>db #查看当前所在库
>db.collection.count(); #统计colleciton的数量
>db.collection.drop(); #删除此colleciton
>db.foo.find().count #某个数据的数量
>db.deliver_status.dataSize(); #查看collection数据的大小
>db.deliver_status.stats(); #查看colleciont状态
>db.deliver_status.totalIndexSize(); #查询所有索引的大小
#删除数据库
use elain;
db.dropDatabase();
#修复数据库
db.repairDatabase();
#删除表
db.elain.drop();
#查看profiling
show profile
>db.test.find({},{"_id":0}); #不显示id列
>db.test.find({'name':/mp/i}); #正则查找忽略大小写
db.elain.ensureIndex({"name":1}); #建立索引
db.elain.dropIndex({"name":1}); #删除索引
db.elain.find({"name":"elain"}).explain(); #查看索引
---------------------------------------
"$lt" <
"$lte" <=
"$gt" >
"$gte" >=
"$ne" <>
"$in" 一个键匹配多个值
"$nin" 一个键不匹配多个值
$not 不匹配
$all 匹配数组全值
$size 数组长度
$slice 返子集合 {"$slice”:10} -10 [10,20]
. 内嵌文档 {“name.first”:“xxx”}
$where *通常情况下不建议使用
-----------------------------------------
备份恢复:
数据导出:
/elain/apps/mongodb/bin/mongoexport -h 127.0.0.1:27001 -uroot -p -d elain -c -o elain elain_con.csv
数据导入:
/elain/apps/mongodb/bin/mongoimport -h 127.0.0.1:27001 -uroot -p -d elain -c elain elain_con.csv
备份数据库:
mongodump -h 127.0.0.1:27001 -uroot -p -d elain -o /elain/backup/mongodb
恢复数据库:
mongorestore -h 127.0.0.1:27001 -uroot -p -d elain /elain/backup/mongodb/elain
恢复数据库(恢复前清除已有数据):
mongorestore -h 127.0.0.1:27001 -uroot -p -d elain --drop /elain/backup/mongodb/elain
性能测试:
备份方面:mongodump的速度和压缩率都最好,每秒125M的数据,压缩率达28%
恢复方面:
mongoimport速度较快,但不保证数据完整导入
mongorestore,速度较慢,比mongoimport慢2.5倍左右,但是根据mongodump导出的数据,可以完整导入数据。
***MongoDB主从部署
主从同步:
md01 10.0.0.11 master
md02 10.0.0.12 slave
md03 10.0.0.14 slave
#建立数据库目录
md01 10.0.0.11 master
md02 10.0.0.12 slave
md03 10.0.0.14 slave
#建立数据库目录
- mkdir -p /elain/apps/mongodb/
- mkdir -p /elain/data/mongodb/db/
- mkdir -p /elain/logs/mongodb/
注:
1、不需要像mysql一样复制完整数据过去,丛库启动会制动复制主库完整数据。
2、丛库自动配置为只读。
3、mongodb第一次启动时间较长,需要注意等待。
4、管理命令多数都要在admin库中执行 use admin
相关参数:./mongod --help
--autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据
--slavedelay 同步延迟,单位:秒
主-从
作为主服务器启动
1、不需要像mysql一样复制完整数据过去,丛库启动会制动复制主库完整数据。
2、丛库自动配置为只读。
3、mongodb第一次启动时间较长,需要注意等待。
4、管理命令多数都要在admin库中执行 use admin
相关参数:./mongod --help
--autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据
--slavedelay 同步延迟,单位:秒
主-从
作为主服务器启动
- /elain/apps/mongodb/bin/mongod --fork --master --oplogSize=4096 --port 27001 --dbpath /elain/data/mongodb/db --logpath /elain/logs/mongodb/mongodb.log
作为从服务器启动,并指明主服务器地址。--autoresync为强制从主服务器同步全部数据
- /elain/apps/mongodb/bin/mongod --fork --slave --source 10.0.0.11:27001 --port 27001 --dbpath /elain/data/mongodb/db --logpath /elain/logs/mongodb/mongodb.log
注:可以在启动从时加以下常用参数
--slavedelay 10 #延时复制 单位为秒
--autoresync #自动重新同步
--only #复制指定的数据库,默认复制所有的库
--oplogSize #主节点的oplog日志大小,单位为M,建议设大点(更改oplog大小时,只需停主库,删除local.*,然后加--oplogSize=* 重新启动即可,*代表大小)
如果发现主从不同步,从上手动同步
--slavedelay 10 #延时复制 单位为秒
--autoresync #自动重新同步
--only #复制指定的数据库,默认复制所有的库
--oplogSize #主节点的oplog日志大小,单位为M,建议设大点(更改oplog大小时,只需停主库,删除local.*,然后加--oplogSize=* 重新启动即可,*代表大小)
如果发现主从不同步,从上手动同步
- db.runCommand({"resync":1})
状态查询
- db.runCommand({"isMaster":1})
#主还是从
在丛库上查询主库地址
在丛库上查询主库地址
- > use local;
- switched to db local
- > db.sources.find();
- { "_id" : ObjectId("4e9105515d704346c8796407"), "host" : "10.0.0.11:27001", "source" : "main", "syncedTo" : { "t" : 1318155992000, "i" : 1 } }
#查看各Collection状态
- db.printCollectionStats();
#查看主从复制状态
- db.printReplicationInfo();
测试主从
在主服务器新建数据库
在主服务器新建数据库
- mongo --port 27001
- >show dbs
- >use elaindb
- >db.blog.save({title:"new article"})
在从服务器上查看同步数据
- mongo --port 27001
#在从库插入数据的操作 会提示 not master
- > use elaindb;
- switched to db elaindb
- > db.blog.find();
- { "_id" : ObjectId("4e9174b48443c8ef12b30c56"), "title" : "new article" }
#查看主从同步信息:
- > db.printReplicationInfo();
- this is a slave, printing slave replication info.
- source: 10.0.0.11:27001
- syncedTo: Sun Oct 09 2011 18:37:12 GMT+0800 (CST)
- = 19 secs ago (0.01hrs)
- >db.printSlaveReplicationInfo();
#此为同步过来的数据,测试成功
附加:
添加及删除源:
启动从节点时可以用--source指定主节点,也可以在shell中配置这个源,
启动一个从,端口为27002
附加:
添加及删除源:
启动从节点时可以用--source指定主节点,也可以在shell中配置这个源,
启动一个从,端口为27002
- /elain/apps/mongodb/bin/mongod --fork --slave --port 27002 --dbpath /elain/data/mongodb/testdb --logpath /elain/logs/mongodb/mongodb.log
登录:
- mongo --port 27002
- [root@md03 ~]# mongo --port 27002
- MongoDB shell version: 2.0.0
- connecting to: 127.0.0.1:27002/test
- > show dbs
- local (empty)
添加到从节点上
- >use local
- >db.sources.insert({"host": "10.0.0.11:27001"});
#查看显示正在同步
- > db.sources.find();
- { "_id" : ObjectId("4e9111e1c29bbd9b9cd31d4e"), "host" : "10.0.0.11:27001", "source" : "main", "syncedTo" : { "t" : 1318156782000, "i" : 246 }, "dbsNextPass" : { "testdb" : true, "testdb1" : true } }
#同步完成后
- > db.sources.find();
- { "_id" : ObjectId("4e9111e1c29bbd9b9cd31d4e"), "host" : "10.0.0.11:27001", "source" : "main", "syncedTo" : { "t" : 1318156782000, "i" : 256 } }
更改源:(假设10.0.0.12也为主库)
- db.sources.insert({"host": "10.0.0.12:27001"});
- db.sources.remove({"host": "10.0.0.11:27001"});
若复制中使用了认证,需在local库中添加repl用户来复制
- >user local;
- > db.addUser("repl", "elain123");
附录一、Slave 顶替 Master
如果主服务器 10.0.0.11 宕机了,
此时需要用 10.0.0.12 机器来顶替 master 服务,
步骤如下:
#停止 10.0.0.12 进程(mongod)
- kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'`
#删除 10.0.0.12 数据目录中的 local.*
- rm -rf /elain/data/mongodb/db/local.*
#以--master 模式启动 10.0.0.12
- /elain/apps/mongodb/bin/mongod --fork --master --oplogSize=4096 --port 27001 --dbpath /elain/data/mongodb/db --logpath /elain/logs/mongodb/mongodb.log
附录二、切换 Master/Slave 角色
切换主库10.0.0.11和从库10.0.0.12的角色
步骤如下:(命令略)
用 fsync 命令暂停 主库 上的写操作,
关闭 从库 上的服务
清空 从库 上的 local.*文件
用-master 选项重启 从库 服务
在 从库 上执行一次写操作,初始化 oplog,获得一个同步起始点
关闭 从库 服务,此时 从库 已经有了新的 local.*文件
关闭 主库 服务,并且用 从库 上新的 local.*文件来代替 主库 上的 local.*文件(建议先压缩再COPY)
用-master 选项重启 从库 服务
在启动slave的选项上加一个-fastsync 选项来重启 主库 服务
切换主库10.0.0.11和从库10.0.0.12的角色
步骤如下:(命令略)
用 fsync 命令暂停 主库 上的写操作,
关闭 从库 上的服务
清空 从库 上的 local.*文件
用-master 选项重启 从库 服务
在 从库 上执行一次写操作,初始化 oplog,获得一个同步起始点
关闭 从库 服务,此时 从库 已经有了新的 local.*文件
关闭 主库 服务,并且用 从库 上新的 local.*文件来代替 主库 上的 local.*文件(建议先压缩再COPY)
用-master 选项重启 从库 服务
在启动slave的选项上加一个-fastsync 选项来重启 主库 服务
***副本集合(Replica Sets)部署
简述:副本集合(Replica Sets),是一个基于主/从复制机制的复制功能,但增加了自动故障转移和恢复特性。一个集群最多可以支持7个服务器,并且任意节点都可以是主节点。所有的写操作都被分发到主节点,而读操作可以在任何节点上进行。
环境:CentOS 5.5 x64
md01 10.0.0.11
md02 10.0.0.12
md03 10.0.0.14
把以上主机名对应IP 添加到hosts文件
方法一:设置优先级
启动各节点:
md01
环境:CentOS 5.5 x64
md01 10.0.0.11
md02 10.0.0.12
md03 10.0.0.14
把以上主机名对应IP 添加到hosts文件
方法一:设置优先级
启动各节点:
md01
- /elain/apps/mongodb/bin/mongod --rest --replSet elain/md01:27017 --master --fork --port 27017 --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
- md02
- /elain/apps/mongodb/bin/mongod --rest --replSet elain/md02:27017 --fork --port 27017 --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
- md03
- /elain/apps/mongodb/bin/mongod --rest --replSet elain/md03:27017 --fork --port 27017 --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
初始化节点:
md01:(登录其中任何一个节点操作皆可)
md01:(登录其中任何一个节点操作皆可)
#priority 是设置优先级的,默认优先级为1,可以是1-1000的数字 注:通常在同一个交换机上,同一个网内,通常使用优先级来设置 副本集就已经足够使用了 方法二:添加仲裁节点(这里设置在md02): 启动各节点: md01
- mongo --port 27017
- > rs.initiate({
- _id : "elain",
- members : [
- {_id : 1, host : "md01:27017", priority:2},
- {_id : 2, host : "md02:27017", priority:3},
- {_id : 3, host : "md03:27017", priority:4},
- ]
- });
- /elain/apps/mongodb/bin/mongod --rest --replSet elain/md01:27017 --fork --port 27017 --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
- md02
- /elain/apps/mongodb/bin/mongod --rest --replSet elain/md02:27017 --fork --port 27017 --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
- md03
- /elain/apps/mongodb/bin/mongod --rest --replSet elain/md03:27017 --fork --port 27017 --dbpath /elain/data/mongodb/db/ --logpath /elain/logs/mongodb/mongodb.log
#启动仲裁节点
在md02上
在md02上
- mkdir /elain/data/mongodb/arb
- /elain/apps/mongodb/bin/mongod --fork --rest --replSet elain --dbpath /elain/data/mongodb/arb --port 27015 --logpath /elain/logs/mongodb/mongodb.log
初始化节点:
md01:(登录其中任何一个节点操作皆可)
md01:(登录其中任何一个节点操作皆可)
#验证
- > rs.initiate({
- _id : "elain",
- members : [
- {_id : 1, host : "md01:27017"},
- {_id : 2, host : "md02:27017"},
- {_id : 3, host : "md03:27017"},
- {_id : 4, host : "md02:27015", "arbiterOnly": true},
- ]
- });
也可浏览:http://10.0.0.11:28017/_replSet 查看状态 #设置从库可读(从库上执行)
- PRIMARY> rs.status()
查看副本集状态
- >rs.slaveOk();
查看当前主库:
- >rs.status()
- >user local;
- >rs.isMaster()
- >db.system.replset.find()
- >db.$cmd.findOne({ismaster:1});