Linux MongoDB备份容灾,复制集合分片集群的搭建
·
MongoDB备份容灾,复制集合分片集群的搭建
目录
一、任务
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()


更多推荐




所有评论(0)