ReplicaSet使用的是n个mongod节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。使用ReplicaSet来实现读写分离。通过在连接
Replica Set使用的是n个mongod节点,构建具备自动的容错功能(auto-failover),自动恢复的(auto-recovery)的高可用方案。
使用Replica Set来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。
对于Replica Set中的secondary 节点默认是不可读的。
架构图:
分别在各服务器上运行两个mongod实例:
shard11 + shard12 + shard13 ----> 组成一个replica set --|
|-----> sharding_cluster
shard21 + shard22 + shard23 ----> 组成一个replica set --|
Shard Server: 用于存储实际的数据块,实际生产环境中一个shard server角色可由几台机器组个一个relica set承担,防止主机单点故障!
Config Server: 存储了整个 Cluster Metadata,其中包括 chunk 信息!
Route Server: 前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。
一、安装配置mongodb环境
1.安装
2.建立用户和组
3.创建数据目录
在各服务器上建立如下目录:
4.设置各节点服务器hosts解析
5.同步时钟
ntpdate ntp.api.bz
写到crontab任务计划中!
这里务必要同步时钟,不然shrad不能同步!
以上配置各节点都进行操作!!
二、配置relica sets
1.配置两个shard
可以对应的把上面的命令放在一个脚本内,方便启动!
也可以写到配置文件中,香港空间,通过-f参数来启动!
改成配置文件方式:
这样可以通过 mognod -f mongodb.conf来启动了!
我这里把这些命令都放入脚本中:
启动脚本(这里只启动mongod,后面有专门启动config和mongos脚本):
PS:要是想开启一个HTTP协议的端口提供rest服务,可以在mongod启动参数中加上 --rest 选项!
这样我们可以通过 :28021/_replSet 查看状态!
生产环境推荐用配置文件和脚本文件方式启动。
三、初始化replica set
1.配置shard1用到的replica sets
出现如下信息表示成功:
可以看马上变成 PRIMARY 即主节点!
再到其它节点看下:
在所有节点上可以查看Replica Sets 的配置信息:
2.配置shard2用到的replica sets
验证节点:
到此就配置好了二个replica sets!
PS: 初始化时,不指定priority默认id 0 为primary
状态中关键数据位:
在用 rs.status()查看replica sets状态时,
state:1表示该host是当前可以进行读写,2:不能读写
health:1表示该host目前是正常的,0:异常
注意:初使化replica sets时也可以用这种方法:
db.runCommand({"replSetInitiate":{"_id":"shard1","members":[{"_id":0,"host":"192.168.8.30:27021"},{"_id":1,"host":"192.168.8.31:27021"},{"_id":2,"host":"192.168.8.32:27021","shardOnly":true}]}})
可以省略用rs.initiate(config)。
四、配置三台config server
分别在各服务器上运行(启动都一样):
/opt/mongodb/bin/mongod --configsvr --dbpath /data0/mongodb/db/config --port 20000 --logpath /data0/mongodb/logs/config.log --logappend --fork --directoryperdb
用脚本形式:
然后在各节点查看有没有启动起来:
五、配置mongs(启动路由)
分别在206、207服务器上运行(也可以在所有节点上启动):
/opt/mongodb/bin/mongos -configdb 192.168.8.30:20000,192.168.8.31:20000,192.168.8.32:20000 -port 30000 -chunkSize 50 -logpath /data0/mongodb/logs/mongos.log -logappend -fork
用脚本形式:
注意:
1). mongos里面的ip和端口是config服务的ip和端口:192.168.8.30:20000,192.168.8.31:20000,192.168.8.32:20000
2). 必须先启动config后(并且config启动正常后,有config的进程存在)再启动mongos
六、配置shard集群
1.连接一台路由
2.加入shards
PS:
分片操作必须在 admin 库下操作
如果只启动206和207服务器的路由!因此可不用把208服务器加进来!
可选参数说明:
Name:用于指定每个shard的名字,不指定的话系统将自动分配
maxSize:指定各个shard可使用的最大磁盘空间,单位MegaBytes
3.列出加入的shards
PS: 列出了以上二个我加的shards(shard1和shard2),表示shards已经配置成功!!
如果206那台机器挂了,其它两个节点中某个会成为主节点,mongos会自动连接到主节点!
七.添加分片
1.激活数据库分片
db.runCommand( { enablesharding : "
如:db.runCommand( { enablesharding : "" } );
插入测试数据:
激活数据库:
通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的collection 将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对 collection作些操作!
2.添加索引
必须加索引,不然不能对collections分片!
3.Collecton分片
要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:
db.runCommand( { shardcollection : "",key : });
PS:
1). 操作必须切换到admin数据库下
2). 分片的collection系统要创建好索引
3). 分片的collection只能有一个在分片key上的唯一索引,其它唯一索引不被允许
4.查看分片状态
些时分片没有发生变化!
再插入比较多的数据:
当再次插入大量数据时。。自动分片处理了!!所以OK!!!
八.停止所有服务脚本
九.分片管理
1.listshards:列出所有的Shard
2.移除shard
对于移除的分片后,我们再加入相同分片时,美国服务器,会加不进去,可以按如下方法进行:
要做的就是删除shards表中的信息,把移除的shard键值删除掉!再重新加入shard
如:db.shards.remove({"_id":"shard2"})
3.查看Sharding信息
> printShardingStatus()
PRIMARY> db.system.replset.find()
PRIMARY> rs.isMaster()
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
关于mongos接入高可用的介绍请看下回分解!!!!
本文出自 “->” 博客,转载请与作者联系!
,虚拟主机
Les fonctions MySQL peuvent être utilisées pour le traitement et le calcul des données. 1. L'utilisation de base comprend le traitement des chaînes, le calcul de la date et les opérations mathématiques. 2. L'utilisation avancée consiste à combiner plusieurs fonctions pour implémenter des opérations complexes. 3. L'optimisation des performances nécessite d'éviter l'utilisation de fonctions dans la clause où et d'utiliser des tables groupby et temporaires.

Méthodes efficaces pour les données d'insertion par lots dans MySQL Incluent: 1. Utilisation d'inserto ... Syntaxe des valeurs, 2. Utilisation de la commande chargedatainfile, 3. Utilisation du traitement des transactions, 4. Ajuster la taille du lot, 5. Désactiver l'indexation, 6. Utilisation de l'insertion ou de l'insert ... onduplicatekeyupdate, ces méthodes peuvent améliorer considérablement l'efficacité du fonctionnement de la base de données.

Dans MySQL, ajoutez des champs en utilisant alterTableTable_namEaddColumnNew_Columnvarchar (255) AfterExist_Column, supprimez les champs en utilisant alterTableTable_NamedRopColumnColumn_to_drop. Lorsque vous ajoutez des champs, vous devez spécifier un emplacement pour optimiser les performances de la requête et la structure des données; Avant de supprimer les champs, vous devez confirmer que l'opération est irréversible; La modification de la structure de la table à l'aide du DDL en ligne, des données de sauvegarde, de l'environnement de test et des périodes de faible charge est l'optimisation des performances et les meilleures pratiques.

Utilisez la commande Expliquez pour analyser le plan d'exécution des requêtes MySQL. 1. La commande EXPLIQUE affiche le plan d'exécution de la requête pour aider à trouver des goulots d'étranglement de performances. 2. Le plan d'exécution comprend des champs tels que id, select_type, table, type, possible_keys, key, key_len, ref, lignes et extra. 3. Selon le plan d'exécution, vous pouvez optimiser les requêtes en ajoutant des index, en évitant les analyses de table complètes, en optimisant les opérations de jointure et en utilisant des index de superposition.

Les sous-requêtes peuvent améliorer l'efficacité de la requête MySQL. 1) La sous-requête simplifie la logique de requête complexe, telle que le filtrage des données et le calcul des valeurs agrégées. 2) MySQL Optimizer peut convertir des sous-questionnaires pour des opérations de jointure pour améliorer les performances. 3) L'utilisation existe plutôt que peut éviter plusieurs erreurs de renvoi des lignes. 4) Les stratégies d'optimisation comprennent l'évitement des sous-requêtes connexes, l'utilisation existe, l'optimisation de l'index et l'évitement de la nidification des sous-requêtes.

Les méthodes de configuration des ensembles de caractères et des collations dans MySQL incluent: 1. Définition des jeux de caractères et des collations au niveau du serveur: setNames'utf8 '; SetCharAttersetUtf8; SetCollation_Connection = 'utf8_general_ci'; 2. Créez une base de données qui utilise des jeux de caractères et des collations spécifiques: CreatedAtAbasEExample_DBCharacteSetUtf8CollateUtf8_General_ci; 3. Spécifiez les ensembles de caractères et les collations lors de la création d'une table: CreateTableExample_Table (IDInt

Pour désinstaller MySQL en toute sécurité et en toute sécurité et nettoyer tous les fichiers résiduels, suivez les étapes suivantes: 1. Stop MySQL Service; 2. Désinstaller les packages MySQL; 3. Nettoyer des fichiers de configuration et des répertoires de données; 4. Vérifiez que la désinstallation est approfondie.

Le renommer une base de données dans MySQL nécessite des méthodes indirectes. Les étapes sont les suivantes: 1. Créez une nouvelle base de données; 2. Utilisez MySQLDump pour exporter l'ancienne base de données; 3. Importez les données dans la nouvelle base de données; 4. Supprimer l'ancienne base de données.


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

Navigateur d'examen sécurisé
Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

PhpStorm version Mac
Le dernier (2018.2.1) outil de développement intégré PHP professionnel
