MongoDB备份容灾,复制集合分片集群的搭建

目录

MongoDB备份容灾,复制集合分片集群的搭建

一、任务

二、准备 MongoDB 安装包

三、集群搭建

1、创建数据目录(主节点、从节点、仲裁节点)

2、编辑配置文件

1)主节点配置 (mongo_27117.conf)

2)从节点1配置 (mongo_27118.conf)

3)从节点2配置 (mongo_27119.conf)

4)仲裁节点配置 (mongo_27120.conf)

3、启动 MongoDB 服务

1)启动主节点 启动从节点1 启动从节点2 启动仲裁节点

4、初始化复制集

1)连接到主节点

2)初始化复制集

3)检查复制集状态

5、测试主从切换

1)模拟主节点宕机

2)验证从节点升主节点

3)检查角色

6、验证数据同步

7、分片集群搭建步骤

1)创建目录结构

2)启动配置服务器(以此类推)

3)启动分片集群(每个分片为3节点复制集)

4)启动路由节点(mongos)

5)添加分片到集群

6)验证分片状态


一、任务

1.3个节点搭建复制集的集群

2.10个节点搭建分片集群,其中config server 3个节点,2个shrd集群,1个router server节点

二、准备 MongoDB 安装包

https://www.123865.com/s/u04xvd-vuo5H?pwd=2251#https://www.123865.com/s/u04xvd-vuo5H?pwd=2251#

三、集群搭建

1、创建数据目录(主节点、从节点、仲裁节点)

mkdir -p /root/mongodata/{27117,27118,27119}

创建配置文件目录

创建日志目录

创建进程PID文件目录

cd /root
mkdir -p /root/mongodata/{27117,27118,27119}
mkdir -p /root/mongoconfig
mkdir -p /root/mongolog
mkdir -p /root/mongopid

2、编辑配置文件

在 /root/mongoconfig/ 下创建三个配置文件:

1)主节点配置 (mongo_27117.conf)
storage:
  dbPath: /root/mongodata/27117
  journal:
    enabled:true
systemLog:
  destination : file
  path: /root/mongolog/27117.log
  logAppend: true
processManagement:
  fork: true
  pidFilePath:/root/mongopid/27117.pid
net:
  bindIp:0.0.0.0
  port:27117
replication:
  replSetName:rs0

2)从节点1配置 (mongo_27118.conf)
storage:
  dbPath: /root/mongodata/27118
systemLog:
  destination : file
  path: /root/mongolog/27118.log
  logAppend: true
processManagement:
  fork: true
  pidFilePath:/root/mongopid/27118.pid
net:
  port:27118
replication:
  replSetName:rs0

3)从节点2配置 (mongo_27119.conf)
storage:
  dbPath: /root/mongodata/27119
systemLog:
  destination : file
  path: /root/mongolog/27119.log
  logAppend: true
processManagement:
  fork: true
  pidFilePath:/root/mongopid/27119.pid
net:
  port:27119
replication:
  replSetName:rs0

4)仲裁节点配置 (mongo_27120.conf)
storage:
  dbPath: /root/mongodata/27120
systemLog:
  destination : file
  path: /root/mongolog/27120.log
  logAppend: true
processManagement:
  fork: true
  pidFilePath:/root/mongopid/27120.pid
net:
  port:27120
replication:
  replSetName:rs0

3、启动 MongoDB 服务

1)启动主节点 启动从节点1 启动从节点2 启动仲裁节点

验证服务是否运行:

mongod -f /root/mongoconfig/mongo_27117.conf   #主
mongod -f /root/mongoconfig/mongo_27118.conf   #从1
mongod -f /root/mongoconfig/mongo_27119.conf   #从2
mongod -f /root/mongoconfig/mongo_27120.conf   #仲

4、初始化复制集

1)连接到主节点
mongosh --port 27117

2)初始化复制集
rs.initiate({
  _id:"rs0",
  members:[
    {_id:0,host:"localhost:27117",priority:2},
    {_id:1,host:"localhost:27118",priority:1},
    {_id:2,host:"localhost:27119",priority:1},
    {_id:3,host:"localhost:27120",arbiteronly: true}
  ]
})

3)检查复制集状态
rs.status()

5、测试主从切换

1)模拟主节点宕机
kill ¥(cat /root/mongopid/27117.pid)

2)验证从节点升主节点

连接到从节点1(27118)

mongosh --port 27118

3)检查角色
rs.status()

恢复原主节点

mongod -f/root/mongoconfig/mongo_27117.conf

重新检查状态

rs.status()

6、验证数据同步

use test
db.demo.insert({name:"failover_test"})

在新主节点(27118)插入数据

db.demo.insert({name: "failover_test"})

在原主节点(27117)查询数据

db.demo.find()

7、分片集群搭建步骤

1)创建目录结构
mkdir -p /data/configdb/{26050, 26051,26052}
mkdir -p /data/shard1/{27011,27012,27013}
mkdir -p /data/shard2/{27111, 27112,27113}
mkdir -p /data/mongos/log

2)启动配置服务器(以此类推)

节点1(26050)

# 26050节点
mongod --configsvr --replSet configReplSet --dbpath /data/configdb/26050 --port 26050 --logpath /data/configdb/26050.log --fork
# 26051节点
mongod --configsvr --replSet configReplSet --dbpath /data/configdb/26051 --port 26051 --logpath /data/configdb/26051.log --fork
# 26052节点
mongod --configsvr --replSet configReplSet --dbpath /data/configdb/26052 --port 26052 --logpath /data/configdb/26052.log --fork

配置服务器复制集初始化

rs.initiate(
{
  _id:"configReplSet",
  configsvr: true,
  members: [
    {_id:0,host:"localhost:26050"},
    {_id:1,host:"localhost:26051"},
    {_id:2,host:"localhost:26052"}
  ]
})

3)启动分片集群(每个分片为3节点复制集)
# 27011节点
mongod --shardsvr --replSet shard1 --dbpath /data/shard1/27011 --port 27011 --logpath /data/shard1/27011.log --fork
# 27012节点
mongod --shardsvr --replSet shard1 --dbpath /data/shard1/27012 --port 27012 --logpath /data/shard1/27012.log --fork
# 27013节点
mongod --shardsvr --replSet shard1 --dbpath /data/shard1/27013 --port 27013 --logpath /data/shard1/27013.log --fork

查看状态以及初始化执行

mongosh --port 27011
rs.initiate({
  _id:"shard1",
  members:[
    {_id:0,host:"Localhost:27011"},
    {_id:1,host:"Localhost:27012"},
    {_id:2,host:"Localhost:27013"}
  ]
})

4)启动路由节点(mongos)
mongos --configdb configReplSet/localhost:26050, localhost:26051, localhost:26052 --port 20000 --logpath /data/mongos/mongos.log --fork

5)添加分片到集群
mongosh --port 20000

// 添加shard1分片
sh.addShard("shard1/localhost:27011,localhost:27012,localhost:27013")

// 添加shard2分片
sh.addShard("shard2/localhost:27111,localhost:27112,localhost:27113")

数据库分片开启命令

sh.enableSharding("testdb")

集合分片命令

sh.shardCollection("testdb.users", {_id: "hashed"})

6)验证分片状态
use admin
sh.status()
db.users.status()

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐