mysql集群配置文档.docx
《mysql集群配置文档.docx》由会员分享,可在线阅读,更多相关《mysql集群配置文档.docx(9页珍藏版)》请在冰豆网上搜索。
![mysql集群配置文档.docx](https://file1.bdocx.com/fileroot1/2022-12/16/f8fadf79-228a-4407-ae71-67798652fb37/f8fadf79-228a-4407-ae71-67798652fb371.gif)
mysql集群配置文档
MySQLClusterInstallation
一、介绍
如何安装配置基于2台服务器的MySQL集群。
并且实现任意一台服务器出现问题或宕机时MySql集群依然能够继续运行。
可以实现Mysql双机的高可用及负载均衡。
安装环境及软件包:
RedHatEnterpriseLinux4RPM(x86)
Server
6.3.20
19.4M
Pickamirror
MD5:
f65b8effac15c290c850ae1204442e4b
Client
6.3.20
7.0M
Pickamirror
MD5:
460945780aab679aafd9eec51b9d0447
Clusterstorageengine
6.3.20
1.6M
Pickamirror
MD5:
370121daafe8f5b8fcc04a56d069e8a4
Clusterstorageenginemanagement
6.3.20
1.1M
Pickamirror
MD5:
484c42ebe14e31efda62501a4e2d3cb6
Clusterstorageenginebasictools
6.3.20
8.0M
Pickamirror
MD5:
d291e63d36ad7b10cbbad505f1ce65ad
Clusterstorageengineextratools
6.3.20
3.9M
Pickamirror
Server1:
192.168.24.21
Server2:
192.168.24.22
二、在Server1和Server2上安装MySQL
以下步骤需要在Server1和Server2上各做一次
卸载老版本:
#rpm–qa|grepmysql-------------------------------检查是否已经安装过mysql,如果装过先将以前的版本卸载掉
如上图所示需要先把mysqlclient10-3.23.58-4.RHEL4.1进行卸载:
#rpm–emysqlclient10-3.23.58-4.RHEL4.1
进入下载的文件所在的目录,依次运行以下命令:
#rpm–ivhMySQL-Cluster-gpl-server-6.3.20-0.rhel4.i386.rpm
#rpm–ivhMySQL-Cluster-gpl-client-6.3.20-0.rhel4.i386.rpm
#rpm–ivhMySQL-Cluster-gpl-storage-6.3.20-0.rhel4.i386.rpm
#rpm–ivhMySQL-Cluster-gpl-management-6.3.20-0.rhel4.i386.rpm
#rpm–ivhMySQL-Cluster-gpl-tools-6.3.20-0.rhel4.i386.rpm
#rpm–ivhMySQL-Cluster-gpl-extra-6.3.20-0.rhel4.i386.rpm
#ln-s/usr/libexec/ndbd/usr/bin
#ln-s/usr/libexec/ndb_mgmd/usr/bin
#ln-s/usr/libexec/ndb_cpcd/usr/bin
#ln-s/usr/libexec/mysqld/usr/bin
#ln-s/usr/libexec/mysqlmanager/usr/bin
#mysql_install_db--user=mysql
三、安装并配置节点
以下步骤需要在Server1和Server2上各做一次
1.配置管理节点配置文件:
#mkdir/var/lib/mysql-cluster
#cd/var/lib/mysql-cluster
#viconfig.ini
在config.ini中添加如下内容:
[ndbddefault]
NoOfReplicas=2
MaxNoOfConcurrentOperations=10000
DataMemory=80M
IndexMemory=24M
TimeBetweenWatchDogCheck=30000
DataDir=/var/lib/mysql-cluster
MaxNoOfOrderedIndexes=512
StartPartialTimeout=100
StartPartitionedTimeout=100
ArbitrationTimeout=5000
TransactionDeadlockDetectionTimeout=5000
HeartbeatIntervalDbDb=5000
StopOnError=0
[ndb_mgmddefault]
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName=192.168.24.21
[ndb_mgmd]
Id=2
HostName=192.168.24.22
[ndbd]
Id=3
HostName=192.168.24.21
[ndbd]
Id=4
HostName=192.168.24.22
[mysqld]
ArbitrationRank=2(非常重要,全靠有它,才可以形成仲裁竞争,从而当另一个机子当了时,此机还可以有知道partion完整的节点)
[mysqld]
ArbitrationRank=2
[tcpdefault]
PortNumber=63132
2.配置通用f文件,mysqld及ndbd,ndb_mgmd均使用此文件.
#vi/etc/f
在f中添加如下内容:
[mysqld]
default-storage-engine=ndbcluster 避免在sql语句中还要加入ENGINE=NDBCLUSTER。
ndbcluster这个要加上,否则mysql会启动不了
ndb-connectstring=192.168.24.21,192.168.24.22
[ndbd]
connect-string=192.168.24.21,192.168.24.22
[ndb_mgm]
connect-string=192.168.24.21,192.168.24.22
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring=192.168.24.21,192.168.24.22
保存退出后。
3.分别启动Server1、Server2的mysql服务:
#servicemysqlstart
启动mysql之前一定要先保证ndbd和ndb_mgmd没有启动,否则会导致mysql启动不了
4.启动管理节点Server1为:
#ndb_mgmd--ndb_nodeid=1
启动管理节点Server2为:
#ndb_mgmd--ndb_nodeid=2
注:
在启动时有一个警告提示
Clusterconfigurationwarning:
arbitratorwithid1anddbnodewithid3onsamehost192.168.24.21
arbitratorwithid2anddbnodewithid4onsamehost192.168.24.22
Runningarbitratoronthesamehostasadatabasenodemay
causecompleteclustershutdownincaseofhostfailure.
说节点1和3,2和4的arbitrator一样,可能引起整个集群失败。
(可以不用放在心上)
5.自动重起功能的添加:
chkconfig--addmysql
chkconfig–level345mysqlon
[root@mysql1mysql]# vi/etc/rc.local后添加如下一行
/usr/local/mysql/bin/ndb_mgmd-f/var/lib/mysql-cluster/config.ini
四、初始化集群
在Server1中
#ndbd--nodeid=3--initial
在Server2中
#ndbd--nodeid=4--iniitial
注:
只有在第一次启动ndbd时或者对config.ini进行改动后才需要使用--initial参数!
五、检查工作状态
在任意一台机子上启动管理终端:
#ndb_mgm
键入show命令查看当前工作状态:
(下面是一个状态输出示例)
--NDBCluster--ManagementClient--
ndb_mgm>show
ConnectedtoManagementServerat:
192.168.24.21:
1186
ClusterConfiguration
---------------------
[ndbd(NDB)] 2node(s)
id=3 @192.168..24.21(Version:
5.2.3,Nodegroup:
0,Master)
id=4 @192.168.24.22(Version:
5.2.3,Nodegroup:
0)
[ndb_mgmd(MGM)]2node(s)
id=1 @192.168.24.21(Version:
5.2.3)
id=2 @192.168.24.22(Version:
5.2.3)
[mysqld(API)] 2node(s)
id=5(notconnected,acceptingconnectfromanyhost)
id=6(notconnected,acceptingconnectfromanyhost)
ndb_mgm>
如果上面没有问题,现在开始加入mysqld(API):
注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQLroot密码。
在Server1中:
#mysqld_safe--ndb_nodeid=5--user=mysql&
在Server2中:
#mysqld_safe--ndb_nodeid=6--user=mysql&
#ndb_mgm-eshow
信息如下:
ConnectedtoManagementServerat:
192.168.1.111:
1186
ClusterConfiguration
---------------------
[ndbd(NDB)] 2node(s)
id=3 @192.168.1.111 (Version:
5.2.3,Nodegroup:
0,Master)
id=4 @192.168.1.110 (Version:
5.2.3,Nodegroup:
0)
[ndb_mgmd(MGM)]2node(s)
id=1 @192.168.1.111 (Version:
5.2.3)
id=2 @192.168.1.110 (Version:
5.2.3)
[mysqld(API)] 4node(s)
id=5 @192.168.1.111 (Version:
5.2.3)
id=6 @192.168.1.110 (Version:
5.2.3)
ok,可以测试了:
在Server1中
#/usr/local/mysql/bin/mysql-uroot-p
>createdatabaseaa;
>useaa;
>CREATETABLEctest(iINT);
>INSERTINTOctest()VALUES
(1);
>SELECT*FROMctest;
应该可以看到1rowreturned信息(返回数值1)。
如果上述正常,则换到Server2,观察效果。
如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。
如果都没有问题,那么恭喜成功!
六、破坏性测试
将Server1或Server2的网线拔掉(即ifconfigeth0down),观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。
测试完毕后,重新插入网线即可。
注意:
在未对集群做任何读写操作前,此测试结果无效,因为,集群初始后只在/var/lib/mysql-cluster/下建了几个空目录,还没有正常协同工作,会出现整个所有存储(ndbd)节点关闭.
也可以这样测试:
在Server1或Server2上:
#psaux|grepndbd
将会看到所有ndbd进程信息:
root 5578 0.0 0.3 62201964?
S 03:
14 0:
00ndbd
root 5579 0.020.4492072102828?
R 03:
14 0:
04ndbd
root 23532 0.0 0.1 3680 684pts/1 S 07:
59 0:
00grepndbd
然后杀掉一个ndbd进程以达到破坏MySQL集群服务器的目的:
#kill-955785579
之后在另一台集群服务器上使用SELECT查询测试。
并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。
测试完成后,只需要重新启动被破坏服务器的ndbd进程即可:
#ndbd--ndb_nodeid=此存储节点的id
注意!
前面说过了,此时是不用加--inital参数的!
至此,MySQL双机集群就配置完成了!
七、正确的安装log(提供参考)
[root@CT151tmp]#rpm-ivhMySQL-Cluster-gpl-server-6.3.20-0.rhel4.i386.rpm
warning:
MySQL-Cluster-gpl-server-6.3.20-0.rhel4.i386.rpm:
V3DSAsignature:
NOKEY,keyID5072e1f5
Preparing...###########################################[100%]
1:
MySQL-Cluster-gpl-serve###########################################[100%]
PLEASEREMEMBERTOSETAPASSWORDFORTHEMySQLrootUSER!
Todoso,starttheserver,thenissuethefollowingcommands:
/usr/bin/mysqladmin-urootpassword'new-password'
/usr/bin/mysqladmin-uroot-hCT151password'new-password'
Alternativelyyoucanrun:
/usr/bin/mysql_secure_installation
whichwillalsogiveyoutheoptionofremovingthetest
databasesandanonymoususercreatedbydefault.Thisis
stronglyrecommendedforproductionservers.
Seethemanualformoreinstructions.
Pleasereportanyproblemswiththe/usr/bin/mysqlbugscript!
ThelatestinformationaboutMySQLisavailableat
SupportMySQLbybuyingsupport/licensesfrom
NotesregardingSELinuxonthisplatform:
=========================================
Thedefaultpolicymightcauseserverstartuptofailbecauseitis
notallowedtoaccesscriticalfiles.Inthiscase,pleaseupdate
yourinstallation.
ThedefaultpolicymightalsocauseinavailabilityofSSLrelated
featuresbecausetheserverisnotallowedtoaccess/dev/random
and/dev/urandom.Ifthisisaproblem,pleasedothefollowing:
1)installselinux-policy-targeted-sourcesfromyourOSvendor
2)addthefollowingtwolinesto/etc/selinux/targeted/src/policy/domains/program/mysqld.te:
allowmysqld_trandom_device_t:
chr_fileread;
allowmysqld_turandom_device_t:
chr_fileread;
3)cdto/etc/selinux/targeted/src/policyandissuethefollowingcommand:
makeload
[root@CT151tmp]#rpm-ivhMySQL-Cluster-gpl-client-6.3.20-0.rhel4.i386.rpm
warning:
MySQL-Cluster-gpl-client-6.3.20-0.rhel4.i386.rpm:
V3DSAsignature:
NOKEY,keyID5072e1f5
Preparing...###########################################[100%]
1:
MySQL-Cluster-gpl-clien###########################################[100%]
[root@CT151tmp]#rpm-ivhMySQL-Cluster-gpl-storage-6.3.20-0.rhel4.i386.rpm
warning:
MySQL-Cluster-gpl-storage-6.3.20-0.rhel4.i386.rpm:
V3DSAsignature:
NOKEY,keyID5072e1f5
Preparing...###########################################[100%]
1:
MySQL-Cluster-gpl-stora###########################################[100%]
[root@CT151tmp]#rpm-ivhMySQL-Cluster-gpl-management-6.3.20-0.rhel4.i386.rpm
warning:
MySQL-Cluster-gpl-management-6.3.20-0.rhel4.i386.rpm:
V3DSAsignature:
NOKEY,keyID5072e1f5
Preparing...###########################################[100%]
1:
MySQL-Cluster-gpl-manag###########################################[100%]
[root@CT151tmp]#rpm-ivhMySQL-Cluster-gpl-tools-6.3.20-0.rhel4.i386.rpm
warning:
MySQL-Cluster-gpl-tools-6.3.20-0.rhel4.i386.rpm:
V3DSAsignature:
NOKEY,keyID5072e1f5
Preparing...###########################################[100%]
1:
MySQL-Cluster-gpl-tools###########################################[100%]
[root@CT151tmp]#rpm-ivhMySQL-Cluster-gpl-extra-6.3.20-0.rhel4.i386.rpm
warning:
MySQL-Cluster-gpl-extra-6.3.20-0.rhel4.i386.rpm:
V3DSAsignature:
NOKEY,keyID5072e1f5
Preparing...###########################################[100%]
1:
MySQL-Cluster-gpl-extra###########################################[100%]
[root@CT151tmp]#ln-s/usr/libexec/ndbd/usr/bin
[root@CT151tmp]#ln-s/usr/libexec/ndb_mgmd/usr/bin
[root@CT151tmp]#ln-s/usr/libexec/ndb_cpcd/usr/bin
[root@CT151tmp]#ln-s/us