介绍信息
————————————————————
官方文档 Sharding Introduction:
http://www.mongodb.org/display/DOCS/Sharding+Introduction
分担读写负载
三台服务器,如果将所有数据分为三片,每一台作为其中一片数据的写入点,其他两个节点进行拷贝,使读写压力在'一定条件'下分布在三台机器。
自动故障转移
在单点损坏条件下,可以立刻将主服务器转换到随机另外一台从属服务器的分片上。不过之前未处理的请求将会被全部抛弃。
灵活配置分片
不设置表分片,表就不会进行分片,会完整保存在该库所在的主Shard中。可以在配置某数据库信息启用分片之后,单独设定某个表的信息在其他分片中分散存储。并设定尽量有规律的分片条件。
动态添加删除
可以在压力接近瓶颈的时候动态的进行分片添加,并设置该服务器为某分片写入点,分散IO压力,也可以在服务器出现异常时,进行分片数据的迁移和分片卸载。在数据库集群运作中时,添加分片,数据自动流入此分片。
在数据库集群运作中时,删除分片,系统立即设置此分片状态 "draining" : true ,之后慢慢将此分片数据转移到其他分片。
实时查看状态
可以在数据库信息设置和信息的CRUD操作时,实时进行数据库状态、数据分片信息、数据状态的监控。
mongos 集群安装部署文档
启动分片数据库
————————————————————
分别在3台机器,启动3个分片。
./mongod --shardsvr --replSet shard1 --port 30001 --dbpath /home/data/mongodata/shard01 --oplogSize 100 --logpath /home/data/mongodata/mongoshard1.log --rest --fork
./mongod --shardsvr --replSet shard2 --port 30002 --dbpath /home/data/mongodata/shard02 --oplogSize 100 --logpath /home/data/mongodata/mongoshard2.log --rest --fork
./mongod --shardsvr --replSet shard3 --port 30003 --dbpath /home/data/mongodata/shard03 --oplogSize 100 --logpath /home/data/mongodata/mongoshard3.log --rest --fork
配置副本集并加载
————————————————————
任意服务器连入30001
config = {_id: 'shard1', members: [
{_id: 0, host: '192.168.1.123:30001'},
{_id: 1, host: '192.168.1.124:30001'},
{_id: 2, host: '192.168.1.125:30001'}]
}
rs.initiate(config);
任意服务器连入30002
config = {_id: 'shard2', members: [
{_id: 0, host: '192.168.1.123:30002'},
{_id: 1, host: '192.168.1.124:30002'},
{_id: 2, host: '192.168.1.125:30002'}]
}
rs.initiate(config);
任意服务器连入30003
config = {_id: 'shard3', members: [
{_id: 0, host: '192.168.1.123:30003'},
{_id: 1, host: '192.168.1.124:30003'},
{_id: 2, host: '192.168.1.125:30003'}]
}
rs.initiate(config);
查看状态
rs.status()
启动配置服务器
————————————————————
分别在三台机器,都启动3个配置服务。
./mongod --configsvr --port 20000 --dbpath /home/data/mongodata/config --logpath /home/data/mongodata/configconfig.log --logappend --pidfilepath /home/data/mongodata/config/config.pid --rest --fork
启动路由
————————————————————
在其中一台或者多台机器,启动mongos路由,作为集群访问点。
./mongos --configdb 192.168.1.123:20000,192.168.1.124:20000,192.168.1.125:20000 --port 30000 --chunkSize 100 --logpath /data/mongodata/mongos.log --logappend --pidfilepath /data/mongodata/mongos.pid --fork
添加分片
————————————————————
3个分片已经设置好,在mongos控制台的admin数据库下,执行下面的代码,添加分片。
db.runCommand({addshard:"shard1/192.168.1.123:30001,192.168.1.124:30001,192.168.1.125:30001",name:"s1",maxsize:20480});
db.runCommand({addshard:"shard2/192.168.1.123:30002,192.168.1.124:30002,192.168.1.125:30002",name:"s2",maxsize:20480});
db.runCommand({addshard:"shard3/192.168.1.123:30003,192.168.1.124:30003,192.168.1.125:30003",name:"s3",maxsize:20480});
查看列表,如果是3个分片。就OK了。
db.runCommand({listshards:1})
以上mongos部署成功。
其他命令
————————————————————
允许数据库中的内容被分片
db.runCommand({enablesharding:"test"})
设定表分片与分片规则,作为分片规则的key,必须为该表索引。
db.runCommand({shardcollection:"teset.user",key:{id:1, email:1, regtime:1}})
查看数据库状态
db.stats()
查看表状态
db.tableName.stats()
查看所有分片信息状态
db.printShardingStatus();
删除分片,删除分片命令执行后,mongos将不再写入该分片数据,同时会将数据迁移到其他分片,这个过程需要一段时间,此时查看db.printShardingStatus();,该分片状态为"draining" : true。
但是由于bug,会一直处于此状态下。需要在人工确定已无数据在此分片后,在mongos中进入config数据库执行db.shards.remove({draining:true}),删除掉该分片。
db.runCommand({removeshard : "shard1/192.168.1.123:30001,192.168.1.124:30001,192.168.1.125:30001"});
使Primary降为Secondary,每一个分片,都是一组副本集,1主2从,设置时自动选举,如果不符合写入压力分散的需求,可以将该主库降级,2个从属会随机选择一个重新为主。
rs.stepDown()
手动移动碎片
http://www.mongodb.org/display/DOCS/Moving+Chunks
分享到:
相关推荐
压缩包中的"Mangos_技术资料2.exe"可能是包含了安装指南、开发者文档、API参考、常见问题解答等内容的电子书或文档集合。这些资料对于理解Mangos的工作原理、安装与配置、以及进行二次开发至关重要。 4. **源代码...
**MaNGOS安装与配置** 安装MaNGOS需要一些基本的Linux技能,包括熟悉shell命令、数据库管理和网络服务配置。首先,用户需要解压下载的MaNGOS-0.14.tar.gz文件,然后根据提供的文档和指南进行编译和安装。这通常涉及...
安装和运行Mangos 0.13 9506涉及到多个步骤。首先,你需要一个支持Linux操作系统的服务器或者虚拟机。然后,解压下载的压缩包,配置编译环境,包括安装必要的库和依赖,如MySQL数据库、Boost库、OpenSSL等。接着,...
压缩包中的“mangos-mangos-81f3d4b”可能是mangos源代码仓库的一个特定提交版本,这通常包含了项目的源代码、构建脚本以及可能的文档。用户需要具备一定的C++编程和Linux环境操作经验,才能成功编译和运行这个项目...
#### 四、mangos的安装与配置 为了搭建一个基于mangos的《魔兽世界》服务器,需要完成一系列的安装和配置工作。以下是基本步骤: **1. 环境准备** - 操作系统:推荐使用Windows XP,但也有用户在Linux和macOS上成功...
《mangos分析笔记》是关于开源游戏服务器端软件Mangos的一系列研究记录,旨在与读者分享作者在深入理解Mangos过程中所积累的知识和经验。Mangos是一款用于模拟暴雪公司大型多人在线角色扮演游戏(MMORPG)《魔兽世界...
魔兽世界MANGOS数据库分析
mangos不是一个魔兽私服模拟器,它是一个开源的自由软件项目,是用c++和C#编程语言,实现的一个支持大型多人在线角色扮演游戏服务器的程序框架,在这个框架下,它理论上应该支持任何客户端的网络游戏,由于现在很多...
一旦成功安装,用户可以启动 mangos 服务器,然后使用魔兽世界客户端连接到本地服务器。运行过程中,需要监控服务器日志,排查错误,进行性能优化。此外,mangos 还支持多服务器架构,可以模拟不同的游戏区域,如PvP...
1. 创建或连接到MySQL数据库,按照Mangos的文档设置相应的表结构。 2. 使用`realmd`、`auth`和`world`数据库脚本初始化数据库。 3. 配置Mangos的配置文件,如`realmlist.conf`、`config.conf`等,指定数据库连接信息...
为了成功部署并运行MangOS服务器,开发者需要对这些文件进行解压,然后按照官方文档或社区指南进行编译和安装。过程中可能涉及到MySQL数据库的设置、地图数据导入、配置文件的修改等一系列步骤。 在搭建MangOS...
《mangos开源魔兽世界服务器代码详解》 在IT领域,尤其是游戏开发和服务器编程方面,mangos项目是一个不容忽视的重要存在。mangos是一个开源的、基于Linux的魔兽世界服务器实现,它允许开发者和爱好者研究、学习...
### 从零开始编译MaNGOS芒果服务端——魔兽世界的自建服务器之旅 #### 一、准备工作 在开始之前,我们需要确保所有的前置工作已经准备就绪,这包括必要的开发工具和环境搭建。 ##### 1.1 .NET Framework 3.5 的...
每个文件夹都专用于特定版本的Mangos,您可以在其中找到有关该精确版本的所有信息(从Dockerfile到部署文件)。 每个版本目前提供3个Docker映像: mangosd :这是需要地图才能工作的世界服务器。 这是玩家将要玩的...
mangos服务器架构.pdf Mangos服务器架构是一种游戏服务器架构,主要用于游戏服务器的设计和实现。该架构的核心组件包括登录服、游戏服和数据库等。登录服是游戏服务器的入口,负责验证用户的账号和密码,并提供...
魔兽mangos里dbc文件各列的解释。
主数据库:trinitydatabase ============================================= achievement_reward 巫妖王的奖励成就 areatrigger_involvedrelation 传送(区域触发)_包含的任务关系 areatrigger_scripts 区域触发脚本 ...
总之,MaNGOS-0.13.tar.gz是Linux用户自建魔兽世界服务器的一种途径,它提供了一套完整的工具集和文档,使得非专业开发者也能参与到游戏服务器的搭建和维护中。通过不断学习和实践,用户不仅可以了解游戏服务器的...
mangos不是一个魔兽私服模拟器,它是一个开源的自由软件项目,是用c++和C#编程语言,实现的一个支持大型多人在线角色扮演游戏服务器的程序框架,在这个框架下,它理论上应该支持任何客户端的网络游戏,由于现在很多...
《MangOS 0.13与客户端3.0.9升级详解》 MangOS 0.13是一款开放源代码的大型多人在线角色扮演游戏(MMORPG)服务器软件,其核心设计目标是为游戏开发者提供一个高效、可扩展且易于维护的平台。此次发布的"MangOS_...