MySQL 集群的配置(实验:开了四台虚拟机)

领导给派了个安装MySQL集群的活,然后就开始啃文档,啃完之后自己配置,然后一堆的错,没法处理,耽误了好久,弄了两个星期多才弄出来,中间很苦逼,就是Linux很菜的,所以文件权限,iptables,ip地址这些就整疯了哦,但是最终也还是弄出来了,开心到死啊,简单记录一下。

首先上文档:

为集群的每台host下载MySQL集群版本,假定放入到每台机器的/var/tmp目录下。

我们现有四台机器,他们的IP如下:

192.168.13.134-----------安装为管理节点

192.168.13.136-----------安装为SQL节点

192.168.13.129-----------安装为数据节点

192.168.13.132-----------安装为数据节点

  在四台计算机上建立mysql用户:

shell>   groupadd mysql

shell>   useradd -g mysql -s /bin/false mysql

1.安装

1.1安装SQL节点

在被指派为hostSQL节点的每一台机器上,以系统root用户执行下面的步骤:

1.             定位到包含下载文件的路径下,解压文件,然后创建一个名为mysql的象征性连接到这个mysql文件夹。

shell>   cd /var/tmp

shell>   tar -C /usr/local -xzvf mysql-cluster-gpl-7.4.11-linux2.6.tar.gz

shell>   ln -s /usr/local/mysql-cluster-gpl-7.4.11-linux2.6-i686 /usr/local/mysql

2.             定位到mysql目录中,运行创建系统数据库的脚本:

shell>   cd mysql

shell>   scripts/mysql_install_db --user=mysql 

 

3.             MySQL服务和数据目录设置必要的权限:

shell>   chown -R root .

shell>   chown -R mysql data

shell>   chgrp -R mysql .

 

4.             拷贝MySQL启动脚本到合适的目录,使他可执行,并且将它设置为当操作系统启动时MySQL即启动:

shell>   cp support-files/mysql.server /etc/rc.d/init.d/

shell>   chmod +x /etc/rc.d/init.d/mysql.server

shell>   chkconfig --add mysql.server

根绝你的操作系统和版本,这个启动脚本目录可能不同,比如,在一些Linux版本中,这个目录是/etc/init.d

在这里我们使用红帽的chkconfig来创建到启动脚本的连接,在你的平台上只要能达到这个目的,你可以使用任意方式,比如在Debian上使用update-rc.d

之前的步骤必须在SQL节点所在的每一台机器上执行一遍。我们只在192.168.1.101上执行。

1.2安装数据节点

数据节点的安装不需要mysqld程序。只需要MySQL集群数据节点执行的ndbd(单线程)ndbmtd(多线程)守护进程。这些可执行文件也可以在.tar.gz文件中获得。

以系统root账号(也就是,在使用sudosu root或者你的系统的等价命令之后,暂时假定以系统管理源账号的权限)执行下面的步骤 在数据节点的host上安装数据节点复体:

1.         定位到/var/tmp路径下,从压缩文件中抽取ndbdndbmtd到一个合适的路径下,比如/usr/local/bin路径下:

shell>   cd /var/tmp

shell>   tar -zxvf mysql-5.6.29-ndb-7.4.11-linux-i686-glibc23.tar.gz

shell>   cd mysql-5.6.29-ndb-7.4.11-linux-i686-glibc23

shell>   cp bin/ndbd /usr/local/bin/ndbd

shell>   cp bin/ndbmtd /usr/local/bin/ndbmtd

 

2.         定位到你讲文件拷贝进入的目录下,然后使这两者可执行:

shell>   cd /usr/local/bin

shell>   chmod +x ndb*

 

步骤应该在每一台数据host上执行一遍。我们需要在192.168.1.102192.168.1.103上执行。

即使数据节点可执行程序中只需要一个来运行一个MySQL集群节点,我们将如何安装ndbdndbmtd的方式都show给您。即使你只打算使用它们中的一个,我们建议当安装或升级MySQL集群时这样做,因为这将会在你之后从一个改变到另一个时保存时间和问题。

注意:在每个机器中保存数据节点的数据目录在 /usr/local/mysql/data。当配置管理节点时这条信息时必要的。(参见章节18.2.4——“MySQL集群的初始化配置”)。这个目录,没有的话要新建一下,并给mysql用户授权。

 

1.3安装管理节点

管理节点的安装不需要mysqld二进制。只需要MySQL集群管理服务(ndb_mgmd);你大概可能也想安装管理客户端(ndb_mgm).这两个二进制也是在.tar.gz archive那个压缩文件中找。同样的,我们假设你已经将这个文件放在/var/tmp路径下。

以系统root账号,执行下面的步骤来在管理节点主机上安装ndb_mgmdndb_mgm

1.         切换路径到/var/tmp目录下,从压缩文件中抽取ndb_mgm ndb_mgmd到一个合适的路径下,比如  /usr/local/bin下:

shell>   cd /var/tmp

shell>   tar -zxvf mysql-5.6.29-ndb-7.4.11-linux2.6-i686.tar.gz

shell>   cd mysql-5.6.29-ndb-7.4.11-linux2.6-i686

shell>   cp bin/ndb_mgm* /usr/local/bin

 

2.         切换路径到你拷贝进入的那个路径下,然后使这两个文件可执行:

shell>   cd /usr/local/bin

shell>   chmod +x ndb_mgm*

 

2.MySQL集群的初始化配置

对我们的四个节点,四台主机的集群(参看集群节点和host计算机),需要写四个配置文件,每个节点host写一个文件。

每个数据节点或SQL节点需要一个my.cnf文件,该文件提供两条信息:一个连接字符串告诉节点到哪里去找主机节点,一行告诉在这台host(持有数据节点的机器)上的MySQL服务器使NDBCLUSTER存储引擎可用。

管理节点需要一个config.ini文件来告诉它有多少个副本要维持,为每个数据节点上的数据和索引分配多少内存,到哪里去查找数据节点,每个数据节点上的数据存储到磁盘哪里,到哪里去查找SQL节点。

2.1SQL节点和数据节点的配置

配置数据节点和SQL节点。数据节点需要的my.cnf文件相当的简单。配置文件应该位于/etc路径下并且可被使用任何文本编辑器来编辑。(如果文件不存在就创建这个文件。)例如:

shell>vi /etc/my.cnf

在我们的示例建设中,对于每一个数据节点和SQL节点,my.cnf应该看起来像这样:

[mysqld]
# Options for mysqld process:
ndbcluster                      # run NDB storage engine
 
[mysql_cluster]
# Options for MySQL Cluster processes:
ndb-connectstring=192.168.13.134  # location of management server

为数据节点“A”,数据节点“B”,和SQL节点的机器做这些操作。

2.2管理节点的配置

配置管理节点。配置管理节点的第一步就是创建目录,在这个目录中可以找到配置文件,然后创建这个文件,例如(以系统root账号)

shell>mkdir /var/lib/mysql-cluster
shell>cd /var/lib/mysql-cluster
shell>vi config.ini

对于我们的代表性的配置,config.ini文件应该像下面这样:

[ndbd default]
# Options affecting ndbd processes on all data nodes:
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 default]
# TCP/IP options:
portnumber=2202   # This the default; however, you can use any
                  # port that is free for all the hosts in the cluster
                  # Note: It is recommended that you do not specify the port
                  # number at all and simply allow the default value to be used
                  # instead
 
[ndb_mgmd]
# Management process options:
hostname=192.168.13.134          # Hostname or IP address of MGM node
datadir=/var/lib/mysql-cluster  # Directory for MGM node log files
 
[ndbd]
# Options for data node "A":
                                # (one [ndbd] section per data node)
hostname=192.168.13.129           # Hostname or IP address
datadir=/usr/local/mysql/data   # Directory for this data node's data files
 
[ndbd]
# Options for data node "B":
hostname=192.168.13.132          # Hostname or IP address
datadir=/usr/local/mysql/data   # Directory for this data node's data files
 
[mysqld]
# SQL node options:
hostname=192.168.13.136           # Hostname or IP address
                                # (additional mysqld connections can be
                                # specified for this node for various
                                # purposes such as running ndb_restore)
 

 备注:数据目录可以自定义,但是一定要记得给mysql权限啊!!!!!

在所有的配置文件都被创建,这些最基本选项被指明之后,你就准备着手启动集群,验证所有进程都运行。

注意:集群管理节点的默认端口号是1186,数据节点默认端口号是2202(这个2202还是很有用的).然而,集群可以为数据节点从那些尚闲置的端口号中自动分配端口号。

3.MySQL集群的初始化启动

3.1启动管理节点

在管理host,在系统shell执行下面的命令来启动管理节点进程:

shell>   ndb_mgmd -f /var/lib/mysql-cluster/config.ini

首次启动的时候,必须告诉ndb_mgmd到哪里去找他的配置文件,使用-f--config-file选项。

 

3.2启动数据节点

在每一台数据host上,执行下面的命令来启动ndbd进程:

shell> ndbd

3.3启动SQL节点

cd /usr/local/mysql

bin/mysqld_safe  --user=mysql    &

 

如果你已经运行好了,集群已经被正确的建立,你可以通过使用ndb_mgm管理节点来测试。输出结果应该像下面显示的这样,即时你可能在输出中看到一些稍微的不同,这取决于你使用的MySQL的具体版本。

 

类似下面这样。

shell>   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.30  (Version: 5.6.29-ndb-7.4.11, Nodegroup: 0,   *)

id=3    @192.168.0.40  (Version: 5.6.29-ndb-7.4.11, Nodegroup: 0)

 

[ndb_mgmd(MGM)]   1 node(s)

id=1    @192.168.0.10  (Version: 5.6.29-ndb-7.4.11)

 

[mysqld(API)]   1 node(s)

id=4    @192.168.0.20  (Version: 5.6.29-ndb-7.4.11)

这里提到到SQL节点是指mysqldmysqld反映了一个事实:mysqld进程是扮演一个MySQL集群的API节点的角色.

4.问题处理

4.1虚拟机的ip有时候重启后不一样,导致需要重新更改配置文件(正式服务器配置应该不会有这个问题)

解决方法:

1).chkconfig | grep NetworkManager

返回如图所示说明此服务开启,需要将之关闭

2).关闭NetworkManager服务:service NetworkManager stop

3).此时进行检查

发现还是有这个服务,因为NetworkManager是开机启动的,需要关闭开机启动:

4).chkconfig NetworkManager --del 进行删除,再检查

5)重启网络服务:service network restart

可以看到输出中Detemining IP information for eth0...因为此时的IPdhcp分配的,我们需要手工设置一下固定IP

6). vim /etc/sysconfig/network-scripts/ifcfg-eth0

进入编辑,

NM_CONTROLLER改为no,表示网络不受其他软件(NetworkManager)管理,

BOOTPROTOdhcp改为none,表示不由dhcp自动分配IP

然后手工添加本机的IP地址,子网掩码,网关,可参考route -n的列出项设置:

在此我们编辑IPADDR=192.168.13.129

NETMASK=255.255.255.0

GATEWAY=192.168.13.2

然后保存退出

重启网络服务:service network restart

检查能否上网。然后IP地址就固定了。

4.2 在关闭iptables的情况下集群成功,不关闭则无法启动。

解决:启动管理节点,启动数据节点之后,在数据节点host查看端口,发现ndbd启动了端口号为2202tcp服务,  

那我们的数据节点会通过彼此的2202端口连接彼此,并向管理节点发起连接,所以添加一下语句,将规则添加在在管理节点,数据节点的iptables中:

iptables -A INPUT -i eth0 -p tcp --sport 2202 -j ACCEPT

然后发现SQL节点启动后仍连不上,ndb_mgm显示not connected,原因是SQL节点无法访问数据节点,所以添加如下规则:

iptables -I INPUT -i eth0 -p tcp -sport 3306 -J ACCEPT  #允许来源为3306的访问

iptables -I INPUT -i eth0 -p tcp --dport 2202 -j ACCEPT #允许访问本地的2202端口。

4.3文件权限问题

注意mysql的用户权限问题。

4.4调试查看的工具

管理节点上可以通过ndb_mgm -e show来查看各个节点的连接状况,

查看ndb_1_cluster.log查看日志

哦,暂时就这么多吧,一开始是在service ipatbles stop来的情况下建起来的。额,后面学了一点儿Linux搞了搞。


有不对的请高手指教!


转载于:https://my.oschina.net/u/2357650/blog/650002

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值