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_64 mysql
  #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找错误日志来排查。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值