CentOS6.8搭建mysql-cluster-gp-7.4.13

    xiaoxiao2026-03-26  0

    mysql-cluster集群官方文档介绍:

    https://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-overview.html

    安装要求

    安装环境:CentOS-6.8

    安装方式:源码编译安装

    软件名称:mysql-cluster-gpl-7.4.13-linux-glibc2.5-x86_64.tar.gz

    下载地址:http://mysql.mirror.kangaroot.net/Downloads/

    软件安装位置:/usr/local/mysql

    数据存放位置:/usr/local/mysql/data

    集群设计

    2.1 集群设计

    首先设计集群的安装分配方式,我共需要5台服务器,服务器分配如下:

    管理节点: 192.168.1.231

    sql节点1 192.168.1.232

    sql节点2 192.168.1.233

    数据节点1 192.168.1.234

    数据节点2 192.168.1.235

     

    2.2 检查安装的mysql

    检查系统中已经安装过的mysql信息,操作如下:

    [root@my-mgm ~]# rpm -qa | grep mysql [root@my-mgm ~]# service mysql status

    如果安装过其他版本的mysql,请卸载,操作如下:

    [root@my-mgm ~]# /etc/init.d/mysqld stop //关闭目前的mysql服务  [root@my-mgm ~]# ps -ef | grep mysql* //检验mysql是否已经关闭  #如果没关闭,执行kill -9 端口号  #执行删除  rpm -e --allmatches --nodeps mysql mysql-server mysql-libs rm -rf /var/lib/mysql // 删除mysql的安装目录

    安装mysql-cluster

    集群中的每台服务器都要安装

    3.1 安装软件

    [root@my-mgm ~]# groupadd mysql [root@my-mgm ~]# useradd mysql -g mysql  -s /sbin/nologin -M [root@my-mgm ~]# chown -R mysql.mysql /var/mysql [root@my-mgm local]# cd /usr/local [root@my-mgm local]# tar -zxvf mysql-cluster-gpl-7.4.14-linux-glibc2.5-x86_64.tar.gz [root@my-mgm local]# mv mysql-cluster-gpl-7.4.14-linux-glibc2.5-x86_64 mysql [root@my-mgm local]# chown -R mysql.mysql mysql [root@my-mgm mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql [root@my-mgm mysql]# chown -R mysql.mysql .   #非常重要 [root@my-mgm mysql]# cp support-files/my-default.cnf /etc/my.cnf

    3.2 mysqld服务加入开机自启动项

    [root@my-mgm mysql]# cp support-files/mysql.server /etc/init.d/mysqld

    会提示是否覆盖,输入yes

    这样就可以用service mysqld {start | restart | stop}

    [root@my-mgm ~]# chkconfig --add mysqld 注意:sql节点不需要做这一步,因为mysql集群启动是有顺序的,sql节点要最后启动

    验证是否成功

    [root@my-mgm ~]# chkconfig --list mysqld

    3.3 配置环境变量

    为了避免每次都输入mysql的全路径,可将其加入环境变量中

    vim /etc/profile 向其加入

    #mysql_cluster path

    MYSQL_HOME=/usr/local/mysql

    export PATH=$PATH:$MYSQL_HOME/bin

    然后执行 source /etc/profile使其升效

    管理节点

    安装管理节点(192.168.1.231

    4.1 管理节点配置

    [root@my-mgm ~]# mkdir /var/lib/mysql-cluster [root@my-mgm ~]# cd /var/lib/mysql-cluster [root@my-mgm mysql-cluster]# vim /var/lib/mysql-cluster/config.ini

    config.ini中添加以下内容

    [ndbd default] NoOfReplicas=2 #定义在Cluster环境中相同数据的份数,最大为4 DataMemory=200M #每个数据节点中给数据分配的内存 IndexMemory=20M #每个数据节点中给索引分配的内存 MaxNoOfAttributes=20480 #该参数用于设置簇中触发程序对象的最大数目。该参数的默认值为768,不修改建表时可能会报708错误 [ndb_mgmd] NodeId=1 #设置管理节点服务器 HostName=192.168.1.231 DataDir=/var/lib/mysql-cluster [ndbd] NodeId=2 #设置存储节点服务器(NDB节点) HostName=192.168.1.232 DataDir=/usr/local/mysql/data [ndbd] NodeId=3 HostName=192.168.1.233 DataDir=/usr/local/mysql/data [mysqld] NodeId=4 #设置SQL节点服务器  HostName=192.168.1.234 [mysqld] NodeId=5 HostName=192.168.1.235 [mysqld] #为空代表任意sql节点连接集群

    4.3 管理节点启动

    启动(必须用参数“-f“告诉ndb_mgm配置文件所在位置,默认是在ndb_mgmd相同目录下)

    [root@my-mgm ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

    (#--initial:第一次启动时加上。其它时候不要加,不然会数据 清空,除非是在备份、恢复或配置变化后重启时需要加上)

    [root@my-mgm ~]#ndb_mgmd -f /var/lib/mysql-cluster/config.ini

    iMySQL Cluster Management Server mysql-5.6.35 ndb-7.4.14

    [root@my-mgm ~]# netstat -lntpu 或者 ps -aux | grep ndb_mgmd

    看到tcp 0 0 0.0.0.0:1186开放说明启动正常

    开启管理节点服务器的1186端口

    4.4 管理节点检验

    执行以下操作

    [root@my-mgm ~]#ndb_mgm -- NDB Cluster -- Management Client -- ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 (not connected, accepting connect from 192.168.1.234) id=3 (not connected, accepting connect from 192.168.1.235) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.1.231 (mysql-5.6.35 ndb-7.4.14) [mysqld(API)] 2 node(s) id=4 (not connected, accepting connect from 192.168.1.232) id=5 (not connected, accepting connect from 192.168.1.233) ndb_mgm>exit

    4.5管理节点关闭

    [root@my-mgm ~]# ndb_mgm -e shutdown Connected to Management Server at: localhost:1186 1 NDB Cluster node(s) have shutdown. Disconnecting to allow management server to shutdown.

    4.6 管理节点开机自动启动

    vim /etc/rc.d/rc.local

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

    数据节点

    数据节点1:192.168.1.234

    数据节点2:192.168.1.235

    5.1 数据节点配置

    对数据节点进行配置,执行以下操作:

    [root@my-db1 ~]# vim /etc/my.cnf

    清空my.cn文件加入以下内容:

    [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  ndbcluster #使用ndb集群引擎 character_set_server=utf8 ndb-connectstring=192.168.1.231 #指定管理集群的ip地址,多个以,分隔 [mysql_cluster] ndb-connectstring=192.168.1.231 #指定管理集群的ip地址,多个以,分隔 [ndb_mgm] connect-string=192.168.1.231

    针对数据节点2的安装重复5.1的操作

    5.2 数据节点启动

    启动此处时,管理节点服务器防火墙必须开启11863306端口

    注意:只是在第一次启动或在备份/恢复或配置变化重启ndbd时,才加--initial参数!

    第一次启动如下:

    [root@my-db1 ~]# ndbd --initial 2017-02-09 11:13:22 [ndbd] INFO -- Angel connected to '192.168.1.231:1186' 2017-02-09 11:13:22 [ndbd] INFO -- Angel allocated nodeid: 2

    正常启动方式:

    [root@my-db1 ~]# ndbd

    5.3 数据节点关闭

    [root@my-db1 ~]# ps -ef | grep ndbd [root@my-db1 ~]# kill -9 pid

    5.4 数据节点加入开机自启动

    vim /etc/rc.d/rc.local

    加入 /usr/local/mysql/bin/ndbd

    SQL节点设置

    sql节点1:192.168.1.232

    sql节点2:192.168.1.233

    6.1 sql节点配置

    sql节点进行配置,执行以下操作:

    [root@my-sql1 ~]# vim /etc/my.cnf

    清空my.cn文件加入以下内容:

    [mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES  ndbcluster #使用ndb集群引擎 character_set_server=utf8 ndb-connectstring=192.168.1.231 #指定管理集群的ip地址,多个以,分隔 [mysql_cluster] ndb-connectstring=192.168.1.231 #指定管理集群的ip地址,多个以,分隔 [ndb_mgm] connect-string=192.168.1.231

    针对sql节点2的安装重复6.1的操作

    6.2 sql节点启动与关闭

    service mysqld start|stop|restart|status

    /etc/init.d/mysqld start|stop|restart|status

    /etc/rc.d/init.d/mysqld start|stop|restart|status

    mysqld_safe --user=mysql &

    集群常用配置

    7.1集群开启与关闭顺序

    开启:管理节点->数据节点->SQL节点

    关闭:SQL节点->数据节点->管理节点

    7.2 集群状态查看

    ndb_mgm -e show

    7.3 测试集群

    因为分布式集群,所以在mysql中创建的表存储引擎必须修改为:NDBCLUSTER,否则数据不会同步到其他节点服务器上。

    创建数据库 create database mytest

    创建表create table test1(name varchar(10)) engine=ndbcluster;

    这里必须指定数据库表的引擎为ndbcluster,与配置文件中名称相同

    插入数据:insert into test1() values('张三');commit;

    更改表的ENGINE为集群模式

    ALTER TABLE TABLENAME ENGINE=NDBCLUSTER

    查看表的引擎是不是NDB

    show create table tablename

    7.4 jdbc连接

    单点配置:jdbc:mysql://192.168.1.232:3306/database

    集群方式:jdbc:mysql:loadbalance://192.168.1.232:3306,192.168.1.233:3306/database?roundRobinLoadBalance=true

    7.5创建数据库和用户

    #mysql –u root –p

    Mysql>create database goblog;

    Mysql>grant all privileges on goblog.* to 'bloger'@'10.120.%' identified by 'bloger';

    Mysql>flush privileges;

    Mysql>quit;

     

    7.6 共享权限的实现

    #share privilege 在每个sql节点执行下面语句

    mysql -S /tmp/mysql.sock < /usr/local/mysql/share/ndb_dist_priv.sql

    #one of cluster API 在其中一sql节点执行下面语句

    CALL mysql.mysql_cluster_move_privileges();

    FLUSH PRIVILEGES;

    #init root password 初始化密码

    mysqladmin -S /tmp/mysql.sock -u root password root

    #one of cluster API 删除空密码用户

    delete from user where LENGTH(password)<10;

    #create user 设置用户远程登陆

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.120.%' IDENTIFIED BY 'root';

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.%' IDENTIFIED BY 'root';

     

    最新回复(0)