Java Web分布式集群搭建(一)——Mysql集群

JavaWeb yan loading.. 1评论 已收录

MySQL Cluster 是MySQL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达到99.999%。

MySQL Cluster的特点是在内存中部署服务器的集群,这样的好处是可以免去读写磁盘IO,提高速度。同时也能够使用多种故障切换和负载平衡选项配置NDB存储引擎。

三类节点介绍

管理节点

用于调度、管理整个数据库集群,一般又一台服务器构成。

数据节点

MySQL Cluster的核心,用于存储整个数据内容,日志等。但是由于数据节点间是复制关系,所以当数据节点增加时,集群的处理速度会变慢。

SQL节点(对外入口)

对外部程序呈现出来的数据服务。实际是按照一定算法调用不同数据节点的数据,可以认为是数据和应用直接的桥梁。增加SQL节点可以提高集群的并发速度和整体的吞吐量。

NDB引擎介绍

MySQL Cluster使用的是一个专门的内存存储引擎,叫做NDB引擎。利用内存引擎的好处是免去了磁盘IO,提高了数据的读写速度,但是缺陷就是受内存大小的制约,要划分足够大的内存才可以正常工作。

NDB引擎是一个分布式的,可以部署在多态服务器上,实现数据的可靠性和扩展性。理论上2台NDB的数据节点就可以实现整个数据库集群的冗余性和解决单点故障问题。

缺点:

  1. 受到内存的大小限制,存储大量数据的代价较高
  2. 由于存于内存,突然断电可能会导致数据丢失
  3. 多节点复制,通过网络广播每一个操作,所以受网络制约很大

优点:

  1. 分布式解决方案
  2. 扩展性好,可以随时增加集群
  3. 冗余性好,每个数据节点的数据都一样,可以进行备份

实例——搭建2节点Mysql集群

准备工作

本例主要用到2台Ubuntu服务器来搭建mysql集群:

下载Mysql Cluster

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

(本文全部采用Ubuntu系统为例)

安装工作

主要分为自动安装手动安装两部分。

mysql-cluster的自动安装程序十分方便,简单。但是为了配置的更灵活,笔者更倾向于手动配置。

安装目录:/usr/local/bin

自动安装

执行 bin/ndb_setup.py

注意:打开自动部署系统是在页面上进行部署,如果对于非桌面系统来说,还需要设置两个参数,在远程打开安装页面 bin/ndb_setup.py -N 172.29.131.136 -p 8081如果有防火墙要开启防火墙

之后打开网页:http://172.29.131.136:8081/welcome.html进行配置

1、选择Create New MySQL Cluster进行新安装

2、正常填写名称、IP地址等信息,这里需要注意下:

  • Host list: 全部mysql节点的IP
  • Application area :
    simple testing:只分配很少的内存,因此只能存一点点数据
    Web application:会尽量多分配内存。(具体多少根据下面几页配置决定)
    realtime:在Web application的基础上,缩短心跳的间隔,能更快的发现机器故障。
  • Write load:(写吞吐率)
    low:<100/s
    medium:100-1000/s
    high:>1000/s

因此一般情况下选择Web application 和medium即可

SSH property

用于在多台机器的远程部署时使用,如果像hadoop一样 有免密登陆就不用设置了。否则需要设置下ssh(如果本机部署可以不设置)

本例是在本机部署,所以不用设置了

3、内存配置默认为本机大小。但是若全部分配,可能会导致本机内存不足启动失败。但是如果太少(低于1.8G)可能会存不了什么数据导致报错。

因此建议微微调低点内存

安装地址:/usr/local/bin/mysql/
数据地址:/home/yangengzhe/MySQL_Cluster/

4、配置节点

默认情况下会配置1个管理节点,2个数据节点,2个MySQL节点,另外还有3个API节点(直接用Ndb API连接及ndb工具运行时使用)

本例中配置成:1个管理节点 1个数据节点 1个Mysql节点,1个API节点

5、配置节点信息

主要是配置端口和路径等。除非是占用了端口,否则不用修改。(管理节点的默认端口号是1186,SQL节点使用了3306

管理路径:/home/yangengzhe/MySQL_Cluster/49/
数据路径:/home/yangengzhe/MySQL_Cluster/1/
SQL路径:/home/yangengzhe/MySQL_Cluster/53/
– 端口3306
Socket/home/yangengzhe/MySQL_Cluster/53/mysql.socket

6、部署启动

点击deploy and start cluster等待绿色进度条完成即可

手动配置

配置前工作

1、关闭防火墙、或者允许端口1186 2202 3306等(后期设置中用到的端口)

2、解压到目录/usr/local/mysql

3、创建用到的目录

数据节点A 172.29.131.136
– 管理节点 /usr/local/mysql-gdms/mysqlmgm
– 运行目录和文件目录 /usr/local/mysql-gdms/mysqlmgm/bin/config
– 数据目录 /usr/local/mysql-gdms/mysqlmgm/mgmdata
– 数据节点 /usr/local/mysql-gdms/mysqldata
– 运行目录 /usr/local/mysql-gdms/mysqldata/bin/
– DataDir=/usr/local/mysql-gdms/mysqldata/data1
– BackupDataDir=/usr/local/mysql-gdms/mysqldata/backup1
– SQL节点 /usr/local/mysql-gdms/mysqlapp
– 数据 /usr/local/mysql-gdms/mysqlapp/data
– 日志 /usr/local/mysql-gdms/mysqlapp/log
– Socket /usr/local/mysql-gdms/mysqlapp/socket
– /usr/local/mysql-gdms/mysqlapp/tmp
数据节点B 172.29.131.137
– 数据节点 /usr/local/mysql-gdms/mysqldata
– 运行目录 /usr/local/mysql-gdms/mysqldata/bin/
– DataDir=/usr/local/mysql-gdms/mysqldata/data2
– BackupDataDir=/usr/local/mysql-gdms/mysqldata/backup2
– SQL节点 /usr/local/mysql-gdms/mysqlapp
– 数据 /usr/local/mysql-gdms/mysqlapp/data
– 日志 /usr/local/mysql-gdms/mysqlapp/log
– Socket /usr/local/mysql-gdms/mysqlapp/socket
– /usr/local/mysql-gdms/mysqlapp/tmp

4、配置文件(只有管理节点需要)

这里需要一个配置文件 config.ini (可以利用自动部署系统来生成配置文件,也可以按照下方修改)

配置管理节点

在172.29.131.136配置

配置数据节点

分别在172.29.131.136和172.29.131.137配置

/usr/local/mysql-gdms/mysqldata/bin/ 目录编写配置文件如下:文件命名为 my_data.cnf

同样配置给另一个服务器

配置SQL节点

这个比较复杂,要分别在两台sql节点上执行下面操作:

/usr/local/mysql-gdms/mysqlapp/app/ 目录下创建 my_app.cnf文件

分别继续执行下面操作:

运行各个节点

管理节点

 数据节点

 SQL节点

启动mysql

关闭集群

顺序:

开启: 管理-> 数据 -> SQL

关闭: 管理-> SQL

管理节点

SQL节点

监控集群

管理节点登陆:

 

关注<爱上极客>公众号,定期推送精彩内容!

喜欢 (2)

如未说明则本站原创,转载请注明出处:爱上极客 » Java Web分布式集群搭建(一)——Mysql集群


0
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 没什么好说的,提前祝博主新年快乐!
    挖宝网2016-12-27 10:28 回复