Welcome 微信登录

首页 / 数据库 / MySQL / MySQL集群架构及配置过程中出现问题的解决

首先说下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=30Hostname=192.168.1.30Datadir=/usr/local/cluster/ndbddata SQL节点存储数据的路径(系统内必须存在此目录,没有手动建立,权限没关系)[ndbd]nodeid=40Hostname=192.168.1.40Datadir=/usr/local/cluster/ndbddata [mysqld]    不用指定数据存储的位置,因为其只提供mysql服务nodeId=10Hostname=192.168.1.10[mysqld]nodeId=20Hostname=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.iniMySQL Cluster Management Server mysql-5.6.17 ndb-7.3.52014-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 http://www.linuxidc.com/Linux/2014-05/102366.htm《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF http://www.linuxidc.com/Linux/2014-03/98821.htmUbuntu 14.04 LTS 安装 LNMP NginxPHP5 (PHP-FPM)MySQL http://www.linuxidc.com/Linux/2014-05/102351.htmUbuntu 14.04下搭建MySQL主从服务器 http://www.linuxidc.com/Linux/2014-05/101599.htmUbuntu 12.04 LTS 构建高可用分布式 MySQL 集群 http://www.linuxidc.com/Linux/2013-11/93019.htmUbuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb http://www.linuxidc.com/Linux/2013-08/89270.htmMySQL-5.5.38通用二进制安装 http://www.linuxidc.com/Linux/2014-07/104509.htm--------------------------------------分割线 --------------------------------------本文永久更新链接地址