della0887 发表于 2018-10-27 08:47:20

mongodb主从复制小结

  在生产环境中单台数据库一般不能满足业务稳定性的需求,所以数据库主从复制架构在生产环境中很常见,用于主从复制也是Mongodb最常用的一种架构方式。这种方式非常灵活,可用于备份、故障恢复、读扩展等,从而提高数据处理性能和冗余,常用架构模式是一主一从、一主多从、双主。今天我们主要对MONGODB的主从架构做一小结。
  环境说明:
  系统:CentOS6.4_x64
  主(Master):192.168.2.2
  从(Slave):192.168.2.3
  一、安装与基础配置
  #cd /usr/local
  #tar -zxvfmongodb-linux-x86_64-2.2.6.tgz
  #mvmongodb-linux-x86_64-2.2.6.tgz mongodb
  mongodb配置文件在/usr/local/mongodb/conf
  主从数据库目录都在 /usr/local/mongodb/data
  日志目录都在       /usr/local/mongodb/logs
  #mkdir -p /usr/local/mongodb/conf
  #mkdir -p /usr/local/mongodb/data
  #mkdir -p /usr/local/mongodb/logs
  二、一主一从配置
  关键点:
  1)、在数据库集群中要明确的知道谁是主服务器,主服务器只有一台。
  2)、从服务器需要知道自己的数据源,也就是对于自己来说主服务器是谁。
  3)、master用来确定主服务器,slave来控制从服务器, source确定从服务的数据源。
  192.168.2.2主
  conf下新建一文件mongodb.conf
  添加如下:
  port=27017
  fork=true
  logpath=/usr/local/mongodb/logs/mongodb.log
  logappend=true
  dbpath=/usr/local/mongodb/data
  maxConns=1024
  master=true
  oplogSize=2048
  192.168.2.3从
  port=27017
  fork=true
  logpath=/usr/local/mongodb/logs/mongodb.log
  logappend=true
  dbpath=/usr/local/mongodb/data
  maxConns=1024
  slave=true
  source=192.168.2.2:27017
  autoresync=true
  三、启动MONGODB
  # echo "PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile
  # source /etc/profile
  # mongod -f /usr/local/mongodb/conf/mongod.conf
  先启主再启从
  观察一下主的日志mongodb.log

  可以看到主数据库允许192.168.2.3从59172进行连接
  四、测试主从复制
  主:192.168.2.2
  创建一个数据库test,集合名也是test,插入一个字段AGE:18。然后再到从数据库执行show dbs;查看已经同步过去。
  # mongo
  MongoDB shell version: 2.2.6
  connecting to: test
  Welcome to the MongoDB shell.
  For interactive help, type "help".
  For more comprehensive documentation, see
  http://docs.mongodb.org/
  Questions? Try the support group
  http://groups.google.com/group/mongodb-user
  > show dbs;
  local4.013671875GB
  > use test;
  switched to db test
  >db.test.save({"AGE":18})
  > db.test.find()
  { "_id" : ObjectId("534f592ce7b706845c58740b"), "AGE" : 18 }
  > show dbs
  local4.013671875GB
  test0.203125GB
  从:192.168.2.3
  # mongo
  MongoDB shell version: 2.2.6
  connecting to: test
  Welcome to the MongoDB shell.
  For interactive help, type "help".
  For more comprehensive documentation, see
  http://docs.mongodb.org/
  Questions? Try the support group
  http://groups.google.com/group/mongodb-user
  > show dbs
  local4.013671875GB
  test0.203125GB
  并查看从库上的日志,可以看到同步的行为

  五、思考与补充:
  1、如何指定要同步的库
  默认是同步所有的库,如果需要指定只同步某个库,可以在从库的配置文件中进行指定
  方法:only=test
  意思就是只同步TEST库
  2、从库上还可设置的其他参数
  slavedelay从节点设置主数据库同步数据的延迟(单位是秒)
  fastsync    从节点以主数据库的节点快照为节点启动从数据库
  autoresync如果不同步则自动从新同步数据库
  3、从服务器上查看同步状态
  >db.printReplicationInfo()
  this is a slave, printing slave replication info.
  source:   192.168.2.2:27017
  syncedTo: Thu Apr 17 2014 01:38:02 GMT-0700 (PDT)
  = 10 secs ago (0.04hrs)
  4、备份与恢复
  任何数据库都需要备份与恢复,这个你懂的。
  备份:
  >mongodump -h dbhost -d dbname -o dbdirectory
  -h:MongDB所在服务器地址,例如:192.168.2.2,当然也可以指定端口号:192.168.2.2:27017
  -d:需要备份的数据库实例,例如:test
  -o:备份的数据存放位置,例如:/data/dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。
  恢复:
  >mongorestore -h dbhost -d dbname --directoryperdb dbdirectory
  -h:MongoDB所在服务器地址
  -d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
  --directoryperdb:备份数据所在位置,例如:/data/dump/test,这里为什么要多加一个test,而不是备份时候的dump,自己查看提示吧!
  --drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,谨慎使用!
  5、监控
  可以使用mongodb自带28017端口进行图形化监控


页: [1]
查看完整版本: mongodb主从复制小结