MongoDB安装(mongodb安装失败如何彻底删除)

时光闹钟app开发者,请关注我,后续分享更精彩!

坚持原创,共同进步!

概述

MongoDB是一个可扩展,高性能,开源,面向文档的,基于键/值类型的数据库。非常适合保存大对象及json格式的数据。本文将介绍MongoDB的单机和集群副本安装,记录下来以备后用。希望对有需要的朋友有所帮助和参考。

下载地址

# 历史产品和版本选择
https://www.mongodb.com/docs/legacy/

# 3.6版本文档地址
https://www.mongodb.com/docs/v3.6/

安装方式

  • StandAlone:单机环境,一般开发测试的时候用。
  • Replication:主从结构,一个Primary,多个Secondary,可能会有Arbitry。
- Primary挂掉之后,会选举出一个Secondary作为Primary,与zookeeper类似。
- Arbitry(仲裁节点)上面不存数据,只是为了凑数。选举算法要求节点数必须是奇数个,如果Primary+Secondary不是奇数个,就要用Arbitry凑数。
- 写数据只能在Primary,读数据默认也在Primary,可以配置成从Secondary读,可以选最近的节点。
- 数据在Primary上写成功之后,会将操作记录在oplog中,Secondary将oplog拷贝过去,然后照着操作一遍,就有数据了。
- Primary和Secondary上面的数据保证最终一致性,可以为写操作配置write concern,有几个级别:在Primary上写完就认为写成功;写到oplog后认为写成功;写到一个/多个/某个/某几个Secondary之后认为写成功,等等。
  • Sharding:share nothing的结构,每台机器只存一部分数据。mongod服务器存数据,mongos服务器负责路由读写请求,元数据存在config数据库中。

安装&准备

centos 系统 yum源创建

cat >/etc/yum.repos.d/mongodb-org-3.6.repo<<eof
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/6Server/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
eof

根据具体情况,选择版本安装

# 安装最近版本
# sudo yum install -y mongodb-org

# 安装指定版本
sudo yum install --disablerepo=kubernetes -y mongodb-org-3.6.8 mongodb-org-server-3.6.8 mongodb-org-shell-3.6.8 mongodb-org-mongos-3.6.8 mongodb-org-tools-3.6.8

StandAlone安装配置

默认配置文件/etc/mongod.conf

- storage.dbPath 数据存储目录
- systemLog.path 系统日志目录
- net.bindIp 访问ip绑定,默认127.0.0.1。需要外部机器连接时,需调整成新人的访问源ip,或者测试所有ip放开0.0.0.0

启动MongoDB

sudo systemctl start mongod
# 如果启动报如下报错
# Failed to start mongod.service: Unit mongod.service not found.
# 启动以下命令
# sudo systemctl daemon-reload

查看MongoDB状态

sudo systemctl status mongod
# 如果想要重启系统MongoDB服务自动启动,可设置以下命令
# sudo systemctl enable mongod

停止MongoDB

sudo systemctl stop mongod

重启MongoDB

sudo systemctl restart mongod

连接MongoDB

mongo --host 127.0.0.1:27017

Replication安装

参考文档

官方文档:https://www.mongodb.com/docs/v3.6/administration/replica-set-deployment/

环境

3个节点分别安装MongoDB实例

修改/etc/mongod.conf以下配置项:

#replica set的名字
replication:
   replSetName: "rs0"
   
#client访问ip绑定,开发测试0.0.0.0所有ip   
net:
   bindIp: localhost,<ip address>  

分别在3个节点上启动MongoDB服务

sudo systemctl start mongod
# 如果启动报如下报错
# Failed to start mongod.service: Unit mongod.service not found.
# 启动以下命令
# sudo systemctl daemon-reload

Initiate the replica set(初始化副本集)

任意一个节点控制台登录MongoDB

[[email protected] ~]# mongo
MongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.8
Server has startup warnings:
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten]
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten]
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten]
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten]
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten]
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten] ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.
2022-05-11T09:36:02.035+0800 I CONTROL  [initandlisten]
>

初始化副本集。 注:只需在集群一台机器上执行初始化命令。

rs.initiate( {
   _id : "rs0",
   members: [
      { _id: 0, host: "dev2:27017" },
      { _id: 1, host: "dev3:27017" },
      { _id: 2, host: "dev4:27017" }
   ]
})

执行结果如下:

> rs.initiate( {
...    _id : "rs0",
...    members: [
...       { _id: 0, host: "dev2:27017" },
...       { _id: 1, host: "dev3:27017" },
...       { _id: 2, host: "dev4:27017" }
...    ]
... })
{
        "ok" : 1,
        "operationTime" : Timestamp(1653010782, 1),
        "$clusterTime" : {
                "clusterTime" : Timestamp(1653010782, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        }
}

查看配置结果:控制台执行以下指令

rs.conf()

附录

# 历史产品和版本选择
https://www.mongodb.com/docs/legacy/

# 3.6版本文档地址
https://www.mongodb.com/docs/v3.6/

#官方文档:
https://www.mongodb.com/docs/v3.6/administration/replica-set-deployment/

# 3.6社区版centos安装文档
https://www.mongodb.com/docs/v3.6/tutorial/install-mongodb-on-red-hat/

# MongoDB集群安装
https://www.cnblogs.com/seasonzone/p/3820762.html

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注