一、介绍

========

这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。

注意!

虽 然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭。同时需要注意的是并不推荐在 集群启动完成后关闭作为管理节点的服务器。尽管理论上可以建立基于只有2台服务器的MySQL集群,但是这样的架构,一旦一台服务器宕机之后集群就无法继 续正常工作了,这样也就失去了集群的意义了。出于这个原因,就需要有第三台服务器作为管理节点运行。

另外,可能很多朋友都没有3台服务器的实际环境,可以考虑在VMWare或其他虚拟机中进行实验。

下面假设这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 和Server2作为实际配置MySQL集群的服务器。对于作为管理节点的Server3则要求较低,只需对Server3的系统进行很小的调整并且无需 安装MySQL,Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其他服务。

二、在Server1和Server2上安装MySQL

=================================

http://www.mysql.com上下载mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

注意:必须是max版本的MySQL,Standard版本不支持集群部署!

以下步骤需要在Server1和Server2上各做一次

# 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/mysql.server /etc/rc.d/init.d/mysqld

# chmod +x /etc/rc.d/init.d/mysqld

# chkconfig --add mysqld

此时不要启动MySQL!

三、安装并配置管理节点服务器(Server3)

=====================================

作为管理节点服务器,Server3需要ndb_mgm和ndb_mgmd两个文件:

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

现在开始为这台管理节点服务器建立配置文件:

# 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的IP地址

# Storage Engines

[NDBD]

HostName=192.168.0.1 #MySQL集群Server1的IP地址

DataDir= /var/lib/mysql-cluster

[NDBD]

HostName=192.168.0.2 #MySQL集群Server2的IP地址

DataDir=/var/lib/mysql-cluster

# 以下2个[MYSQLD]可以填写Server1和Server2的主机名。

# 但为了能够更快的更换集群中的服务器,推荐留空,否则更换服务器后必须对这个配置进行更改。

[MYSQLD]

[MYSQLD]

保存退出后,启动管理节点服务器Server3:

# ndb_mgmd

启动管理节点后应该注意,这只是管理节点服务,并不是管理终端。因而你看不到任何关于启动后的输出信息。

四、配置集群服务器并启动MySQL

=============================

在Server1和Server2中都需要进行如下改动:

# vi /etc/my.cnf

[mysqld]

ndbcluster

ndb-connectstring=192.168.0.3 #Server3的IP地址

[mysql_cluster]

ndb-connectstring=192.168.0.3 #Server3的IP地址

保存退出后,建立数据目录并启动MySQL:

# mkdir /var/lib/mysql-cluster

# cd /var/lib/mysql-cluster

# /usr/local/mysql/bin/ndbd --initial

# /etc/rc.d/init.d/mysqld start

可以把/usr/local/mysql/bin/ndbd加到/etc/rc.local中实现开机启动。

注意:只有在第一次启动ndbd时或者对Server3的config.ini进行改动后才需要使用--initial参数!

五、检查工作状态

================

回到管理节点服务器Server3上,并启动管理终端:

# /usr/bin/ndb_mgm

键入show命令查看当前工作状态:(下面是一个状态输出示例)

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

如果上面没有问题,现在开始测试MySQL:

注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。

在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;

应该可以看到1 row returned信息(返回数值1)。

如果上述正常,则换到Server2上重复上面的测试,观察效果。如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。

如果都没有问题,那么恭喜成功!

六、破坏性测试

==============

将Server1或Server2的网线拔掉,观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。

如果你接触不到物理服务器,也就是说不能拔掉网线,那也可以这样测试:

在Server1或Server2上:

# ps aux | grep ndbd

将会看到所有ndbd进程信息:

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进程以达到破坏MySQL集群服务器的目的:

# kill -9 5578 5579

之后在另一台集群服务器上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。

测试完成后,只需要重新启动被破坏服务器的ndbd进程即可:

# ndbd

注意!前面说过了,此时是不用加--inital参数的!

至此,MySQL集群就配置完成了!

Linux环境MySQL集群配置的更多相关文章

  1. (Linux环境Kafka集群安装配置及常用命令

    Linux环境Kafka集群安装配置及常用命令 Kafka 消息队列内部实现原理 Kafka架构 一.下载Kafka安装包 二.Kafka安装包的解压 三.设置环境变量 四.配置kafka文件 4.1 ...

  2. Linux环境redis集群搭建

    集群后tomcat context.xml的配置 <!-- 集群配置--> <Valve className="com.radiadesign.catalina.sessi ...

  3. Openstack的HA解决方案【mysql集群配置】

    使用mysql的galera做多主集群配置,galera的集群优势网络上面有对比,这里不在叙述. 1. 新建3台虚拟机(centos6.5) node1:172.17.44.163 node2:172 ...

  4. Linux+Apache+Tomcat集群配置

    参考: http://blog.csdn.net/bluishglc/article/details/6867358# http://andashu.blog.51cto.com/8673810/13 ...

  5. (1)Consul在linux环境的集群部署

    1.Consul概念 1.1什么是Consul? Consul是一种服务网格解决方案,是HashiCorp公司推出的开源组件,由Go语言开发,部署起来很容易,只需要极少的可执行程序和配置.同时Cons ...

  6. linux搭建mysql集群

    一.公共配置 请在三个虚拟机上分别配置此处的配置项. 1. 安装虚拟机 虚拟机操作系统安装CentOS 6.5的x86_64版本. 2. 拷贝mysql cluster 下载以下版本的MySQL-Cl ...

  7. Linux之redis-cluster(集群配置)

    redis-cluster配置   为什么要用redis-cluster 1.并发问题 redis官方声称可以达到 10万/每秒,每秒执行10万条命令假如业务需要每秒100万的命令执行呢? 2.数据量 ...

  8. LINUX学习-Mysql集群-主从服务器备份

    一.Mysql主从集群备份. 1.准备两台主机 主服务器:192.168.88.20和从服务器:192.168.88.30 2.分别安装mysql yum -y -install mysql mysq ...

  9. MySql 集群配置

    MYSQL CLUSTER方案介绍 本文的大致框架来自罗志威.黄川的报告, 在它的基础上进行简化和修改一些bug并且添加了主从复制的章节,最后做出该文档 MySQL Cluster 是MySQL适合于 ...

随机推荐

  1. Hadoop案例(四)倒排索引(多job串联)与全局计数器

    一. 倒排索引(多job串联) 1. 需求分析 有大量的文本(文档.网页),需要建立搜索索引 xyg pingping xyg ss xyg ss a.txt xyg pingping xyg pin ...

  2. 【LOJ】#2349. 「JOI 2017/2018 决赛」团子制作

    题解 有意思的一个dp,我们对G计数,发现如果不在同一条对角线上的G肯定不会互相影响,所以我们对于每一条对角线dp dp的方式是枚举这个G以什么方式放,横着还是竖着,还是不放 代码 #include ...

  3. CentOS7.6安装AMD显卡驱动

    1.检查自己的显卡类型[root@localhost amdgpu-pro-18.50-708488-rhel-7.6]# lspci | grep -i vga03:00.0 VGA compati ...

  4. 安装Caffe时出现的错误

    一.error MSB3073类错误 一般是由于CommonSettings.props配置出现错误. 第一处是你安装CUDA的版本号,第二次是你安装cudnn的路径. 也可参照http://blog ...

  5. Python教程(一)Python简介

    Python就为我们提供了非常完善的基础代码库,覆盖了网络.文件.GUI.数据库.文本等大量内容,被形象地称作“内置电池(batteries included)”.用Python开发,许多功能不必从零 ...

  6. ffmpeg 编译graph2dot

    cd ffmpeg ./configure make make tools/graph2dot

  7. 【C#】实现INotifyPropertyChanged的3种方法

    class StudentItemViewModel:INotifyPropertyChanged { public event PropertyChangedEventHandler Propert ...

  8. 洛谷P1403 [AHOI2005] 约数研究 [数论分块]

    题目传送门 约数研究 题目描述 科学家们在Samuel星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机“Samuel II”的长时间运算成为了可能.由于在去年一年的辛苦工作取得了不错的成绩, ...

  9. C++ string to char *

    半伪代码: void main { string line; getline(ifs, line); replace(line.begin(), line.end(), ',', '\n'); rep ...

  10. snort安装--daq,dnet---ERROR! dnet header not found, go get it from...等错误解决方案

    snort源码安装过程中,需要安装daq,dnet.这里想说下如何进行安装.daq简单,源码下载直接安装就可以.dnet在安装过程中,出错后总想着在网上搜一搜,结果很失望..本篇记录的不仅仅是解决安装 ...