1集群搭建
# 添加用户
groupadd mongo
useradd -g mongo mongo
# 创建目录
mkdir -p /app/mongodb/{db,bin,logs}/
chown -R mongo:mongo /app/mongodb
# 上传安装包并解压
tar zxvf mongodb-linux-x86_64-rhel70-3.6.9.tgz
mv mongodb-linux-x86_64-rhel70-3.6.9/bin/* /app/mongodb/bin/
# 生成key文件
openssl rand -base64 755 > /app/mongodb/keyfile
scp /app/mongodb/keyfile appuser@192.168.72.135:/tmp
scp /app/mongodb/keyfile appuser@192.168.72.136:/tmp
mv /tmp/keyfile /app/mongodb/keyfile
chmod 400 /app/mongodb/keyfile
chown mongo.mongo /app/mongodb/keyfile
# 配置文件
vi /app/mongodb/mongod.conf
[root@mongo-2 app]$ cat mongod.conf
systemLog:
destination: file
logAppend: true
logRotate: rename
path: /app/mongodb/logs/mongod.log
timeStampFormat: iso8601-local
traceAllExceptions: false
verbosity: 0
processManagement:
fork: true
pidFilePath: /app/mongodb/mongod.pid
net:
bindIp: 0.0.0.0
port: 27017
maxIncomingConnections: 500
unixDomainSocket:
enabled: false
operationProfiling:
mode: slowOp
slowOpThresholdMs: 100
security:
authorization: enabled
keyFile: /app/mongodb/keyfile
javascriptEnabled: false
replication:
oplogSizeMB: 102400 #oplog大小根据自己的磁盘大小而定
replSetName: rs0
storage:
dbPath: /app/mongodb/db
directoryPerDB: true
syncPeriodSecs: 60
engine: wiredTiger
journal:
enabled: true
commitIntervalMs: 100
wiredTiger:
engineConfig:
cacheSizeGB: 24 #内存大小依据host内存而定
# 添加环境变量
echo -e '\n\nexport PATH=/app/mongodb/bin:$PATH\n' >> /etc/profile && source /etc/profile
# 启动数据库
方法一:su - mongo
mongod --config /app/mongodb/mongod.conf &
方法二:# cat start_mongo.sh
#!/bin/bash
sudo -u mongo /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf &
# 配置复制集
use admin
config = { "_id":"rs0", "members":[
{"_id":0,"host":"192.168.72.134:27017"},
{"_id":1,"host":"192.168.72.135:27017"},
{"_id":2,"host":"192.168.72.136:27017"} ]}
rs.initiate(config); #初始化集群
# 添加管理帐号
use admin
db.createUser({user:"admin",pwd:"********",roles:["root"]})
mongo --authenticationDatabase admin -uadmin -p******** --host 192.168.72.134 --port 27017
// Todo
db.createUser({user:'testing',pwd:'********', roles: [{ role: "dbOwner", db: "test" }]})
2数据备份
导出开发库
mongodump --host 10.10.10.1 --port 62710 -u root -p******** --authenticationDatabase admin
scp dump.zip testdb@10.10.10.2:/home/testdb/
导入到虚机Mongo
mongorestore --port 27017 --username admin --password ******** --authenticationDatabase=admin ./dump
3初始化从库,重新开始复制
#移除集群
rs.remove("192.168.72.135:27017")
rs.remove("192.168.72.136:27017")
#停从库
kill -9
#删除数据目录
cd /app/mongodb/db
rm -rf *
#开启从库
su - mongo
mongod --config /app/mongodb/mongod.conf &
#在主库上把从库加入集群
rs.add("192.168.72.135:27017")
rs.add("192.168.72.136:27017")
#在从库输入show dbs 命令时报错,是因为从库默认不可读,从库执行
rs.slaveOk()