读书人

mongodb(四)Latest Version on MAC an

发布时间: 2013-11-02 19:41:10 作者: rapoo

mongodb(4)Latest Version on MAC and Setup Replication

mongodb(4)Latest Version on MAC and Setup Replication

1. Installation on MAC
Get the latest file from here:?http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-2.4.7.tgz
unzip the file and find a right place
>cd /Users/carl/tool/mongodb-osx-x86_64-2.4.7?
>sudo ln -s /Users/carl/tool/mongodb-osx-x86_64-2.4.7 /opt/mongodb-2.4.7
>sudo ln -s /opt/mongodb-2.4.7 /opt/mongodb

By default, mongo writes data to the /data/db directory.
>sudo mkdir -p /data/db
>sudo chown carl /data/db

If this path is not what you want, you can use --dbpath option to mongod?
>sudo vi ~/.profile
export PATH=/opt/mongodb/bin:$PATH
>. ~/.profile?

>vi mongodb.conf
fork = true ?//daemon bind_ip = 127.0.0.1 port = 27017 quiet = true ? ? ? ? dbpath = /data/db/mongodb logpath = /var/log/mongodb/mongod.log logappend = true journal = true

Start the Server
>mongod -f mongodb.conf

>ps -ef | grep mongo

Try with Client to connect to it.
>mongo
mongo>db.test.save({a:1,b:2})
mongo>db.test.find()
{ "_id" : ObjectId("52684c242cb20b7935c6537d"), "a" : 1, "b" : 2 }

Some Grammar of SQL
SQL Statement ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Mongo Statement?
create table users ? ? ? ? ? ? ? ? ? ? ? ? ? ? db.createCollection("users");?

insert into users values ...???????????????? db.users.insert({a:3,b:5})?
select a,b from users??????????????????????? db.users.find({},{a:1,b:1})?

select * from users ? ? ? ? ? ? ? ? ? ? ? ? ? ?db.users.find()?
select a,b from users where age =33??? db.users.find({age:33},{a:1,b:1})?
select * from users where age=33 order by name? db.users.find({age:33}).sort({name:1})?
select * from users where name like "%sillycat%"??? db.users.find({name:/sillycat/})?

select * from users where name like "sillycat%"?? db.users.find({name:/^sillycat/})?

select * from users where age>33 and age <=40????? db.users.find({'age':{&gt:33,$lte:40}})?

select * from users order by name desc???? db.users.find().sort({name:-1})?

select * from users where a=1 and b='q'??? db.users.find({a:1,b:'q'})?

select * from users limit 10 skip 20???? db.users.find().limit(10).skip(20)?
select * from users where a=1 or b=2???? db.users.find({$or : [ {a:1},{b:2} ] } )?
select * from users limit 1????????? db.users.findOne()?

select count() from users???????????? db.users.count()?
select count() from users where age > 30??? db.users.find({age:{'$gt':30}}).count()?

update users set a=1 where b='q'??? db.users.update({b:'q'},{$set:{a:1}},false,true)?

delete from users where z = 'abc'????? db.users.remove({z:'abc'})?

Some Useful Command:
>help;
>use databaseName;
>db;
>show dbs;

2. Replication?
client application —— Primary Secondary Secondary ——— Arbiter

Primary — receives all write operations, and put the operations on the primary’s oplog.
Secondaries — ?replications, may be non-voting or priority 0.
Arbiter — Arbiters allow replica sets to have an uneven number of members. — Do not run an arbiter on systems that also host the primary or the secondary members
Priority 0 Replica Set Members — can not become primary.
Hidden Replica Set Members — can not become primary, do backup and log.
Delayed Replica Set Members — rolling back

A replica set can have up to 12 members. Only 7 members can vote at a time.

Replica Set Deployment Architectures
Use Journaling to protect Against Power Failures.

3. Deploy a Replica Set with 2 secondaries and 1 primary
I plan to deploy 1 primary and 2 secondaries on my local machine.
The configuration and commands are follow:
mongodb-master.conf
fork = true bind_ip = 127.0.0.1 port = 27017 quiet = true dbpath = /data/db/mongodb-master logpath = /var/log/mongodb/mongod-master.log logappend = true journal = true
replSet = sillycat

mongo-client1.conf
fork = true bind_ip = 127.0.0.1 port = 27018 quiet = true dbpath = /data/db/mongodb-client1 logpath = /var/log/mongodb/mongod-cient1.log logappend = true journal = true
replSet = sillycat

mongo-client2.conf
fork = true bind_ip = 127.0.0.1 port = 27019 quiet = true dbpath = /data/db/mongodb-client2 logpath = /var/log/mongodb/mongod-client2.log logappend = true journal = true
replSet = sillycat

>mongod -f mongodb-master.conf
>mongod -f mongodb-client1.conf
>mongod -f mongodb-client2.conf

>mongo —host 127.0.0.1 —port 27017
>rs.in
Error Message:
couldn't initiate : can't find self in the replset config

Solution:
I configure the name of the computer?sparkworker1.local:27017?to /etc/hosts to fix this problem.
{ "info2" : "no configuration explicitly specified -- making one", "me" : "sparkworker1.local:27017", "info" : "Config now saved locally.? Should come online in about a minute.", "ok" : 1
}

>rs.conf()
{ "_id" : "sillycat", "version" : 1, "members" : [ { "_id" : 0, "host" : "sparkworker1.local:27017" } ]
}

Some details are here:
rs.add()?http://docs.mongodb.org/manual/reference/method/rs.add/#rs.add? ?rs.add(host, arbiterOnly)?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?eg. ?rs.add(‘127.0.0.1:27018')?
rs.initiate()?http://docs.mongodb.org/manual/reference/method/rs.initiate/#rs.initiate? ?rs.initiate(config)
rs.conf()?http://docs.mongodb.org/manual/reference/method/rs.conf/#rs.conf? ? ??
rs.reconfig()?http://docs.mongodb.org/manual/reference/method/rs.reconfig/#rs.reconfig? ? rs.reconfig(config, { force: true })?

>rs.add("sparkworker1.local:27018")
>rs.add("sparkworker1.local:27019")

>rs.conf()
{ "_id" : "sillycat", "version" : 3, "members" : [ { "_id" : 0, "host" : "sparkworker1.local:27017" }, { "_id" : 1, "host" : "sparkworker1.local:27018" }, { "_id" : 2, "host" : "sparkworker1.local:27019" } ]
}

>rs.status()

Save some data in primary with these commands
>db.users.insert({name:"Carl", age:31});

Find this data in Primary
>db.users.find();
{ "_id" : ObjectId("526abebcb32108edb1b0d203"), "name" : "Carl", "age" : 31 }

Check the data on Secondaries
>mongo --host 127.0.0.1 --port 27018
>db.users.find();

Error Message
error: { "$err" : "not master and slaveOk=false", "code" : 13435 }

Solution:
Execute on the Secondary
>rs.slaveOk();?
>?db.users.find();
{ "_id" : ObjectId("526abebcb32108edb1b0d203"), "name" : "Carl", "age" : 31 }

Once I kill the master 1, the secondary will become the PRIMARY. After I restart the old master 1, it will join the net as secondary.

4. Clients
come soon...
http://docs.mongodb.org/ecosystem/drivers/scala/

References:
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/
http://docs.mongodb.org/manual/administration/configuration/

http://docs.mongodb.org/manual/reference/replica-configuration/#replica-set-reconfiguration-usage
http://docs.mongodb.org/manual/reference/sql-comparison/
http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

http://blog.csdn.net/luonanqin/article/details/8497860

Old Blogs
http://sillycat.iteye.com/blog/1547291
http://sillycat.iteye.com/blog/1547292
http://sillycat.iteye.com/blog/1547294

http://sillycat.iteye.com/blog/603890

读书人网 >其他数据库

热点推荐