Linux下mysql集群的搭建

1  环境配置

1)    3台Linux服务器

A:192.168.2.251          ManagementServer

B:192.168.2.252          Datanode、SQL node

C:192.168.2.253          Datanode、SQL node

2)        MySQL集群版本安装程序,分32位和64位版本,最新版本请在http://www.mysql.com/downloads/里面下载

 

2    安装

不管是ManagementServer,还是Data node、SQL node,都需要先安装MySQL集群版本,然后根据不用的配置来决定当前服务器有哪几个角色。

安装之前准备好mysql用户和mysql用户组,相关命令:

groupadd mysql

useradd mysql -g mysql

确定相关机器的防火墙已关闭(或者设置防火墙这几台机器之间的网络连接是畅通无阻的),相关命令:

chkconfig iptables off

service iptables stop

2.1  安装MySQL集群版本

1)        把mysql-cluster-advanced-7.3.3-linux-glibc2.5-x86_64.tar.gz(这是64位安装版,32位安装版:mysql-cluster-advanced-7.3.3-linux-glibc2.5-i686.tar.gz)上传到/usr/local

2)        解压:tar zxvf mysql-cluster-advanced-7.3.3-linux-glibc2.5-x86_64.tar.gz

3)        重命名:mv mysql-cluster-advanced-7.3.3-linux-glibc2.5-x86_64 mysql

4)        授权:chown -R mysql:mysql mysql

5)        切换到mysql用户:su  mysql

6)        切换目录到mysql:/usr/local/mysql

7)        安装mysql:scripts/mysql_install_db --user=mysql

2.2  配置Management Server

1)        使用root账号创建目录:mkdir /var/lib/mysql-cluster

2)        新建文件config.ini然后上传到mysql-cluster里面:

[ndbd default]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M

[ndb_mgmd]

Hostname=192.168.2.251

datadir=/var/lib/mysql-cluster

[ndbd]

Hostname=192.168.2.252

datadir=/usr/local/mysql/data/

[ndbd]

Hostname=192.168.2.253

datadir=/usr/local/mysql/data/

[MYSQLD]

Hostname=192.168.2.253

[MYSQLD]

Hostname=192.168.2.252

3)        授权:chown -R mysql:mysql /var/lib/mysql-cluster

4)        切换到mysql用户:su  mysql

5)        启动管理服务:/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini

6)        查看服务是否正常启动:netstat –lntpu

打印:

tcp 0  0 0.0.0.0:1186  0.0.0.0:* LISTEN  2437/ndb_mgmd

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

2.3  配置Data Node

1)        新建文件my.cnf然后上传到/etc里面:

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#basedir         = /usr/local/mysql/

datadir         = /usr/local/mysql/data

#user            = mysql

#port            = 3306

#socket          = /tmp/mysql.sock

ndbcluster

ndb-connectstring=192.168.2.251

[mysql_cluster]

ndb-connectstring=192.168.2.251

2)        切换到mysql用户:su  mysql

3)        启动数据节点服务:/usr/local/mysql/bin/ndbd –initial

第一次启动需要加参数:–initial,以后就不用加了,直接运行:/usr/local/mysql/bin/ndbd

4)        查看服务是否正常启动:netstat –lntpu

打印:

tcp   0   0192.168.2.24:56806   0.0.0.0:*   LISTEN  4949/ndbd

tcp   0   0192.168.2.24:44894   0.0.0.0:*   LISTEN  4949/ndbd

tcp   0   0192.168.2.24:50531   0.0.0.0:*   LISTEN  4949/ndbd

看到ndbd了说明启动是正常的

2.4  配置SQL Node

1)        新建文件my.cnf然后上传到/etc里面,和上面的Data Node里面的配置一样,如果上面的步骤已经做了,略去此步骤。

2)        切换到mysql用户:su  mysql

3)        设置管理员密码:

/usr/local/mysql/bin/mysqladmin -uroot password '123'

/usr/local/mysql/bin/mysqladmin -uroot -h LINUX129 password '123'

上面的命令行里面的123是新密码,LINUX129是机器名,这2条命令来自于安装mysql执行:scripts/mysql_install_db --user=mysql 后的打印日志

4)        复制mysqld到系统服务里面去:

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

如果权限不够,可以先使用root用户授权:

chown -R mysql:mysql /etc/init.d/mysqld

5)        启动SQL节点服务:service mysqld start

或者/etc/init.d/mysqld start

或者/usr/local/mysql/bin/mysqld_safe --user=mysql &

6)        查看服务是否正常启动:netstat –lntpu

打印:

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

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

3    常用命令或问题

1)        ndb_mgmd管理命令:/usr/local/mysql/bin/ndb_mgm

执行之后就是管理控制台了,里面可以继续输入命令。

查看集群里面的全部节点的状态:show

2)        停止集群服务器的命令:/usr/local/mysql/bin/ndb_mgm -e shutdown

如果集群配置有更新了:rm /usr/local/mysql/mysql-cluster/ndb_1_config.bin.1

3)        停止SQL节点的命令:/usr/local/mysql/bin/mysqladmin -uroot shutdown

4)        SQL Node上连接MySQL:/usr/local/mysql/bin/mysql-u root –p

执行之后就是MySQL控制台了,里面可以继续输入命令。

测试集群环境:

mysql>show databases;

打印:

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

|Database           |

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

|information_schema |

|mysql              |

|ndb_2_fs           |

|test               |

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

mysql>create database aa;

mysql>use aa

mysql>CREATE TABLE ctest2 (i INT primary key) ENGINE=NDB; //1.每个MySQL集群表都需要主键.如果没有定义主键,则 NDB 存储引擎会自动创建一个,并且不是指定 USING HASH 的方式;2.这里必须指定数据库表的引擎为NDB(或者NDBCLUSTER),否则同步失败

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

mysql>SELECT * FROM ctest2;

打印:

+------+

| i    |

+------+

|    1 |

+------+

同样方式在另外一台SQL Node上连接MySQL,查看数据库、表、记录是否已同步过去。

5)        解决MySQL客户端工具连接SQL Node出现1130的异常,在MySQL控制台下执行:

l  如果你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON*.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

 

l  如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON*.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

 

l  如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ONdk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;

6)        使用MySQL客户端工具创建表时选择引擎:NDBCLUSTER,如下图:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值