Maison  >  Article  >  base de données  >  MySQL-ClusterCluster MySQL

MySQL-ClusterCluster MySQL

Guanhui
Guanhuiavant
2020-05-28 11:48:552477parcourir

MySQL-ClusterCluster MySQL

MySQL Cluster MySQL Cluster

Concept de base :

"NDB" est un " " Moteur de stockage "In-Memory", qui présente les caractéristiques d'une haute disponibilité et d'une bonne cohérence des données.

Le cluster MySQL peut configurer le moteur de stockage NDB avec une variété d'options de basculement et d'équilibrage de charge, mais il est plus simple de le faire sur le moteur de stockage au niveau du cluster. Le moteur de stockage NDB du cluster MySQL contient un ensemble de données complet et dépend uniquement des autres données du cluster lui-même.

Nœud de gestion (MGM) : le rôle de ce type de nœud est de gérer d'autres nœuds dans le cluster MySQL, comme fournir des données de configuration, démarrer et arrêter des nœuds, exécuter des sauvegardes, etc. Étant donné que ces nœuds gèrent la configuration des autres nœuds, ils doivent être démarrés avant les autres nœuds. Le nœud MGM est démarré avec la commande "ndb_mgmd".

Nœud de données : ce type de nœud est utilisé pour sauvegarder les données du cluster. Le nombre de nœuds de données est lié au nombre de répliques, qui est un multiple des fragments. Par exemple, avec deux répliques, chacune contenant deux fragments, il existe 4 nœuds de données. Il n’est cependant pas nécessaire de configurer plusieurs copies. Les nœuds de données sont démarrés avec la commande "ndbd".

Nœud SQL : Il s'agit du nœud utilisé pour accéder aux données du cluster. Pour MySQL Cluster, le nœud client est un serveur MySQL traditionnel utilisant le moteur de stockage NDB Cluster. Habituellement, le nœud SQL est démarré à l'aide de la commande "mysqld -ndbcluster" ou à l'aide de "mysqld" après avoir ajouté "ndbcluster" à "my.cnf".

Le serveur de gestion (nœud MGM) est responsable de la gestion des fichiers de configuration du cluster et des journaux du cluster. Chaque nœud du cluster récupère les données de configuration du serveur de gestion et demande un moyen de déterminer l'emplacement du serveur de gestion. Lorsque de nouveaux événements se produisent au sein d'un nœud de données, le nœud transmet des informations sur ces événements au serveur de gestion, puis écrit ces informations dans le journal du cluster.

Aperçu de la configuration du cluster :

Version installée : cluster mysql 7.3.2

Système d'exploitation : centos6.3 (X64)

Nom du logiciel : mysql- cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (version générale)

IP du nœud de gestion : 192.168.0.202

IP du nœud de données-nœud SQL : 192.168 .0.203

IP du nœud de données-nœud SQL : 192.168.0.204

Installer le package de dépendances : yum install -y glibc perl libaio-devel

Le système X32 bits doit être installé le groupe de bibliothèques de compatibilité : yum groupinstall « Bibliothèques de compatibilité »

1. Configuration de l'installation du nœud de gestion

1. Installez mysql-cluster

groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql-cluster
chown  -R root.mysql  /usr/local/mysql/
chown  -R mysql.mysql  /usr/local/mysql/data/
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &   #初始化数据库
cp  -rf  /usr/local/mysql/bin/ndb_mgm *  /usr/local/bin/  #复制ndb节点管理命令到本地,方便使用

2. Modifiez le fichier de configuration du maître mysql

vi  /etc/my .cnf
[MYSQLD]
  user = mysql
  socket =  /tmp/mysql .sock
  basedir =  /usr/local/mysql  #安装目录
  datadir =  /usr/local/mysql/data  #数据库存放目录
  character-sets-server=UTF8
  ndbcluster  #运行NDB存储引擎
  ndb-connectstring=192.168.0.202
  lower_case_table_names=1  #表名是否区分大小写1为不区分,不然linux下表名是区分大小写的
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #Mysql Cluster管理节点IP

3. Créez le fichier de configuration du cluster mysql

mkdir  /var/lib/mysql-cluster
vi  /var/lib/mysql-cluster/config .ini
[ndbd default]
NoOfReplicas=2  #定义在Cluster环境中相同数据的份数,最大为4
DataMemory=256M  #分配的数据内存大小,根据本机服务器内存适量来分配
IndexMemory=256M  #设定用于存放索引(非主键)数据的内存段大小
#一个NDB节点能存放的数据量是会受到DataMemory和IndexMemory两个参数设置的约束,两者任何一个达到限制数量后,都无法再增加能存储的数据量。如果继续存入数据系统会报错“table is full”。
[ndb_mgmd]
nodeid=1
hostname =192.168.0.202
datadir= /var/lib/mysql-cluster/
[ndbd]
nodeid=2
hostname =192.168.0.203
datadir= /usr/local/mysql/data
[ndbd]
nodeid=3
hostname =192.168.0.204
datadir= /usr/local/mysql/data
[mysqld]
nodeid=4
hostname =192.168.0.203
[mysqld]
nodeid=5
hostname =192.168.0.204

Enregistrez et quittez !

chown  mysql.mysql  /var/lib/mysql-cluster/config .ini

2. Les deux nœuds de données et les nœuds SQL ont la même configuration

1 Installez mysql-cluster

tar  -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64. tar .gz
mv  mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64  /usr/local/mysql
groupadd mysql
useradd  -g mysql -s  /sbin/nologin  mysql
chown  -R root.mysql  /usr/local/mysql
chown  -R mysql.mysql  /usr/local/mysql/data
/usr/local/mysql/scripts/mysql_install_db  --basedir= /usr/local/mysql  --datadir= /usr/local/mysql/data  --user=mysql &  #初始化数据库
cp  /usr/local/mysql/support-files/mysql .server  /etc/init .d /mysqld
cp  /usr/local/mysql/support-files/medium .cnf  /etc/my .cnf
chmod  +x /etc/init .d /mysqld

2. fichier de configuration

vi  /etc/my .cnf
[MYSQLD]
user=mysql
character_set_server=utf8
ndbcluster
ndb-connectstring=192.168.0.202
default-storage-engine=ndbcluster  #设置默认是NDB存储引擎
datadir= /usr/local/mysql/data
basedir= /usr/local/mysql
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.202  #mysql cluster 管理节点IP

3. Test (éteignez d'abord le pare-feu (IPTABLES) et Selinux des trois serveurs)

1. Démarrez le nœud de gestion

ndb_mgmd -f  /var/lib/mysql-cluster/config .ini --initial
netstat  -tuplna |  grep  1186  #默认连接端口1186,启动成功
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1369 /ndb_mgmd
#--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时。
.

Si le démarrage apparaît Erreur : supprimez simplement tous les nodeids définis dans config.ini !

2. Démarrez deux nœuds de données et des nœuds SQL

Nœud de données : /usr/local/mysql/bin/ndbd --initial

Nœud SQL : bin/mysqld_safe - -user=mysql & ou service mysqld start

3. Vérifiez l'état du cluster

ndb_mgm -e show #Affichez le nœud de gestion et le nœud de données, la configuration est réussie

4. Créez une base de données pour vérifier la synchronisation

mysql -u root -p

Mysql>create database test ;

Mysql>use test ;

Mysql>create table abc (id int) engine=ndbcluster; #Spécifiez le moteur de la table de base de données comme NDB, sinon la synchronisation échoue

Mysql>Insérer dans les valeurs abc () (1 );

Mysql> select * from abc;

#À ce stade, vérifiez si les deux données sont cohérentes. Si elles sont cohérentes, le cluster a réussi !

Remarques :

1. Lors de la création d'une table, assurez-vous d'utiliser ENGINE=NDB ou ENGINE=NDBCLUSTER pour spécifier le moteur de stockage du cluster NDB, ou utilisez l'option ALTER TABLE pour modifier le stockage. moteur de la table.

2. La table NDB doit avoir une clé primaire, la clé primaire doit donc être définie lors de la création de la table, sinon le moteur de stockage NDB générera automatiquement une clé primaire implicite.

3. La table des autorisations utilisateur du nœud SQL est toujours enregistrée à l'aide du moteur de stockage MYISAM, donc l'utilisateur MySql créé dans un nœud SQL ne peut accéder à ce nœud que si vous souhaitez utiliser le même utilisateur pour y accéder. d'autres nœuds SQL, vous devez ajouter des utilisateurs au nœud SQL correspondant.

4. Commandes de gestion et de maintenance

Arrêtez le cluster mysql : ndb_mgm -e shutdown

Redémarrez le cluster mysql : ndb_mgmd -f /var /lib/ mysql-cluster/config.ini

Redémarrer le nœud de données :/usr/local/mysql/bin/ndbd

Démarrer le nœud SQL :/usr/local/mysql/bin/mysqld_safe --user = mysql & ou service mysqld restart

Afficher l'état de mysql : ndb_mgm -e show

Séquence de démarrage :

Nœud de gestion-> node

Fermer la séquence :

SQL node-> Data node-> Management node

Tutoriel recommandé : "Tutoriel MySQL"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer