Maison base de données tutoriel mysql MySQL_Cluster配置_MySQL

MySQL_Cluster配置_MySQL

Jun 01, 2016 pm 01:11 PM

MySQL_Cluster介绍:

我们大家都知道MySQL Cluster 是一种技术,其主要功能是在无共享的相关系统中部署内存中数据库的Cluster 。在通过共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDBCluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序所有的这些节点构成一个完成的MySQL集群体系。数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“NDB存储服务器”。

通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的Cluster 数据管理。

MySQL Cluster 基本概念 “NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的

特点。

MySQL Cluster 能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在Cluster 级别上的

存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于Cluster本

身内的其他数据。

目前,MySQL Cluster的Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中,

Cluster的每个部分被视为1个节点。

管理(MGM)节点:这类节点的作用是管理MySQL Cluster内的其他节点,如提供配置数据、启动并停

止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节

点。MGM节点是用命令“ndb_mgmd”启动的。

数据节点:这类节点用于保存Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例

如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据

节点是用命令“ndbd”启动的。

SQL节点:这是用来访问Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB

Cluster存储引擎的传统MySQL服务器。通常,SQL节点是使用命令“mysqld –ndbcluster”启动的,

或将“ndbcluster”添加到“my.cnf”后使用“mysqld”启动。注释:在很多情况下,术语“节点”用 于指

计算机,但在讨论MySQL Cluster时,它表示的是进程。在单台计算机上可以有任意数目的节点,为

此,我们采用术语“ Cluster主机”。

管理服务器(MGM节点)负责管理Cluster配置文件和Cluster日志。Cluster中的每个节点从管理服务

器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于

这类事件的信息传输 到管理服务器,然后,将这类信息写入Cluster日志。

此外,可以有任意数目的Cluster客户端进程或应用程序。它们分为两种类型:

标准MySQL客户端:对于MySQL Cluster,它们与标准的(非Cluster类)MySQL没有区别。换句

话讲,能够从用PHP、Perl、C、C++、Java、Python、Ruby等编写的现有MySQL应用程序访问

MySQL Cluster。

管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点、启动和停止消息跟踪(仅调试

版本)、显示节点版本和状态、启动和停止备份等的命令。

mysql cluster构建

从www.mysql.com上下载所需软件

MySQL-Cluster-gpl-client

MySQL-Cluster-gpl-management

MySQL-Cluster-gpl-server

MySQL-Cluster-gpl-storage

MySQL-Cluster-gpl-tools

环境:

系统:RHEL6.3 selinux and iptables disabled

管理节点:192.168.0.1

数据节点:192.168.0.2

sql节点:192.168.0.3


管理节点配置:

rpm -ivh MySQL-Cluster-gpl-managementrpm -ivh MySQL-Cluster-gpl-toolsmkdir -p /usr/local/mysql-cluster/vi /usr/mysql-cluster/config.ini[ndbd default]NoOfReplicas=1 #该全局参数仅能在[NDBD DEFAULT]中设置,它定义了cluster中每个表保存的副本数。该参数还指了节点组的大小。节点组指的是保存相同信息的节点集合DataMemory=30M #该参数定义了数据节点用于保存数据库记录的空间大小,全部空间均是分配在内存中的,确保你的数据节点具有足够的物理内存来容纳该值,由于我这是使用虚拟机测试,所以设置的偏小,你可以依照实际环境来定义此值IndexMemory=10M #该参数用于控制cluster中哈希(混编)索引所使用的存储量[ndb_mgmd]nodeid=1 #cluster中的每个节点都有唯一的标识,由从1到63的整数表示 新版本中使用nodeid代替hostname=192.168.0.254 #定义管理节点ipdatadir=/usr/local/mysql-cluster #它用于设置保存管理服务器输出文件的位置。这些文件包括cluster日志文件、进程输出文件、以及端口监督程序的pid文件[ndbd]nodeid=2hostname=192.168.0.2 #定义数据节点ipdatadir=/usr/local/mysql/ndbdata #该参数指定了存放跟踪文件、日志文件、pid文件以及错误日志的目录[mysqld]id=3hostname=192.168.0.3 #定义sql节点ip
Copier après la connexion

数据节点配置:

rpm -ivh MySQL-Cluster-gpl-storagemkdir -p /usr/local/mysql/ndbdatavi /etc/my.cnf[mysqld]ndbcluster #运行ndb集群引擎ndb-connectstring=192.168.0.1 #指定管理节点[mysql_cluster]ndb-connectstring=192.168.0.1 #指定管理节点
Copier après la connexion

sql节点配置:

rpm -ivh MySQL-Cluster-gpl-serverrpm -ivh MySQL-Cluster-gpl-client如果你的内存≤64M,则复制/usr/share/mysql/my-small.cnf为/etc/my.cnf如果内存是128M,则复制/usr/share/mysql/my-medium.cnf为/etc/my.cnf如果内存是512M,则复制/usr/share/mysql/my-large.cnf为/etc/my.cnf如果内存是1-2G,则复制/usr/share/mysql/my-huge.cnf为/etc/my.cnf如果内存是4G,则复制/usr/share/mysql/my-innodb-heavy-4G.cnf为/etc/my.cnf修改/etc/my.cnf[mysqld]....ndbcluster (以下数据添加在[mysqld]区域的最下方)ndb-connectstring=192.168.0.1[mysql_cluster]ndb-connectstring=192.168.0.1
Copier après la connexion

首先启动管理节点,然后启动存储节点,最后启动SQL节点

管理节点:

ndb_mgmd -f /usr/local/mysql-cluster/config.ini
Copier après la connexion

数据节点:

ndbd --initial
Copier après la connexion
Copier après la connexion

注: 仅在首次启动ndbd时,或在备份/恢复或配置变化后重启ndbd时使用“--initial”参数,这很重

要。原因在于,该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括恢复用日志

文件

sql节点:

/etc/init.d/mysql start
Copier après la connexion

管理节点测试:

ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showConnected to Management Server at: localhost:1186Cluster Configuration---------------------[ndbd(NDB)] 1 node(s)id=2 @192.168.0.2 (mysql-5.1.44 ndb-7.1.4, Nodegroup: 0, Master)[ndb_mgmd(MGM)] 1 node(s)id=1 @192.168.0.1 (mysql-5.1.44 ndb-7.1.4)[mysqld(API)] 1 node(s)id=3 @192.168.0.3 (mysql-5.1.44 ndb-7.1.4)ndb_mgm>
Copier après la connexion

安全关闭和重启mysql cluster

在MGM节点所在的机器上,在Shell中简单地输入下述命令:

ndb_mgm -e shutdown
Copier après la connexion

该命令将恰当地中止ndb_mgm、ndb_mgmd以及任何ndbd进程。使用mysqladmin shutdown或

其他方法,可中止SQL节点

重启时,可简单地运行下述命令:

在管理节点上:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini
Copier après la connexion

在每台数据节点上:

ndbd
Copier après la connexion

注:正常重启NDBD节点时,不要用“--initial”选项调用该命令。

在SQL节点上:

/etc/init.d/mysql restart
Copier après la connexion
Copier après la connexion


管理节点重新加载配置:

ndb_mgmd -f /usr/local/mysql-cluster/config.ini --initial
Copier après la connexion

各数据节点重新初始化:

ndbd --initial
Copier après la connexion
Copier après la connexion

各sql节点重启mysql:

/etc/init.d/mysql restart
Copier après la connexion
Copier après la connexion

建立集群数据:

在sql节点执行:

mysqladmin create worldvi city.sqlCREATE TABLE City (ID int(11) NOT NULL auto_increment,Name char(35) NOT NULL default '',CountryCode char(3) NOT NULL default '',District char(20) NOT NULL default '',Population int(11) NOT NULL default '0',PRIMARY KEY (ID)) ENGINE=NDBCLUSTER; #指定MySQL为该表使用了NDB存储引擎,数据存储于各数据节点,不然mysql使用默认的MyISAM存储引擎,所有的数据将会存储于本机,和单机一样INSERT INTO City VALUES (1,'Kabul','AFG','Kabol',1780000);INSERT INTO City VALUES (2,'Qandahar','AFG','Qandahar',237500);INSERT INTO City VALUES (3,'Herat','AFG','Herat',186800);mysql world < city.sql
Copier après la connexion

现在你可以在各sql节点查看数据

mysql cluster 备份恢复

在管理节点执行备份:

ndb_mgm> start backupWaiting for completed, this may take several minutesNode 2: Backup 1 started from node 1Node 2: Backup 1 started from node 1 completedStartGCP: 149 StopGCP: 152#Records: 2059 #LogRecords: 0Data: 51272 bytes Log: 0 bytes
Copier après la connexion

注:默认备份的数据在各数据节点的/usr/local/mysql/ndbdata/BACKUP目录下保存

删除City表中的所有数据,执行恢复

数据节点:

ndb_restore -n 2 -b 1 -r /usr/local/mysql/ndbdata/BACKUP/BACKUP-1/-n指节点id -b指备份id -r指备份目录Nodeid = 2Backup Id = 1backup path = /usr/local/mysql/ndbdata/BACKUP/BACKUP-1/Opening file '/usr/local/mysql/ndbdata/BACKUP/BACKUP-1/BACKUP-1.2.ctl'Backup version in files: ndb-6.3.11 ndb version: mysql-5.1.44 ndb-7.1.4Stop GCP of Backup: 0Connected to ndb!!Opening file '/usr/local/mysql/ndbdata/BACKUP/BACKUP-1/BACKUP-1-0.2.Data'_____________________________________________________Processing data in table: sys/def/NDB$EVENTS_0(3) fragment 0_____________________________________________________Processing data in table: mysql/def/ndb_apply_status(6) fragment 0_____________________________________________________Processing data in table: world/def/City(7) fragment 0_____________________________________________________Processing data in table: mysql/def/NDB$BLOB_4_3(5) fragment 0_____________________________________________________Processing data in table: sys/def/SYSTAB_0(2) fragment 0_____________________________________________________Processing data in table: mysql/def/ndb_schema(4) fragment 0Opening file '/usr/local/mysql/ndbdata/BACKUP/BACKUP-1/BACKUP-1.2.log'Restored 1 tuples and 0 log entriesNDBT_ProgramExit: 0 - OK数据节点4:
Copier après la connexion

注:由于我使用的是rpm包方式安装,各数据节点没有ndb_restore命令,可以直接从管理节点scp)

官方强烈建议在single user mode下进行恢复操作,以保证数据库的一致性,但问题是这种模式要

求断开其他sql节点,线上业务的sql节点不是轻易可以断的。

参考:西部开源技术中心 yakexi007@westos.org 根据其总结


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE? Mar 19, 2025 pm 03:51 PM

L'article discute de l'utilisation de l'instruction ALTER TABLE de MySQL pour modifier les tables, notamment en ajoutant / abandon les colonnes, en renommant des tables / colonnes et en modifiant les types de données de colonne.

Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Comment configurer le cryptage SSL / TLS pour les connexions MySQL? Mar 18, 2025 pm 12:01 PM

L'article discute de la configuration du cryptage SSL / TLS pour MySQL, y compris la génération et la vérification de certificat. Le problème principal est d'utiliser les implications de sécurité des certificats auto-signés. [Compte de caractère: 159]

Comment gérez-vous les grands ensembles de données dans MySQL? Comment gérez-vous les grands ensembles de données dans MySQL? Mar 21, 2025 pm 12:15 PM

L'article traite des stratégies pour gérer de grands ensembles de données dans MySQL, y compris le partitionnement, la rupture, l'indexation et l'optimisation des requêtes.

Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)? Quels sont les outils de GUI MySQL populaires (par exemple, MySQL Workbench, PhpMyAdmin)? Mar 21, 2025 pm 06:28 PM

L'article traite des outils de GUI MySQL populaires comme MySQL Workbench et PhpMyAdmin, en comparant leurs fonctionnalités et leur pertinence pour les débutants et les utilisateurs avancés. [159 caractères]

Comment déposez-vous une table dans MySQL à l'aide de l'instruction TABLE DROP? Comment déposez-vous une table dans MySQL à l'aide de l'instruction TABLE DROP? Mar 19, 2025 pm 03:52 PM

L'article discute de la suppression des tables dans MySQL en utilisant l'instruction TABLE DROP, mettant l'accent sur les précautions et les risques. Il souligne que l'action est irréversible sans sauvegardes, détaillant les méthodes de récupération et les risques potentiels de l'environnement de production.

Comment représentez-vous des relations en utilisant des clés étrangères? Comment représentez-vous des relations en utilisant des clés étrangères? Mar 19, 2025 pm 03:48 PM

L'article discute de l'utilisation de clés étrangères pour représenter les relations dans les bases de données, en se concentrant sur les meilleures pratiques, l'intégrité des données et les pièges communs à éviter.

Comment créez-vous des index sur les colonnes JSON? Comment créez-vous des index sur les colonnes JSON? Mar 21, 2025 pm 12:13 PM

L'article discute de la création d'index sur les colonnes JSON dans diverses bases de données comme PostgreSQL, MySQL et MongoDB pour améliorer les performances de la requête. Il explique la syntaxe et les avantages de l'indexation des chemins JSON spécifiques et répertorie les systèmes de base de données pris en charge.

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)? Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)? Mar 18, 2025 pm 12:00 PM

L'article discute de la sécurisation MySQL contre l'injection SQL et les attaques brutales à l'aide de déclarations préparées, de validation des entrées et de politiques de mot de passe solides (159 caractères)

See all articles