创建MongoDB副本集
MongoDB副本集实现故障自动切换至少需要以下配置为:
1.一个主节点,两个从节点
2.一个主节点,一个从节点一个仲裁节点。
如果只有一主一从节点,故障时无法选举出主节点从而实现切换。
安装
在三台服务器上安装MongoDB,同时在主节点数据库上提前创建好有副本集权限的用户。
当然你也可以选择安装在同一台服务器上(除了测试用,不然意义不大)。
安装部分请自行搜索网上资料,在此不再赘述。
配置
修改三个Mongo配置文件,都加入以下配置
第一个参数是指定副本集
第二个参数是使用key进行安全认证
replSet=test_resplset
keyFile=/usr/local/mongodb/conf/mongodb_key
如果配置中有auth=on
项,请删除,否则会造成节点没有权限连接。副本集使用key文件进行安全认证。
生成key
> openssl rand -base64 102 /usr/local/mongodb/conf/mongodb_key
生成key文件
> chmod 600 /usr/local/mongodb/conf/mongodb_key
赋600权限
启动MongoDB
正常启动三个Mongo服务即可
> /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf
然后连接一台你想使其成为主节点的数据库。
创建集群
连接主节点后,输入:
> config = {
"_id" : "test_resplset",
"members" : [
{
"_id" : 0,
"host" : "192.168.1.123:27020",
"priority" : 99
},
{
"_id" : 1,
"host" : "192.168.1.124:27021"
},
{
"_id" : 2,
"host" : "192.168.1.125:27022",
"arbiterOnly" : true
}
] }
arbiterOnly: true
指这个节点为仲裁节点。
这里无论你的三个服务是否在同一个服务器上,都不要使用127.0.0.1
地址,否则稍后连接数据库的时候会连接不上(域名我没测试过,各位可以自己尝试)。
> rs.initiate(config)
初始化集群。这两步只需要在主节点上操作一次即可。
出现{"ok":1}
代表配置成功。
如果此处报没有权限认证的错误,请先使用有副本集权限的用户进行权限认证。
> use admin
> db.auth("user","pwd")
如果提示本节点不是主节