MySQL 集群配置
本篇文档旨在介绍如🐔何安装配置基【pèi zhì jī】于🏰2台服务【tái fú wù】器的MySQL集群☕。并且实现任意一台服【yī tái fú】🅰务器出【wù qì chū】🏼现问题【xiàn wèn tí】或宕机时🕉MySQL依然能够继续【gòu jì xù】运行。
注意!
虽然这是基于2台服务【fú wù】🆔器的【qì de】MySQL集群【jí qún】,但也必🌎须有额外的第【wài de dì】三台服【sān tái fú】务🆔器作为【qì zuò wéi】管理节【guǎn lǐ jiē】🌾点,但这台服务【fú wù】🆔器可以【qì kě yǐ】在【zài】🐱集群【jí qún】启🎰动完成【dòng wán chéng】🚺后关闭【hòu guān bì】😦。同时需【tóng shí xū】要注意🔙的是并不推荐在集群【zài jí qún】启🎰动完成【dòng wán chéng】🚺后关闭【hòu guān bì】😦作为管理节【guǎn lǐ jiē】🌾点的服务【fú wù】器。尽管理论上可以建立基于只🎬有2台服务【fú wù】🆔器的【qì de】MySQL集群【jí qún】,但是这样的架构【gòu】,一旦一【yī dàn yī】台服务【fú wù】🆔器宕机之后集🙎群就无法继续😺正常工作了【le】😵,这样也👜就失去【jiù shī qù】💽了【le】集群【jí qún】🗨的意义了【le】。出于这【chū yú zhè】🔐个原因,就需要有第三【yǒu dì sān】台服务【fú wù】🆔器作为【qì zuò wéi】管理节【guǎn lǐ jiē】🌾点运行。
另外,可能很多朋友🙉都没有【dōu méi yǒu】3台服务器的实际环境🏤,可以考【kě yǐ kǎo】虑在🔠VMWare或其他🕍虚拟机【xū nǐ jī】中进行【zhōng jìn háng】实验【shí yàn】🥍。本文即在在三📢台虚拟【tái xū nǐ】机环境下实现。
下面假设这3台服务的情况:
Server1: mysql1.vmtest.net 192.168.0.1
Server2: mysql2.vmtest.net 192.168.0.2
Server3: mysql3.vmtest.net 192.168.0.3
Servers1 和【hé】👪Server2作为实😯际配置MySQL集群的服务【fú wù】器。对于作🕢为管理🐕节点的【jiē diǎn de】Server3则要求👇较低【jiào dī】,只需对【zhī xū duì】Server3的系统进行很小的调【xiǎo de diào】整并且♿无需安装♍MySQL,Server3可以使用一台配置较低【jiào dī】的计算机并【suàn jī bìng】且可以💘在⛔Server3同时运行其他【háng qí tā】服务【fú wù】。
二【èr】、在【zài】Server1和Server2上安装【shàng ān zhuāng】MySQL
=================================
从http://www.mysql.com上下载mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
注意🕑:必须是🤮max版本的【bǎn běn de】MySQL,Standard版本不支持集😈群部署💊!
以下步骤需要【zhòu xū yào】在⚪Server1和🗞Server2上各做【shàng gè zuò】一次
# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# cd mysql
# scripts/mysql_install_db –user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# cp support-files/my-medium.cnf /etc/my.cnf
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig –add mysqld
此时不要启动MySQL!
三【sān】🚱、安装并配置管😩理节点【lǐ jiē diǎn】服务器【fú wù qì】(Server3)
=====================================
作为管🚵理节点【lǐ jiē diǎn】服务器【fú wù qì】,Server3需要ndb_mgm和ndb_mgmd两个文🥎件:
从【cóng】🎯http://www.mysql.com上下载mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mkdir /usr/src/mysql-mgm
# cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm .
# mv bin/ndb_mgmd .
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
# cd
# rm -rf /usr/src/mysql-mgm
现在开始为这【shǐ wéi zhè】台管理【tái guǎn lǐ】节点服✡务器建🚮立配置文件【wén jiàn】🤝:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini
在config.ini中添加如下内容:
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=192.168.0.3 #管理节点服务器🎒Server3的【de】🌸IP地址【dì zhǐ】
# Storage Engines
[NDBD]
HostName=192.168.0.1 #MySQL集群Server1的【de】🌸IP地址【dì zhǐ】
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 #MySQL集群Server2的【de】🌸IP地址【dì zhǐ】
DataDir=/var/lib/mysql-cluster
# 以下📊2个[MYSQLD]可以填【kě yǐ tián】👊写🐵Server1和🤗Server2的主机【de zhǔ jī】🐼名。
# 但为了【dàn wéi le】能够更快的【de】更🎑换集群【huàn jí qún】中的【zhōng de】🌸服务器🎒,推荐留空,否则更【fǒu zé gèng】🌮换服务器🎒后必须【hòu bì xū】对这个配置进行更改。
[MYSQLD]
[MYSQLD]
保存退❇出后【chū hòu】,启动管【qǐ dòng guǎn】🉑理节点服务器Server3:
# ndb_mgmd
启动管【qǐ dòng guǎn】理节【lǐ jiē】🏇点后应该【gāi】🕵注意【zhù yì】🍠,这只是管理节【lǐ jiē】🏇点服务,并不是管理终【guǎn lǐ zhōng】端☔。因而你看不到🤛任何关于启动【yú qǐ dòng】后的输出信息。
四🌧、配置集群服务🉑器并启【qì bìng qǐ】动【dòng】🔦MySQL
=============================
在Server1和Server2中都需要进行【yào jìn háng】如下改【rú xià gǎi】动【dòng】🔦:
# vi /etc/my.cnf
[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3 #Server3的【de】🌉IP地址【dì zhǐ】🍆
[mysql_cluster]
ndb-connectstring=192.168.0.3 #Server3的【de】🌉IP地址【dì zhǐ】🍆
保存退【bǎo cún tuì】出后🚓,建立数【jiàn lì shù】据目录并启动🐹MySQL:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd –initial
注意【zhù yì】,执行此【zhí háng cǐ】步时可【bù shí kě】💮能会报【néng huì bào】🤣错,一般都是关天配置文件里面log-bin,server-id这些选项的🛳,可以在/etc/my.cnf里面把【lǐ miàn bǎ】这些相【zhè xiē xiàng】关的项🚸注释掉🥍即可🛅。
# /etc/rc.d/init.d/mysqld start
可以把/usr/local/mysql/bin/ndbd加到/etc/rc.local中实现开机启💁动【dòng】➰。
注意:只有在【zhī yǒu zài】😑第一次【dì yī cì】启动【dòng】➰ndbd时或者【shí huò zhě】🚲对Server3的【de】config.ini进行改动【dòng】➰后才需要使用【yào shǐ yòng】⬆–initial参数🏝!
五、检查工作状态
================
回到管理节点服务器👫Server3上【shàng】😤,并启动【bìng qǐ dòng】🗃管理终端【duān】:
# /usr/bin/ndb_mgm
键入【jiàn rù】show命令查看当前✝工作状态:(下面是【xià miàn shì】🕕一个状【yī gè zhuàng】态输出示例🍏)
[root@mysql3 root]# /usr/bin/ndb_mgm
– NDB Cluster — Management Client –
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)] 2 node(s)
id=2 @192.168.0.1 (Version: 4.1.9, Nodegroup: 0, Master)
id=3 @192.168.0.2 (Version: 4.1.9, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.0.3 (Version: 4.1.9)
[mysqld(API)] 2 node(s)
id=4 (Version: 4.1.9)
id=5 (Version: 4.1.9)
ndb_mgm>
如果上【rú guǒ shàng】面没有【miàn méi yǒu】👺问题🍟,现在开始测试【shǐ cè shì】❣MySQL:
注意,这篇文档对于MySQL并没有🌆设置【shè zhì】🍙root密码【mì mǎ】🎁,推荐你自己设置【shè zhì】🍙Server1和Server2的MySQL root密码【mì mǎ】🎁。
在Server1中:
# /usr/local/mysql/bin/mysql -u root -p
> use test;
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;
应该可【yīng gāi kě】以看到✴1 row returned信息🦋(返回数【fǎn huí shù】值1)。
如果上述正常,则换到Server2上重复上面的测试【cè shì】🤹,观察效【guān chá xiào】果。如果成【rú guǒ chéng】🕒功【gōng】,则在🚔Server2中执行【zhōng zhí háng】😵INSERT再换回到Server1观察是🐧否工作正常。
如果都【rú guǒ dōu】🔞没有问🥍题【tí】,那么恭喜成功【gōng】!
六【liù】🛷、破坏性测试🐺
==============
将【jiāng】Server1或Server2的网线🧞拔掉【bá diào】,观察另🐪外一台集群服务器工作是否正常🤜(可以使用SELECT查询测【chá xún cè】试🐺)。测试完【cè shì wán】🌠毕后,重新插入网线【rù wǎng xiàn】📀即可【jí kě】。
如果你接触不到物理【dào wù lǐ】😜服务器【fú wù qì】,也就是❣说不能📩拔掉网线【xiàn】🌪,那也可【nà yě kě】以这样测试:
在Server1或【huò】⛳Server2上:
# ps aux | grep ndbd
将会看到所有【dào suǒ yǒu】ndbd进程信【jìn chéng xìn】🤬息🥤:
root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
root 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd
然后杀掉一个ndbd进程以达到破【dá dào pò】坏MySQL集群服🥤务器的【wù qì de】🏵目的【mù de】👄:
# kill -9 5578 5579
之后在【zhī hòu zài】另一台💞集群服🍴务器上【wù qì shàng】使用【shǐ yòng】👆SELECT查询测试。并且在管理节点服务【diǎn fú wù】😪器的【qì de】🛷管理终【guǎn lǐ zhōng】端中执行🏢show命令会看到被【kàn dào bèi】破坏的那台服🤥务器的【qì de】🚿状态。
测试完【cè shì wán】成后,只需要😭重新启动被破【dòng bèi pò】坏服务器的【qì de】🚿ndbd进程即可:
# ndbd
注意【zhù yì】!前面说过了⏰,此时是【cǐ shí shì】不用加–inital参数的🛠!
至此,MySQL集群就配置完成了!
关键词:MySQL
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 0
- 0