linux下安装MongoDB,配置主从服务

4 篇文章 0 订阅
2 篇文章 0 订阅

linux下安装MongoDB,配置主从服务


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

MongoDB 安裝,主从配置

一 MongoDB 安装


[root@zabbix_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
[root@zabbix_server src]# tar xzvf mongodb-linux-x86_64-2.0.0.tgz
[root@zabbix_server src]# mv mongodb-linux-x86_64-2.0.0 /usr/local/mongodb

[root@zabbix_server src]# mkdir /usr/local/mongodb/data
[root@zabbix_server src]# touch /usr/local/mongodb/logs

[root@zabbix_server bin]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork



[root@zabbix_server bin]# ./mongo
MongoDB shell version: 2.0.0
connecting to: test
> use test;
switched to db test
> exit
bye


[root@zabbix_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)时间同步

两台机器做时间同步
[root@zabbix_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 在主库上插入数据
[root@cacti 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 在从上查看数据(已有在主上插入的数据,说明主从成功)
[root@zabbix_server bin]# ./mongo
MongoDB shell version: 2.0.0
connecting to: test
> db.foo.find({"id":123456})
{ "_id" : ObjectId("51c3f4b21399022afd992f39"), "id" : 123456, "name" : "lizonggang" }
>


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 在从库上验证数据
[root@zabbix_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 增,删,改,查

[root@cacti 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" } );
>
>

要搭建MongoDB主从数据库的步骤如下: 1. 首先,在主从数据库服务器上执行启动MongoDB数据库的命令。可以同时在主从数据库上执行以下命令: ``` mongod --replSet pzz ``` 2. 等待MongoDB数据库启动后,登录到主库上,并执行以下命令来检查复制集的状态: ``` rs.status() ``` 这将显示复制集的状态信息,包括主库和从库的状态,连接状态等。 3. 创建MongoDB配置文件,该文件将用于在MongoDB启动时按照配置文件的设置来启动。在主库上创建名为`mongod.conf`的配置文件,并将以下内容写入该文件中: ``` bind_ip=0.0.0.0 replSet=pzz ``` 其中,`bind_ip`设置为`0.0.0.0`表示允许来自任意IP地址的连接,`replSet`设置为`pzz`表示复制集的名称为`pzz`。 4. 在主库和从库上分别启动MongoDB数据库,并指定配置文件的路径: ``` mongod --config /usr/local/mongodb/mongod.conf ``` 这将根据配置文件的设置启动MongoDB数据库,并将其加入到复制集中。 5. 在主库上初始化复制集。登录到主库上,执行以下命令: ``` rs.initiate() ``` 这将初始化复制集,并将主库的配置信息与其他从库分享。 6. 将从库添加到复制集中。登录到从库上,执行以下命令: ``` rs.add("192.168.0.7:27017") ``` 这将将从库添加到复制集中,其IP地址为`192.168.0.7`,端口为`27017`。 7. 现在,你已经成功搭建了MongoDB主从数据库。可以使用`rs.status()`命令来检查复制集的状态,并确保主从同步正常工作。 请注意,以上步骤中的IP地址和端口号应根据你的实际情况进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MongoDB详解(六)——MongoDB主从同步配置](https://blog.csdn.net/weixin_40228200/article/details/125242592)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [详解mongoDB主从复制搭建详细过程](https://download.csdn.net/download/weixin_38674223/13703043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值