mongodb单台服务器
数据会有丢失的风险
单台服务器无法做高可用性
mongodb副本集能够预防数据丢失,多台mongodb数据一致
mongodb副本集能够在有问题的时候自动切换
实战说明
使用两台服务器实战mongodb副本集,生产环境中建议至少三台服务器
两台服务器的ip为:192.168.237.128、192.168.237.129
集群搭建实战192.168.237.128:27017 192.168.237.129:27018 192.168.237.128:27019
mongodb副本集配置文件/data/mongodb/27017/mongodb.conf
systemLog: destination: file logAppend: true path: /data/mongodb/27017/mongodb.log storage: dbPath: /data/mongodb/27017/ journal: enabled: true processManagement: fork: true net: port: 27017 bindIp: 0.0.0.0 replication: replSetName: shijiange # 同一个副本集,名字一样
启动三个mongodb服务器,需要对应更改端口、数据目录、日志路径
/usr/local/mongodb/bin/mongod -f /data/mongodb-cluster/27017/mongodb.conf
/usr/local/mongodb/bin/mongod -f /data/mongodb-cluster/27018/mongodb.conf
/usr/local/mongodb/bin/mongod -f /data/mongodb-cluster/27019/mongodb.conf
mongodb副本集的初始化及其状态查看
#id为副本集的名称
config = { _id:"shijiange", members:[
{_id:0,host:"192.168.237.128:27017"},
{_id:1,host:"192.168.237.129:27018"},
{_id:2,host:"192.168.237.128:27019"}]
}
use admin
rs.initiate( config ) #副本集初始化,需要一定时间
rs.status() #副本集状态,一个primary,其它SECONDARY。primary是主,只有primary能写入
测试副本集的数据同步
/usr/local/mongodb/bin/mongo
use shijiange
db.myuser.insert( {userid: 1} )
rs.slaveOk() #SECONDARY需要声明是slave才能查看数据
从库无法插入数据
查看slave的延时情况
rs.printSlaveReplicationInfo()
优化参数要保持一致