MongoDB集群搭建及运维

MongoDB复制集

Posted by BY cslingjun on April 1, 2019 本文总阅读量

MongoDB集群搭建及运维

操作系统

  • CentOS release 6.10

MongoDB版本

  • MongoDB v3.6.10

安装MongoDB

  • 创建 .repo 文件
    vim /etc/yum.repos.d/mongodb-enterprise.repo
    [mongodb-enterprise]
    name=MongoDB Enterprise Repository
    baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/3.6/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
    
  • Yum安装
    sudo yum install -y mongodb-enterprise
    

配置文件:

vim /etc/mongod.conf
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo
net:
  port: 27017
  bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.
security:
  #authorization: enabled
  keyFile: /var/lib/mongo/mongodb.key
replication:
  replSetName: GzhcReplSet

生成认证文件keyFile:

openssl rand -base64 1024 > /var/lib/mongo/mongodb.key
chmod 600 /var/lib/mongo/mongodb.key

启动,查看服务端口:

mongod -f /etc/mongod.conf
netstat -tunlp | grep mongo

集群初始化查看:

mongo -uroot -p
rs.reconfig = {"_id": "GzhcReplSet", "members": [{"_id": 0, "host": "192.168.159.41:27017","priority": 10},{"_id": 1, "host": "192.168.159.42:27017","priority": 8},{"_id": 2, "host":"192.168.159.43:27017","priority": 6}]}
rs.initiate(config); 

移除节点:

rs.remove("192.168.159.43:27017")
#查看节点状态
rs.status()

添加节点:

rs.add("192.168.159.43:27017")
#查看节点状态
rs.status()

备份:

mongoexport -umytest -pMysql_789 -d testdb -c test -o /tmp/backup.txt

还原:

mongoimport -umytest -pMysql_789  -dtestdb -c test /tmp/backup.txt

注意:

  • 各节点部署好后,配置文件先不要开启认证方式,MongoDB默认是不用密码认证的(mongo直接登录),登进MongoDB Shell后进行初始化后,再创建root用户及admin用户,这时会同步到另外2台从库。然后开启认证重启集群。
  • 单节点部署时,认证方式开启authorization就行,MongDB复制集的时候就必须采用keyFile认证方式。
  • mongd.conf中的bindIp限制远程连接
  • 安装版本选择,选择偶数版3.6,不要选择奇数版3.5,奇数版为开发测试版,不稳定。生产上慎选
  • 添加移除节点的时候也是可以添加仲裁者的。rs.addArb(“ip:port”)
  • 所有从库是不允许读写的,如果需要读操作,需执行命令 rs.slaveOk().