`
zhang_ly520
  • 浏览: 159000 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql集群配置

阅读更多

1.   概述

MySQL Cluster是一种技术,该技术允许在无共享的系统中部署内存中数据库的簇。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。

MySQL Cluster将标准的MySQL服务器与名为NDB内存中簇式存储引擎集成了起来。在我们的文档中,术语NDB指的是与存储引擎相关的设置部分,而术语MySQL Cluster指的是MySQLNDB存储引擎的组合。

MySQL Cluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB簇的数据节点,管理服务器,以及(可能)专门的数据访问程序。关于簇中这些组件的关系,请参见下图:

 

2.   名词解释

NDB是一种内存中存储引擎,它具有可用性高和数据一致性好的特点。

管理(MGM)节点这类节点的作用是管理MySQL簇内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令ndb_mgmd启动的。

数据节点:这类节点用于保存簇的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。没有必要有一个以上的副本。数据节点是用命令ndbd启动的。

SQL节点:这是用来访问簇数据的节点。对于MySQL簇,客户端节点是使用NDB簇存储引擎的传统MySQL服务器。典型情况下,SQL节点是使用命令mysqld –ndbcluster启动的,或将ndbcluster添加到my.cnf后使用mysqld启动。

标准MySQL客户端:对于MySQL簇,它们与标准的(非簇类)MySQL没有区别。换句话讲,能够从用PHPPerlCC++JavaPythonRuby等编写的现有MySQL应用程序访问MySQL簇。

管理客户端:这类客户端与管理服务器相连,并提供了优雅地启动和停止节点、启动和停止消息跟踪(仅对调试版本)、显示节点版本和状态、启动和停止备份等的命令。 

3.   服务器环境

节点

IP地址

管理(MGM)节点

192.168.0.207

MySQL服务器(SQL)节点1

192.168.0.199

MySQL服务器(SQL)节点2

192.168.0.203

数据(NDBD)节点"A"

192.168.0.204

数据(NDBD)节点"B"

192.168.0.205

由一台机器上的vmware提供的5台系统为redhat5 linux的虚拟机(主机环境2003)。

4.   Mysql Cluster的简单实例

4.1. 文件的准备

4.1.1.    Mysql数据库

mysql-cluster-gpl-6.3.20-linux-i686-glibc23.tar.gz 多数文档都说下载MySQL-max,但是在超过5.1版本中只提供了mysql-cluster 效果应该一样。

 

4.2. Mysql Cluster的安装

4.2.1.    数据节点和数据节点的安装

安装方法和安装普通的mysql数据库二进制包相同。如果遇到已经安装有数据库的机器进行卸载。方法见mysql的卸载。

1)        检查你的/etc/passwd/etc/group文件(或使用操作系统提供的用于管理用户和组的工具),查看在系统上是否已存在mysql组和mysql用户,这是因为某些操作系统会将其作为安装进程的一部分予以创建。如果它们不存在,创建新的mysql用户组,然后为该组添加1mysql用户。

2)        groupadd mysql

3)        useradd -g mysql mysql

4)        进入包含下载文件的目录,解包档案文件,并创建与mysql-max可执行文件的symlink。注意,根据MySQL的版本号,实际的文件名和目录名会有所不同:

a)         cd /var/tmp

b)        tar -xzvf -C /usr/local/bin mysql-max-5.1.2-alpha-pc-linux-gnu-i686.tar.gz

c)        ln -s /usr/local/bin/mysql-max-5.1.2-alpha-pc-linux-gnu-i686 mysql

5)        进入mysql目录,运行所提供的用于创建系统数据库的脚本:

a)         cd mysql

b)        scripts/mysql_install_db --user=mysql

6)        MySQL服务器和数据目录设置必要的权限:

a)         chown -R root .     (注意“.”符号)

b)        chown -R mysql data    (在每台运行数据节点的机器上,数据目录是/usr/local/mysql/data。配置管理节点时将用到这类信息)

c)        chgrp -R mysql .    (注意“.”符号)

7)        MySQL启动脚本拷贝到恰当的目录下,使之成为可执行的脚本,并设置它以便在启动操作系统时启动:

a)         cp support-files/mysql.server /etc/rc.d/init.d/

b)        chmod +x /etc/rc.d/init.d/mysql.server

c)        chkconfig --add mysql.server

8)        bin/mysqladmin -u root -p password    修改root密码。

9)         /usr/local/mysql/bin/mysqld_safe --user=mysql& 启动数据库,重启自动启动(如出现 Starting mysqld daemon with databases from /usr/local/mysql/data代表正常启动mysql服务了, Ctrl + C 跳出)

10)     /usr/local/mysql/bin/mysql -u root –p 登陆数据库。(测试安装成功否)

11)     在其他存储节点和sql节点上重复上述操作

4.2.2.    管理节点的安装

对于MGM(管理)节点,不需要安装mysqld可执行文件,仅需安装用于MGM服务器和客户端的二进制文件,这类文件可在下载的-max档案中找到。再次假定你将该文件放在了/var/tmp目录下,引导系统时(也就是说使用sudo, su root或系统的等效命令后,假定具有系统管理员账户的权限),执行下述步骤,在簇管理节点主机上安装ndb_mgmdndb_mgm

1)  即如/var/tmp目录,从档案文件中将ndb_mgmndb_mgmd提取到恰当的目录下,如/usr/local/bin

a)         cd /var/tmp

b)        tar -zxvf mysql-max-5.1.2-alpha-pc-linux-gnu-i686.tar.gz /usr/local/bin '*/bin/ndb_mgm*'

2)  进入解包文件所在的目录,然后使这两个文件成为可执行的:

a)         cd /usr/local/bin

b)        chmod +x ndb_mgm*

4.3. 节点的配置

4.3.1.    配置存储节点和SQL节点

1)      数据节点所需的my.cnf文件相当简单。配置文件应位于/etc目录下,并能用任何文本编辑器进行编辑(如有必要,创建该文件),例如:

a)         vi /etc/my.cnf

2)      对于本示例中的每个数据节点和SQL节点,my.cnf文件类似于:

[MYSQLD]                       

ndbcluster                      # run NDB engine

ndb-connectstring=192.168.0.207 # location of MGM node

[MYSQL_CLUSTER]                

ndb-connectstring=192.168.0.207  # location of MGM node

3)      在其他存储节点和sql节点上重复上述操作。

4.3.2.    配置管理节点

1)  配置MGM节点的第一步是创建目录,该目录用于存放配置文件,然后创建配置文件本身。例如(以根用户身份运行):

a)         mkdir /var/lib/mysql-cluster

b)        cd /var/lib/mysql-cluster

c)        vi config.ini

2)  对于我们的典型设置,config.ini文件应类似于:

# Options affecting ndbd processes on all data nodes:

[NDBD DEFAULT]

NoOfReplicas=2             # Number of replicas

DataMemory=80M        # How much memory to allocate for data storage

IndexMemory=18M      # How much memory to allocate for index storage

                       # For DataMemory and IndexMemory, we have used the

                       # default values. Since the "world" database takes up

                       # only about 500KB, this should be more than enough for

                       # this example Cluster setup.

# TCP/IP options:

[TCP DEFAULT]

#portnumber=2202       # This the default; however, you can use any

                       # port that is free for all the hosts in cluster

                       # Note: It is recommended beginning with MySQL 5.0 that

                       # you do not specify the portnumber at all and simply allow

                       # the default value to be used instead

# Management process options:

[NDB_MGMD]

hostname=192.168.0.207                     # Hostname or IP address of MGM node

datadir=/var/lib/mysql-cluster        # Directory for MGM node logfiles

# Options for data node "A":

[NDBD]

# (one [NDBD] section per data node)

hostname=192.168.0.204                     # Hostname or IP address

datadir=/usr/local/mysql/data         # Directory for this data node's datafiles

# Options for data node "B":

[NDBD]

hostname=192.168.0.205                     # Hostname or IP address

datadir=/usr/local/mysql/data       # Directory for this data node's datafiles

 

# SQL node options:

[MYSQLD]

# (additional mysqld connections can be specified for this node for various

hostname=192.168.0.203                     # Hostname or IP address

[MYSQLD]

hostname=192.168.0.199

4.4. Mysql Cluster的启动

1)  在管理主机上,从系统shell发出下述命令以启动MGM节点进程:

a)         ndb_mgmd -f /var/lib/mysql-cluster/config.ini (如果不能直接使用ndb_mgmd请到安装目录下执行此命令)

2)  在每台数据节点主机上,对于首次启动,运行下述命令启动NDBD进程:

a)         ndbd --initial(如果不能直接使用ndb_mgmd请到安装目录下执行此命令)

b)        注意,仅应在首次启动ndbd时,或在备份/恢复或配置变化后重启ndbd时使用“--initial”参数,这很重要。原因在于,该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括恢复用日志文件。

3)  ndb_mgm        进入管理节点客户端。

a)         SHOW    命令可以显示节点运行情况。

Connected to Management Server at: 192.168.0.207:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2    @192.168.0.204  (mysql-5.1.30 ndb-6.3.20, Nodegroup: 0, Master)

id=3    @192.168.0.205  (mysql-5.1.30 ndb-6.3.20, Nodegroup: 0)

 

[ndb_mgmd(MGM)] 1 node(s)

id=1    @192.168.0.207  (mysql-5.1.30 ndb-6.3.20)

 

[mysqld(API)]   2 node(s)

id=4    @192.168.0.203  (mysql-5.1.30 ndb-6.3.20)

id=5    @192.168.0.199  (mysql-5.1.30 ndb-6.3.20)

b)        ctrl+c退出管理节点客户端

4.5. 简单测试实例

1)  登陆任意一个sql节点A.

2)  创建一个表:ENGINE必须为NDB或者NDBCLUSTER

Use test

DROP TABLE IF EXISTS City;

CREATE TABLE City (

ID int(11) NOT NULL auto_increment,

Name char(35) NOT NULL default '',

CountryCode char(3) NOT NULL default '',

District char(20) NOT NULL default '',

Population int(11) NOT NULL default '0',

PRIMARY KEY  (ID)

) ENGINE=NDBCLUSTER;

INSERT INTO City VALUES (1,'Kabul','AFG','Kabol',1780000);

INSERT INTO City VALUES (2,'Qandahar','AFG','Qandahar',237500);

INSERT INTO City VALUES (3,'Herat','AFG','Herat',186800);

 

 

3)  登陆另外一个sql节点B

4)  Use test

Show tables;

5)  可以看到刚才创建的表City。代表配置成功。

4.6. 安全关闭和重启

4.6.1.    关闭

1)        ndb_mgm -e shutdown  该命令将恰当地中止ndb_mgmndb_mgmd以及任何ndbd进程。注意,这里的“-e”选项用于将命令从shell传递到ndb_mgm客户端.

2)        mysqladmin -u root -p shutdown 可中止SQL节点。

4.6.2.    重启

1)  ndb_mgmd -f /var/lib/mysql-cluster/config.ini     

重启cluster. 在管理主机上(本设置中为192.168.0.207

2)  ndbd        在每台数据节点主机上(192.168.0.204192.168.0.205

本文属于参照文档实践总结文章,多数数据来自文档,也包括一些其他文章中参考而来。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics