mongodb 的安装以及在多台服务器之间建立副本集 在虚拟机上安装多个linux实现 配合Java代码实现读写分离

91 阅读1分钟

\

1. 下载安装包 :  https://www.mongodb.com/download-center#community

2. 在 /usr/local 中解压 : tar -xzvf mongodb-*****.tgz

3.  重命名解压包 : mv mongodb-**** mongodb

4.  创建目录 : mkdir -p /data/db

5. 创建文件 : touch /data/logs/mongod.log

6. 创建配置文件 : vi /etc/mongod.conf :

   端口号 : port=27017

   数据路径 : dbpath=/data/db

   日志路径 : logpath=/data/logs/mongod.log

   后台运行 : fork=true

   日志输出方式 : logappend=true

   #开启认证 : auth=true

   journal=true

   bind_ip=192.168.249.128 // 通过ifconfig查到的IP值

7. 环境变量 : vi /etc/profile : export PATH=/usr/local/mongodb/bin:$PATH

8. 在每个服务器上都执行,创建副本集成员 : mongod --replSet spock -f /etc/mongod.conf --fork //"spock"为指定的副本       集标识

9. 启动 : mongo --nodb

10.  config = {"_id" : "spock" , "members" : [{"_id" : 0 , "host" : "192.168.249.128:27017"},{"_id" : 1 , "host" : "192.168.249.129:27017"},{"_id" : 2 , "host" : "192.168.249.130:27017"}]}

11. db = (new Mongo("192.168.249.128")).getDB("test") // 哪个设为主节点就选哪个的ip\

12. rs.initiate(config)

13. 可以测是一下在主节点中写数据然后到备份节点中去读取 :

     db.coll.insert({"name" : "my name is hbw"})

      con = new Mongo("192.168.249.129:27017")

      ddb = con.getDB("test")

      con.setSlaveOk()

      ddb.coll.find()

14. 

  1. public static void main(String[] args)  {  
  2.         try {   
  3.             List<ServerAddress> addresses = new ArrayList<ServerAddress>();    
  4.             ServerAddress address1 = new ServerAddress("127.0.0.1" , 1111);   
  5.             ServerAddress address2 = new ServerAddress("127.0.0.1" , 2222);   
  6.             ServerAddress address3 = new ServerAddress("127.0.0.1" , 3333);   
  7.             addresses.add(address1);    
  8.             addresses.add(address2);   
  9.             addresses.add(address3);   
  10.             MongoClient client = new MongoClient(addresses);   
  11.             DB db = client.getDB( "test");   
  12.             DBCollection coll = db.getCollection( "test");   
  13.               
  14.             BasicDBObject object = new BasicDBObject();    
  15.             object.append( "key1", "value1" );   
  16.             ReadPreference preference = ReadPreference.secondary();    // 设置从备份节点读取 实现读写分离
  17.             DBObject dbObject = coll.findOne(object, null , preference);    
  18.             System. out .println(dbObject);    
  19.         } catch (Exception e) {   
  20.             e.printStackTrace();    
  21.         }   
  22.     }