mysql三台机群集_MySQL Cluster 3台机器搭建集群环境

最后还是通过三台机器实现了linux下的mysql集群,这边首先要感谢众多网络上提供帮助教程,虽然有些没有经过实践无法真正达到效果,但是这次给MGM项目的这个开头还是不错。

书归正传,这边用的是vmware workstation来实现的,先装三台linux centos的服务器,最好参考百度知道里面的安装普通database的服务器方法,当中自己来实现交换分区和boot分区还有主分区的划分,这样更好的学习linux的命令和一些常用的操作。接下来和网上的做法差不多,这边关键是my.cnf的配置方法,最后我才发觉这个是我的问题,而且权限表的配置也很重要chown最好对mysql组下的mysql对这个安装路径(/usr/local/mysql/)路径的所有权限进行赋值。

操作系统:

Centos6.0 release 64位

软件包:

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz

数据库管理节点: 10.10.10.201

数据库数据节点: 10.10.10.202,10.10.10.203

数据库sql节点: 10.10.10.202,10.10.10.203

我这里数据节点和sql节点用相同的2台机器承担.

1.管理节点的安装

#groupadd mysql

#useradd mysql -g mysql

#mv

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz /usr/local/

#cd /usr/local/

#tar zxvf

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz

#rm -f

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz

#mv

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64mysql

#chown -R mysql:mysql mysql

#cd mysql

#scripts/mysql_install_db --user=mysql

2.管理节点的配置

#mkdir /var/lib/mysql-cluster

#cd /var/lib/mysql-cluster

#vi config.ini

//这里需要手动添加如下内容

[ndbd default]   NoOfReplicas=2   DataMemory=80M   IndexMemory=18M

//这里有很多参数,大家可以自己找下相关资料

[ndb_mgmd]   Id=1   Hostname=10.10.10.201           //管理节点IP  datadir=/usr/local/mysql/logs

[ndbd]   Id=2   Hostname=10.10.10.202             //数据节点IP      datadir=/usr/local/mysql/data/

//数据节点的数据目录,这里要与数据节点的配置文件my.cnf(其实这边要但是my。cnf里面不用指定也行)

的数据指定相同

[ndbd]   Id=3   Hostname=10.10.10.203            //数据节点IP      datadir=/usr/local/mysql/data/

[MYSQLD]   [MYSQLD]

3.安装和配置数据节点

这里2台机器数据节点安装是相同的.

#groupadd mysql

#useradd mysql -g mysql

#mv

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz /usr/local/

#cd /usr/local/

#tar zxvf

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz

#rm -f

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64.tar.gz

#mv

mysql-cluster-advanced-7.4.6-linux-glibc2.5-x86_64 mysql

#chown -R mysql:mysql mysql

#cd mysql

#scripts/mysql_install_db --user=mysql

#cp support-files/my-medium.cnf /etc/my.cnf

#cp support-files/mysql.server /etc/init.d/mysqld

#vi /etc/my.cnf

//这里需要手动添加如下的内容

[client]

port =3307

[mysqld]

port = 3307

ndbcluster

ndb-connectstring=10.10.10.201

bind-address = 10.10.10.202

[mysql_cluster]

ndb-connectstring=10.10.10.201

这边特别要说的额是设置成3307是必须的,我尝试了很多方法,在ndbd开启后3306就被占用了,

可以使用

netstat -anp | grep "3306" 来找到pid,用kill pid号反而会导致ndbd的集群出问题,所以这里只能指定binding-address和port

4.启动相关服务

在管理节点启动相关服务:

#/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

#netstat -lntpu

tcp        0      0 0.0.0.0:1186            0.0.0.0:*

LISTEN   22907/ndb_mgmd

看到1186端口开放了说明启动是正常的.

在数据节点启动相关服务:

#/usr/local/mysql/bin/ndbd --initial

#netstat -lntpu

tcp        0      0 10.10.1.65:32975            0.0.0.0:*                    LISTEN      1901/ndbd

tcp        0      0 10.10.1.65:32976            0.0.0.0:*                   LISTEN      1901/ndbd

tcp        0      0 10.10.1.65:32977            0.0.0.0:*                   LISTEN      1901/ndbd

#service mysqld start

#netstat -lntpu

tcp        0      0 :::3306                     :::*                        LISTEN      2258/mysqld

可以看到相关的ndbd服务以及mysql已经启动ok了.

5.功能测试

到管理节点查看下相关服务状态

# ndb_mgm

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

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

[ndbd(NDB)]     2 node(s)

id=2    @10.10.1.65  (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)

id=3    @10.10.1.58  (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)

id=1    @10.10.1.151  (mysql-5.1.37 ndb-7.0.8)

[mysqld(API)]   2 node(s)

id=4    @10.10.1.65  (mysql-5.1.37 ndb-7.0.8)

id=5    @10.10.1.58  (mysql-5.1.37 ndb-7.0.8)

可以看到这里的数据节点、管理节点、sql节点都是正常的.

现在我们在其中一个数据节点上进行相关数据库的创建,然后到另外一个数据节点上看看数据是否同步

# /usr/local/mysql/bin/mysql -u root -p

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| ndb_2_fs           |

| test               |

+--------------------+

mysql> create database aa;

mysql> use aa

mysql> CREATE TABLE ctest2 (i INT) ENGINE=NDB;

//这里必须指定数据库表的引擎为NDB,否则同

步失败

mysql> INSERT INTO ctest2 () VALUES (1);

mysql> SELECT * FROM ctest2;

+------+

| i    |

+------+

|    1 |

+------+

现在到另外一个数据节点查看下aa数据库是否同步过来了.

#/usr/local/mysql/bin/mysql -u root -p

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| aa                 |

| bb                 |

| mysql              |

| ndb_3_fs           |

| test               |

+--------------------+

mysql> use aa

mysql> select * from ctest2;

+------+

| i    |

+------+

|    1 |

+------+

从上面可以看到数据已经同步了,mysql集群环境已经搭建完成.

这边同样要感谢下面页面的提供帮助:

http://blog.chinaunix.net/uid-23412974-id-2425362.html

http://wenku.baidu.com/link?url=BweBSV3m0ut73gnmRWj5M3w88YTanyxi_K7tvkqpWMdrfaf54xSdVfPolj0HbhdH9hmf85UO_OjXEuWsYlIBRgND0-WgZ9RW1qBE1weoLOq

让我知道不光是chrown来设置权限表来解决问题,还需要绑定其他端口和ip,还有重要问题还需要跑到/usr/local/mysql/data找错误日志来排查。


版权声明:本文为weixin_26873711原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。