Heim >Datenbank >MySQL-Tutorial >MySQL集群架构及配置过程中出现问题的解决

MySQL集群架构及配置过程中出现问题的解决

WBOY
WBOYOriginal
2016-06-07 16:33:321119Durchsuche

集群的条件就是所有的机器上都要安装MySQL的集群软件,我安装的是MySQL-Cluster-gpl-7.3.5-1.el6.x86_64.rpm-bundle.tar的rpm包,

首先说下MySQL的优缺点

优点

  • 解决单点故障
  • 自动实现数据冗余
  • 缺点就是维护起来太麻烦。

    集群的条件就是所有的机器上都要安装MySQL的集群软件,我安装的是MySQL-Cluster-gpl-7.3.5-1.el6.x86_64.rpm-bundle.tar的rpm包,解包之后所有的软件都要安装。不是源码包安装。如果系统里面安装了mysql-server等数据库服务软件的要自行卸载掉即可。

    MySQL集群中有三种角色,下面是三种角色以及其的作用

    角色

    数据节点:ndbd节点 存储在表里的数据(表中的记录)

    SQL节点:不存储数据,供用户访问和执行SQL操作

    管理节点:用来管理集群,在主机本机启动管理进程的时候,指定使用的配置文件

    接下来就是重点了。集群的配置文件。这个配置文件要自己手动建立的

    首先是管理节点的主配置文件,这个主配置文件首先要以.ini结尾的文件,我存放的目录放在/etc/mysql-cluster.ini之中,其就是我的管理节点的配置文件。

    格式:

    标签:下面[]中括号内的就是标签。

    [ndbd default] 指定数据节点的公共配置,对所有节点都适用的。

    [ndb_mgmd] 指定管理节点的配置

    [ndbd] 指定数据节点的配置

    [mysqld] 指定SQL节点的配置

    注意:此时你有几个节点就要写几次标签,也就是说如果你有2台机器是做SQL节点的,就必须定义2个[mysqld]标签。数据节点亦是如此。下面是我自己的配置。

     

     

    [ndbd default]

    NoOfReplicas=2  一份数据备份几份,一般情况下和数据节点个数相同

    DataMemory=80M  用多来物理内存来保存执行的SQL语句和执行结果

    IndexMemory=18M 用多来物理内存来保存执行的索引字段语句和执行结果

     

     

    [ndb_mgmd]

    nodeid=1    (同一个网络内id号不能重复,必须唯一。一般情况下可以设置成本机ip地址的主机位,但是在RedHat6中,好像nodeid不能超过50的。)

    hostname=192.168.1.1    管理主机的ip地址

    datadir=/usr/local/cluster/ndbddata管理集群时收集的集群信息的存放路径

    (系统内必须存在此目录,没有手动建立,权限没关系)

     

    [ndbd]

    nodeid=30

    Hostname=192.168.1.30

    Datadir=/usr/local/cluster/ndbddata SQL节点存储数据的路径

    (系统内必须存在此目录,没有手动建立,权限没关系)

    [ndbd]

    nodeid=40

    Hostname=192.168.1.40

    Datadir=/usr/local/cluster/ndbddata

     

    [mysqld]    不用指定数据存储的位置,因为其只提供mysql服务

    nodeId=10

    Hostname=192.168.1.10

    [mysqld]

    nodeId=20

    Hostname=192.168.1.20

    注:千万不要忘记上面写的目录,等下用到的。我们把主配置文件写好了,然后就去创建我们的datadir吧。千万不要忘记。

    配置数据节点:

    手写配置文件(所有的数据节点都需要配置,可以复制一份到其他数据节点上去然后修改即可)

    其配置文件和mysql-server的配置文件同名,即my.cnf,注意把mysql-server的配置文件mv走或者改名

    [mysqld]

    datadir=/usr/local/cluster/ndbdata //此目录必须和管理配置文件中指定的目录一致,没有手动建立

    ndb-connectstring=192.168.1.1    指向由谁管理我的主机的ip地址

    ndbcluster  运行的是什么存储引擎

    [mysql_cluster]指定的是谁来管理集群

    ndb-connectstring=192.168.1.1 管理集群的主机

    配置sql节点:

    编写配置文件

    vim  /etc/my.cnf 也是需要手动建立的配置文件

    [mysqld]

    ndbcluster  

    default-storage-engin=ndbcluster 指定使用的数据库存储引擎

    [mysql_cluster]指定的是谁来管理集群

    ndb-connectstring=192.168.1.1

    到此,所有集群的计算机配置完毕,接下来我们就可以启动服务了。

    启动集群的顺序:

       先启动管理节点的进程

       ndb_mgmd -f /管理主配置文件的路径  ,其使用的是本机的1186端口,在命令行下进行输入

       进入集群管理

       ndb_mgm    在命令行下进行输入

       ndb_mgm>show查看信息

    启动数据节点的数据进程

       ndbd

       启动sql节点的数据库服务

       service mysql start和原来启动数据库服务器一样

    安全关闭集群服务

     要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:

      [ndb_mgmd]root# /usr/local/mysql/ndb_mgm -e shutdown

      运行以下命令关闭SQL节点的mysqld服务:

      [ndb_mgmd]root# /usr/local/mysql/bin/mysqladmin -uroot shutdown

       停止ndbd的时候通过kill -9 进程号来停止

    总结:在搭建的过程中,出现了很多的小问题,只要大家细心下就可以避免,比方说我在配置的时候遇到的问题。

    第一个问题:管理节点的服务启动不了

    ndb_mgmd -f /etc/mysql-cluster.ini

    [root@localhost data]# ndb_mgmd -f /etc/mysql-cluster.ini

    MySQL Cluster Management Server mysql-5.6.17 ndb-7.3.5

    2014-05-13 03:23:47 [MgmtSrvr] ERROR    -- Directory '/usr/local/cluster/ndbdata' specified with DataDir in configuration does not exist.

    刚开始我以为ndbdata是个文件,,目录只建到cluster,所有就报错,看了配置文件没有问题,后来找就发现了ndbdata也是一个目录。这是一点需要注意的,而且此目录要和主配置文件中定义的datadir一致。

    第二个问题:ndbd启动不了,报错的文件就是说和管理节点联系不上,后来去看ndbd节点上的配置文件,发现指定谁管理我的集群的时候少了一个cluster,即正确的是[mysql_cluster]而我写成了[mysqld],就启动不了。改正确即可

    配置集群服务器不容易出错,只要自己够细心,完全能够一次性配置成功。之后就是调优的问题了,各位可以依据各自的环境进行调优。

    --------------------------------------分割线 --------------------------------------

    Ubuntu 14.04下安装MySQL

    《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF

    Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

    Ubuntu 14.04下搭建MySQL主从服务器

    Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

    Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb

    MySQL-5.5.38通用二进制安装

    --------------------------------------分割线 --------------------------------------

    本文永久更新链接地址:

    Stellungnahme:
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn