mongodb配置主从(官方已经不建议使用)

官方网站:
http://www.mongodb.org/

关于mongodb的主从,官方已经不建议使用,目前建议使用副本集;

但由于公司现有环境的原因,如果改用副本集,则需要修改数据,受限于现实的种种原因,只能做主从同步配置,所以这里记录一下mongodb的主从;

mongodb的主从要注意的事项:

1.主服务器挂掉,从服务器不会自动取代主服务器。

2.主服务器挂掉后重启,从服务器则会重新同步数据,之前同步过来的数据被初始化。

3.综合以上两点,mongodb要随时做好数据备份,以免造成无法弥补的数据丢失!!!

MongoDB 安裝,主从配置

一 MongoDB 安装

[[email protected]_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz

[[email protected]_server src]# tar xzvf mongodb-linux-x86_64-2.0.0.tgz

[[email protected]_server src]# mv mongodb-linux-x86_64-2.0.0 /usr/local/mongodb

[[email protected]_server src]# mkdir /usr/local/mongodb/data

[[email protected]_server src]# touch /usr/local/mongodb/logs

[[email protected]_server bin]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

[[email protected]_server bin]#./mongo

MongoDB shell version: 2.0.0

connecting to:test

> use test;

switched to db test

> exit

bye

[[email protected]_server bin]# netstat -anlpt | grep mongo

tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 11504/mongod

tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 11504/mongod

注意:
如果报错
-bash: /usr/local/mongodb/bin/mongod: cannot execute binary file
说明你的服务器和mongodb 的版本不对应, 如果服务器是64位,下载x86_64的mongodb ,如果服务器是32位的, 下载i686的mongodb/

二 MongoDB 主从配置

1)实验环境
主:192.168.0.14
从:192.168.0.64

2)时间同步
两台机器做时间同步
[[email protected]_server src]# ntpdate time.windows.com

3)启动服务
master:192.168.0.14
启动命令
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

slave:192.168.0.64
启动命令
/usr/local/mongodb/bin/mongod -slave -source 192.168.0.14:27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

4)测试主从
在主上插入数据
测试1:

测试1:

1 在主库上插入数据

[[email protected] bin]#./mongo

MongoDB shell version: 2.0.0

connecting to:test

> db.foo.save({"id":123456,"name":‘lizonggang‘})

> db.foo.find({"id":123456})

{ "_id": ObjectId("51c3f4b21399022afd992f39"),"id": 123456,"name":"lizonggang" }

>

2 在从上查看数据(已有在主上插入的数据,说明主从成功)

[[email protected]_server bin]#./mongo

MongoDB shell version: 2.0.0

connecting to:test

> db.foo.find({"id":123456})

{ "_id": ObjectId("51c3f4b21399022afd992f39"),"id": 123456,"name":"lizonggang" }

>

测试2:

1 在主库上插入数据

> use elaindb

switched to db elaindb

> db.test.save({title:"This is a test!"})

> db.test.find();

{ "_id": ObjectId("51c3f8f11a90c8da157c7f64"),"title":"This is a test!" }

>

2 在从库上验证数据

[[email protected]_server bin]#./mongo

MongoDB shell version: 2.0.0

connecting to:test

> use elaindb

switched to db elaindb

> db.test.find();

{ "_id": ObjectId("51c3f8f11a90c8da157c7f64"),"title":"This is a test!" }

> db.printReplicationInfo();

this is a slave, printing slave replication info.

source: 192.168.0.14:27017

syncedTo: Fri Jun 21 2013 14:59:10 GMT+0800 (CST)

= 9 secs ago (0hrs)

>

> db.printSlaveReplicationInfo();

source: 192.168.0.14:27017

syncedTo: Fri Jun 21 2013 14:59:30 GMT+0800 (CST)

= 16 secs ago (0hrs)

>

测试3:

在这个状态下,slave 下是不可以插入数据的

> db.test.save({title:"This is slave test!"})

not master

5) 一些查询状态的语句

1)查询库

> show dbs;

elaindb 0.0625GB

local 0.125GB

test 0.0625GB

2)在从库上查询主库的地址

> use local;

switched to db local

> db.sources.find()

{ "_id": ObjectId("51c3f5dd568d10529950b10d"),"host":"192.168.0.14:27017","source":"main","syncedTo": { "t": 1371797300000,"i": 1 } }

>

3)查看主从复制状态

> db.printReplicationInfo();

configured oplog size: 47.6837158203125MB

log length start to end: 1375secs (0.38hrs)

oplog first event time: Fri Jun 21 2013 14:30:35 GMT+0800 (CST)

oplog last event time: Fri Jun 21 2013 14:53:30 GMT+0800 (CST)

now: Fri Jun 21 2013 14:53:32 GMT+0800 (CST)

>

4)查看Collection状态

> db.printCollectionStats();

foo

{

"ns":"test.foo",

"count": 1,

"size": 56,

"avgObjSize": 56,

"storageSize": 4096,

"numExtents": 1,

"nindexes": 1,

"lastExtentSize": 4096,

"paddingFactor": 1,

"flags": 1,

"totalIndexSize": 8176,

"indexSizes": {

"_id_": 8176

},

"ok": 1

}

---

system.indexes

{

"ns":"test.system.indexes",

"count": 1,

"size": 64,

"avgObjSize": 64,

"storageSize": 4096,

"numExtents": 1,

"nindexes": 0,

"lastExtentSize": 4096,

"paddingFactor": 1,

"flags": 0,

"totalIndexSize": 0,

"indexSizes": {

},

"ok": 1

}

---

>

6)应急
如果在应用中主挂掉了怎么办?
这个情况就需要,停止从库, 把从库以主库的启动命令起来就可以了。

1)停掉从库

kill -9 进程号

2)删除locat下文件

rm mongodb/db/locat.*-rf

3)启动从库

/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

7) MongoDB 增,删,改,查

[[email protected] bin]#./mongo

MongoDB shell version: 2.0.0

connecting to:test

> db.test.insert({"Name":"ymind","age": 8 }); #在test数据库里插入数据

>

> db.test.find({"Name":"ymind" } ); #查询数据

{ "_id": ObjectId("51c4187090db4e4751a3cd05"),"Name":"ymind","age": 8 }

> db.test.find({"age": 8} ); #查询数据

{ "_id": ObjectId("51c4187090db4e4751a3cd05"),"Name":"ymind","age": 8 }

>

>

> db.test.update({"Name":"ymind"}, { "$set": { "age":"5" } } ); #修改数据

> db.test.find({"Name":"ymind" } );

{ "Name":"ymind","_id": ObjectId("51c4187090db4e4751a3cd05"),"age":"5" }

>

> db.test.remove({"Name":"ymind" } ); #删除数据

> db.test.find({"Name":"ymind" } );

>

>

时间: 2024-12-29 07:31:17

mongodb配置主从(官方已经不建议使用)的相关文章

mongoDB配置主从同步

官方网站:http://www.mongodb.org/ MongoDB 安裝,主从配置 一 MongoDB 安装 [[email protected]_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz [[email protected]_server src]# tar xzvf mongodb-linux-x86_64-2.0.0.tgz [[email protected]_s

Linux下Mongodb数据库主从同步配置

说明: 有两台已经安装完成的Mongodb数据库服务器,现在需要把一台设置为主库,另一台设置为从库,实现主从同步. 操作系统:CentOS 7.0 64位 MongoDB数据库版本:mongodb-linux-x86_64-2.6.5 准备工作:MongoDB数据库安装 具体操作: 一.配置MongoDB主库 以下操作在MongoDB主库服务器上进行 1.cd  /usr/local/mongodb/ #进入MongoDB安装目录 vi /usr/local/mongodb/mongodb.co

[MongoDB] 安装MongoDB配置Replica Set

url:http://blog.csdn.net/hf81970/article/details/19643639 MongoDB的环境主要包括StandAlone,Replication和Sharding. StandAlone:单机环境,一般开发测试的时候用. Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry. Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似. Arbitry上面不存数据,

mongodb配置主从复制

mongodb配置主从复制比mysql简单多了 1.安装,用配置文件启动 2.修改配置文件 主的配置 [[email protected] mongodb]# cat /etc/mongod.conf port=27017 dbpath=/usr/local/mongodb/data logpath=/usr/local/mongodb/logs logappend=true journal=true fork=true master=true 从的配置 [[email protected] h

window 7 下一台cp 两个mysql 配置主从

环境 : 个人 pc windows7 一台 ; 使用 : 官方下载: mysql-noinstall-5.5.11-win32.zip 1. 解压 成2个 (文件夹) mysql_master (主) mysql_slave (从) 2. 配置文件修改 主服务器配置修改 mysql_master/my-huge.ini 修改名称为 my.ini 修改刚才 my.ini 文件的 [client] port = 3306 [mysqld] server-id = 1 port = 3306 bin

MYSQL配置主从同步

MYSQL配置主从同步 mysql主服务器配置 vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 lower_case_table_names=1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #设置数据库标识 server-id=2 #任何一个事务提交之后就立即写入到磁盘中的二进制文件 syn

mysql配置主从数据库

1.目的 1.1 实现数据备份 1.2 项目访问时可以实现读写分离,提高访问和操作数据的速度<读写分离好处> 2.背景 这次的主从配置主要实现主库数据的改变可以实现同步到从库中: 此次试验的主库为liunx<ubuntu4.8.2> 下mysql 5.6.19,从库为windows10 下mysql 5.6.24:  3.准备知识 3.1 在liunx下mysql的配置文件为: /etc/mysql/my.conf 3.2 在windows下mysql的配置文件为: mysqlpa

ubuntu10.04 bind9 配置主从区域数据传送问题

今天在ubuntu10.04上配置dns主从区域数据传送时 从服务器学习不到主服务器的配置,查看/var/log/messages时显示为 Aug  1 06:42:45 ubuntu kernel: [ 5397.159601] type=1503 audit(1406900565.661:37):  operation="mknod" pid=2351 parent=1 profile="/usr/sbin/named" requested_mask="

C# Redis学习系列三:Redis配置主从

Redis配置主从 主IP :端口      192.168.0.103 6666 从IP:端口       192.168.0.108 3333 配置从库 (1)安装服务: redis-server --service-install --service-name redisService6666 --port 6666 (2)启动进程: redis-server --service-start --service-name redisService6666 (3)连接redis:redis-