Maison >base de données >tutoriel mysql >Explication détaillée de la construction du cluster MySQL-Cluster (basée sur le double centre de gestion du package d'installation RPM)

Explication détaillée de la construction du cluster MySQL-Cluster (basée sur le double centre de gestion du package d'installation RPM)

黄舟
黄舟original
2017-03-14 16:40:281230parcourir

Rien n'est spécifiquement indiqué ci-dessous. Ce sont toutes des commandes qui doivent être exécutées par les deux serveurs. Puisqu'il s'agit d'une configuration à double centre de gestion, en fait, les deux machines ont des configurations différentes d'ID et d'IP. . Les configurations des paramètres sont fondamentalement les mêmes


1 Téléchargez mysql-cluster 7.3.7

http:/. / dev.mysql.com/downloads/cluster/

2. Nettoyage et installation de l'environnement

1) Nettoyez le service MySQL fourni avec CentOS6.5. la première commande. , si d'autres systèmes ne sont pas possibles, il est quand même recommandé d'exécuter

# yum -y remove mysql
# rpm -qa | grep mysql*
# rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

2) Préparation de l'environnement
Créer des dossiers (divisés dans les 3 catégories suivantes pour créer les dossiers correspondants)

存储节点:# mkdir /var/lib/mysql/data 
管理节点:# mkdir /var/lib/mysql-cluster    SQL节点:可不用  文件夹授权
进程DIR:# mkdir /var/run/mysqld              
使用如下的命令来变更权限保证可写入:
# chmod -R 1777 /var/lib/mysql
# chmod -R 1777 /var/run/mysqld
# chmod -R 1777 /var/lib/mysql-cluster

3) Installer mysql-cluster

首先解压MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar
# tar xvf MySQL-Cluster-gpl-7.4.2-1.el6.x86_64.rpm-bundle.tar
然后执行如下命令安装
# rpm -ivh MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
# rpm -ivh MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm

Attention particulière : une fois le package gpl du serveur installé, le message d'invite suivant apparaîtra pour nous rappeler le mot de passe du premier super compte après l'installation de l'ensemble du cluster. Existe dans le fichier /root/.mysql_secret.

---------------------------------------------------------------------------------------------------------------------
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
Also, the account for the anonymous user has been removed.
In addition, you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This is strongly recommended for production servers.
-----------------------------------------------------------

3. Configurez le nœud de gestion

1) Exécutez la commande suivante :

# cd /var/lib/mysql-cluster
# vi config.ini

2) Configurez le fichier config.ini, comme ci-joint
Fichier de configuration de 100.218 :

config.ini

Informations de configuration :

 [computer]
 Id=mgr-server-01
 HostName=192.168.100.218
 [mgm default]
 datadir=/var/lib/mysql-cluster
 [mgm]
 HostName=192.168.100.218
 NodeId=60
 [mgm]
 HostName=192.168.100.217
 NodeId=61
 [ndbd default]
 NoOfReplicas = 2
 DataMemory = 50M
 IndexMemory = 50M
 MaxNoOfTables = 1024
 MaxNoOfAttributes = 5000000
 MaxNoOfOrderedIndexes = 10000
 [ndbd]
 HostName=192.168.100.217
 DataDir=/var/lib/mysql
 NodeId=1
 [ndbd]
 HostName=192.168.100.218
 DataDir=/var/lib/mysql
 NodeId=2
 [mysqld]
 HostName=192.168.100.217
 NodeId=81
 [mysqld]
 HostName=192.168.100.218
 NodeId=82

Fichier de configuration de 100.217
config.ini

[computer]
Id=mgr-server-02
HostName=192.168.100.217
[mgm default]
datadir=/var/lib/mysql-cluster
[mgm]
HostName=192.168.100.218
NodeId=60
[mgm]
HostName=192.168.100.217
NodeId=61
[ndbd default]
NoOfReplicas = 2
DataMemory = 50M
IndexMemory = 50M
MaxNoOfTables = 1024
MaxNoOfAttributes = 5000000
MaxNoOfOrderedIndexes = 10000
[ndbd]
HostName=192.168.100.217
DataDir=/var/lib/mysql
NodeId=1
[ndbd]
HostName=192.168.100.218
DataDir=/var/lib/mysql
NodeId=2
[mysqld]
HostName=192.168.100.217
NodeId=81
[mysqld]
HostName=192.168.100.218
NodeId=82

En fait, il n'y a pas beaucoup de différence entre les deux fichiers, cela réside juste dans le nom et l'identifiant dans la configuration de l'ordinateur

4. Configuration des nœuds SQL et des nœuds de données

Modifiez le fichier my.cnf et ajoutez le contenu suivant :

[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
max_connections=100
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
ndbcluster
ndb-connectstring=192.168.100.218,192.168.100.217
[mysqld_safe]
log-error=/var/log/mysqld.log
#pid-file=/var/run/mysqld/mysqld.pid
pid-file=/var/lib/mysql/mysqld.pid
[mysql_cluster]
ndb-connectstring=192.168.100.218,192.168.100.217

5. ajustement du changement de mot de passe : (veuillez suivre strictement la séquence de démarrage)

1) Démarrez mysql-cluster
Avant d'effectuer le démarrage initial, veuillez confirmer que les pare-feu des deux machines sont désactivés (le service iptables s'arrête ou définissez le port du pare-feu pour qu'il soit praticable. Les deux ports sont le port de communication 1186 et le port de données 3306. )
Démarrez la commande de la console mgt pour la première fois : ndb_mgmd -f /var/lib/mysql-cluster/config.ini ( vous devez ajouter --initial pour l'initialisation)
Démarrez la commande du nœud d'équilibrage : ndbd --initial
Démarrez la commande du nœud de données : mysqld_safe --defaults-file=/usr/my.cnf --explicit_defaults_for_timestamp &
my.cnf sur certains systèmes se trouve dans le répertoire etc
Notez que l'intégralité de la sortie de la console doit être surveillée pendant le processus de démarrage. Si un message d'erreur est trouvé, il doit être résolu rapidement et. en fonction du contenu du journal des erreurs.
-------------------------------------------------------------- -- ------------------------------------------------ -- --------
Si tout est normal, utilisez la commande suivante pour ouvrir la console de gestion : ndb_mgm
Exécuter # show
Vérifiez si chaque nœud a été complètement démarré, comme suit, chaque nœud a été connecté, s'il y a un nœud qui n'est pas connecté, vous verrez

ndb_mgm> show
Connected to Management Server at: 192.168.100.218:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0)
id=2 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=60 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)
id=61 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2)
[mysqld(API)] 2 node(s)
id=81 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2)
id=82 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)

S'il y a un nœud qui n'est pas connecté, comme indiqué ci-dessous, la ligne avec l'identifiant. =81 signifie qu'il n'y a pas de connexion. Vérifiez le point de défaut

ndb_mgm> show
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=1 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0)
id=2 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2, Nodegroup: 0, *)
[ndb_mgmd(MGM)] 1 node(s)
id=60 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)
id=61 @192.168.100.217 (mysql-5.6.21 ndb-7.4.2)
[mysqld(API)] 2 node(s)
id=81 (not connected, accepting connect from 192.168.100.217)
id=82 @192.168.100.218 (mysql-5.6.21 ndb-7.4.2)

2) Changez le mot de passe
Lorsque mysqld démarre normalement (vous pouvez utiliser pgrep mysqld pour obtenir l'ID du processus), nous Vous pouvez utiliser la commande suivante pour le modifier :
mysql -u root -p;
Random Password (voir le fichier /root/.mysql_secret pour plus de détails. Après avoir entré, utilisez la commande suivante pour modifier le mot de passe : SET PASSWORD = PASSWORD('new password');
Mais ce nouveau mot de passe doit être une valeur
hash , utilisez donc la méthode suivante pour obtenir le mot de passe valeur de hachage de la chaîne select password('111111');
Cependant, exécuter la commande ci-dessus vous fera d'abord définir le mot de passe, ce qui est frustrant, c'est de retour, puis allez sur mysql ailleurs et exécutez-le
Le hachage la valeur de 111111 est "*FD571203974BA9AFE270FE62151AE967ECA5E0AA"
SET PASSWORD = PASSWORD('*FD571203974BA9AFE270FE62151AE967ECA5 E0AA');
Donc déprimant, après la configuration, vous devez utiliser le texte chiffré pour vous connecter. Eh bien, utilisez simplement le texte chiffré pour entrer après. en entrant, utilisez la commande suivante pour forcer l'utilisation du texte clair pour la connexion

use mysql;
delete from user;
grant all on *.* to root@'%' identified by "111111" with grant option;
flush privileges;
quit;
Ensuite, vous pouvez utiliser le mot de passe en texte clair Après vous être connecté à

plusieurs serveurs équipés de données SQL. nœuds, vous devez exécuter la commande ci-dessus une fois ;

6. Une fois les étapes ci-dessus terminées, testez si le cluster fonctionne normalement

1) Test fonctionnel simple

Après avoir entré mysql sur 218, exécutez comme suit :

create database clustertest;
use clustertest; 
CREATE TABLE testtable(Count INT) ENGINE=NDBCLUSTER;
Remarque : ENGINE=NDBCLUSTER ; Le moteur doit utiliser NDBCLUSTER pour se synchroniser, sinon il ne se synchronisera pas

Vérifiez s'il réussit. Sur 217, allez sur mysql et vérifiez si la base de données et la table sont créées automatiquement. Si elles sont créées, cela signifie un succès. En cas d'échec, veuillez vérifier la configuration de l'environnement
2) Testez si les données sont correctes dans les situations de reprise après sinistre. Synchronisation (si une base de données est arrêtée, les données perdues seront-elles automatiquement reconstituées lors de son redémarrage)
Arrêtez le service mysql le 217 et exécutez-le le 218

insert into testtable values (1);

启动217的mysql服务,使用show确认217的数据库节点已经连接上了,执行如下语句

select * from testtable;

如果发现有数据,则表示功能完备

7、关闭Cluster:(需要严格按照次序执行)

关闭数据节点:# mysqld stop  (SQL节点可以用mysqladmin shutdown或别的方式关闭。)
在管理节点上执行:# ndb_mgm -e shutdown
将安全的关闭管理节点和数据节点。
关闭后使用如下的进程检测命令查看一下是否退出来了:

# pgrep mysqld
# ps aux | grep nbdb

如果没有,找到对应的pid进行kill 操作即可
kill -9 进程号

8、再次启动Cluster方案:

启动整个cluster的次序,注意,一些语句已经减去了初始化的内容:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ndbd
mysqld_safe --defaults-file=/usr/my.cnf --explicit_defaults_for_timestamp &

备注:

1、mysql安装后,默认会自动启动的,每次启动cluster的时候,都需要先把mysql的服务关闭,太麻烦,于是可以执行如下命令(我出手有点狠):

chkconfig --level 123456 mysql off

2、防火墙问题,偷个懒,我懒得去一一开放端口,干脆把防火墙直接关了(极不推荐的做法)

chkconfig --level 123456 iptables off

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:
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