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)
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
http:/. / dev.mysql.com/downloads/cluster/
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. -----------------------------------------------------------
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
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
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 ;
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;
如果发现有数据,则表示功能完备
关闭数据节点:# mysqld stop (SQL节点可以用mysqladmin shutdown或别的方式关闭。)
在管理节点上执行:# ndb_mgm -e shutdown
将安全的关闭管理节点和数据节点。
关闭后使用如下的进程检测命令查看一下是否退出来了:
# pgrep mysqld # ps aux | grep nbdb
如果没有,找到对应的pid进行kill 操作即可
kill -9 进程号
启动整个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!