下载安装mongodb
- mkdir -p /apps/mongodb/
- 去官网下载 docs.mongodb.com/manual/inst… 下完后直接解压缩 到 /apps/mongodb/
- mkdir -p /data/mongodb/log /data/mongodb/db
- 在 /apps/mongodb/bin/ 下创建mongodb.conf文件
- 使用yaml格式,示例如下
systemLog:
destination: file
path: "/data/mongodb/log/mdb.log"
logAppend: true
storage:
dbPath: "/data/mongodb/db"
indexBuildRetry: true
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: "1.2.3.4" // 这只是一个示例
port: 27017
maxIncomingConnections: 65536
#snpm:
# master: true
security:
# enabled or disabled
authorization: "enabled"
keyFile: /apps/mongodb/mongodb-linux-x86_64-3.6.12-rc1/bin/mongodb-keyfile
replication:
replSetName: rs_api_manager
数据库配置
刚开始还没有创建用户,需要把security隐藏,replication隐藏
- 在bin目录下启动mongod , ./mongod -f mongodb.conf
- 打开数据库 ./mongo 1.2.3.4:27017 (这个ip只是一个示例)
- use admin
- 创建用户
db.createUser({user: "admin",pwd: "***", roles: [{role:"root”,db:"admin"}]})
root是最高权限,具体可以参照 docs.mongodb.com/manual/refe…
- 然后退出来,重启Mongodb,记住不能Kill -9,需要kill -2,因为它在关闭前还要进行其它操作 。这时候可以打开 security.authorization
- 然后use admin; db.auth("admin", "****"); 然后再创建一个数据库test; use test; 然后再创建这个数据库的用户。
- 按照上面的方法在另外一台机器上创建一个Mongo,接下来就是复制集。记得修改config文件,设置replication,然后重启
- 首先要保证数据库有cluster权限,可以updateUser增加权限,如clusterAdmin 或 clusterManager
- 然后在主机器上或有数据的机器上执行 rs.status()
- 如果没有就
rs.initiate(
{
_id: "myReplSet",
version: 1,
members: [
{ _id: 0, host : "mongodb0.example.net:27017" }
]
}
)
_id 是你的复制集名称 host 是你对应的ip port
- 然后添加新的node上去
rs.add( "mongodbd4.example.net:27017" )
如果报错,可能是防火墙没关闭,iptables stop。
如果还报错 failed with Cache Reader No keys found for HMAC that is valid for time: { ts: Timestamp(1527426193, 1) } with id 这是因为mongodb需要keyfile,在副本集和分片集群上启用认证后,其内部成员之间的访问就必须提供凭证以进行认证。
这时你可以打开config中的 keyfile了,设置它
openssl rand -base64 741 > /srv/mongodb/mongodb-keyfile
chmod 600 mongodb-keyfile
记住:2个机器上需要是同样的keyfile文件。然后重启mongo
- 这时再rs.add就成功了,成功后可以登陆到另一个服务上看是否同步过来
- 另一个不是主结点,需要rs.slaveOk() 主结点有读写权限,从结点只有读的权限