zoukankan      html  css  js  c++  java
  • CentOS-7安装Mysql集群

    安装要求

    安装环境:CentOS-7
    安装方式:源码编译安装
    软件名称:mysql-cluster-gpl-7.3.7-linux2.6-x86_64.tar.gz
    下载地址:http://mysql.mirror.kangaroot.net/Downloads/
    软件安装位置:/usr/local/mysql
    数据存放位置:/var/mysql/data
    日志存放位置:/var/mysql/logs

    集群设计

    首先设计集群的安装分配方式,我共需要5台服务器,服务器分配如下:
    管理节点:    192.168.1.214
    sql节点1:   192.168.1.215
    sql节点2:   192.168.1.216
    数据节点1:  192.168.1.217
    数据节点2:  192.168.1.218

     
    注意:
    目前这种设计存在的问题是管理节点是单点的,214挂掉后整个集群就会瘫痪,先不管这个问题,首先把这个简单的MySQL集群先搭建起来。

    检查安装的mysql

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

    [root@localhost /]# rpm -qa | grep mysql
    [root@localhost /]# service mysql status

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

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

    管理节点

    管理节点安装

    安装管理节点(192.168.1.214)

    [root@localhost /]# groupadd mysql
    [root@localhost /]#  useradd mysql -g mysql
    [root@localhost /]# cd /usr/local
    [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.3.7-linux2.6-x86_64.tar.gz
    [root@localhost local]# mv mysql-cluster-gpl-7.3.7-linux2.6-x86_64 mysql
    [root@localhost local]# chown -R mysql:mysql mysql
    [root@localhost local]# cd mysql


    [root@localhost mysql]# scripts/mysql_install_db --user=mysql

     

    [root@localhost ~]#cd /usr/local/mysql/bin 

    [root@localhost ~]#cp ./ndb_mgm /usr/local/bin/ 

    [root@localhost ~]#cp ./ndb_mgmd /usr/local/bin/ 

    或:./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    # 关闭防火墙


     chkconfig iptables off
    # 关闭 selinux


    vim /etc/selinux/config  #(改为SELINUX=disabled)保存退出,
    # 重启服务器

     init 6

     

    # 删除自带的 /etc/my.cnf  【切记:一定要删除掉! 因为ndb_mgmd启动的时候,也会加上/etc/my.cnf的配置内容,干扰我们,所以要删除它】

     rm -rf /etc/my.cnf

    以上每个节点都要操作

    管理节点配置

    [root@localhost ~]#  mkdir /var/lib/mysql-cluster
    [root@localhost ~]# cd /var/lib/mysql-cluster
    [root@localhost mysql-cluster]# vi + /var/lib/mysql-cluster/config.ini

    在config.ini 中添加以下内容:

    [NDBD DEFAULT]
    NoOfReplicas=1
    [TCP DEFAULT]
    portnumber=3306

    [NDB_MGMD]
    #设置管理节点服务器
    HostName=192.168.1.214

    DataDir=/var/mysql/data

    [NDBD]
    #设置存储节点服务器(NDB节点)
    HostName=192.168.1.216

    DataDir=/var/mysql/data

    [NDBD]
    #第二个NDB节点
    HostName=192.168.1.218

    DataDir=/var/mysql/data

    [MYSQLD]
    #设置SQL节点服务器
    HostName=192.168.1.215

    [MYSQLD]
    #第二个SQL节点
    HostName=192.168.1.216

     [MYSQLD] 
    id=6 
    [mysqld] 
    id=7

     

     

    #必须有空的mysqld节点,不然数据节点断开后启动有报错 
    [MYSQLD] 
    id=6 
    [mysqld] 
    id=7 

    上面的可以添加到config.ini

    管理节点启动

    --initial 首次加载、/usr/local/mysql/etc/config.ini文件有改变,其它时候不要加,除非是在备份、恢复或配置变化后重启时,其他时候不要加,不然数据就清空。。。


    /usr/local/mysql/bin/ndb_mgmd  -f  /usr/local/mysql/etc/config.ini --initial

     正常启动方式
    /usr/local/mysql/bin/ndb_mgmd  -f  /usr/local/mysql/etc/config.ini

    [root@localhost ~]# /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
    [root@localhost ~]# mkdir /var/mysql/logs
    [root@localhost ~]# netstat -lntpu

    [root@localhost ~]#cd /usr/local/mysql/bin 

    [root@localhost ~]#cp ./ndb_mgm /usr/local/bin/ 

    [root@localhost ~]#cp ./ndb_mgmd /usr/local/bin/ 

     

    看到tcp 0 0 0.0.0.0:1186开放说明启动正常
    开启管理节点服务器的1186端口

    管理节点检验

    执行以下操作:

    [root@localhost /]# 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.217)
    id=3 (not connected, accepting connect from 192.168.1.218)

    [ndb_mgmd(MGM)] 1 node(s)
    id=1    @192.168.1.214  (mysql-5.5.22 ndb-7.2.6)

    [mysqld(API)]   2 node(s)
    id=4 (not connected, accepting connect from 192.168.1.215)
    id=5 (not connected, accepting connect from 192.168.1.216)

    管理节点关闭

    [root@localhost /]# /usr/local/mysql/bin/ndb_mgm -e shutdown

    #成功后终端打印出以下信息
    Connected to Management Server at: 192.168.1.214:1186
    3 NDB Cluster node(s) have shutdown.
    Disconnecting to allow management server to shutdown.

    数据节点

    数据节点安装

    数据节点1: 192.168.1.215
    数据节点2: 192.168.1.216

    [root@localhost /]# groupadd mysql
    [root@localhost /]# useradd mysql -g mysql
    [root@localhost /]# cd /usr/local
    [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.3.7-linux2.6-x86_64.tar.gz
    [root@localhost local]# mv mysql-cluster-gpl-7.3.7-linux2.6-x86_64 mysql
    [root@localhost local]# chown -R mysql:mysql mysql
    [root@localhost local]# cd mysql
    [root@localhost mysql]# scripts/mysql_install_db --user=mysql
    [root@localhost mysql]# cp support-files/my-default.cnf/etc/my.cnf
    [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

     

    数据节点配置

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

    [root@localhost mysql]# mkdir /var/mysql/data
    [root@localhost mysql]# mkdir /var/mysql/logs
    [root@localhost mysql]# vi /etc/my.cnf

    向文件追加以下内容:

    [MYSQLD]
    ndbcluster
    ndb-connectstring=192.168.1.214

    [MYSQL_CLUSTER]
    ndb-connectstring=192.168.1.214

    [NDB_MGM]
    connect-string=192.168.1.214

    数据节点启动

    启动此处时,管理节点服务器防火墙必须开启1186,3306端口。
    注意:只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!
    第一次启动如下:

    [root@localhost mysql]# /usr/local/mysql/bin/ndbd --initial
    2013-01-30 13:43:53 [ndbd] INFO     -- Angel connected to '192.168.15.214:1186'
    2013-01-30 13:43:53 [ndbd] INFO     -- Angel allocated nodeid: 2

    正常启动方式:

    [root@localhost mysql]# /usr/local/mysql/bin/ndbd

    数据节点关闭

    [root@localhost /]# /etc/rc.d/init.d/mysqld stop
    或者
    [root@localhost mysql]# /etc/init.d/mysql stop
    Shutting down MySQL.. SUCCESS!

    /usr/local/mysql/bin/mysqladmin -uroot shutdown

    SQL节点安装

    SQL节点安装

    SQL节点和存储节点(NDB节点)安装相同,都执行以下操作;
    sql节点1: 192.168.1.215

    sql节点2: 192.168.1.216

    [root@localhost /]# groupadd mysql
    [root@localhost /]# useradd mysql -g mysql
    [root@localhost /]# cd /usr/local
    [root@localhost local]# tar -zxv -f mysql-cluster-gpl-7.3.7-linux2.6-x86_64.tar.gz
    [root@localhost local]# mv mysql-cluster-gpl-7.3.7-linux2.6-x86_64 mysql
    [root@localhost local]# chown -R mysql:mysql mysql
    [root@localhost local]# cd mysql
    [root@localhost mysql]# scripts/mysql_install_db --user=mysql
    [root@localhost mysql]# cp support-files/my-medium.cnf /etc/my.cnf
    [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld

    [root@localhost mysql]#cd bin

    [root@localhost mysql]#cp ./mysqladmin /usr/local/bin

    root@localhost mysql]#cp ./mysql /usr/local/bin

    SQL节点配置

    执行以下操作:

    [root@localhost mysql]# mkdir /var/mysql/data     //创建存储数据的文件夹
    [root@localhost mysql]# mkdir /var/mysql/logs     //创建存储日志的文件夹
    [root@localhost mysql]# vi /usr/local/mysql/my.cnf  //修改配置文件

    追加以下内容:

    [MYSQLD]
    ndbcluster
    ndb-connectstring=192.168.1.214[MYSQL_CLUSTER]
    ndb-connectstring=192.168.15.214[NDB_MGM]
    connect-string=192.168.1.214

    SQL节点启动


    # 启动 SQL 节点
     service mysqld start
    # 关闭 SQL 节点


     service mysqld stop
    # 重启 SQL 节点

     service mysqld restart
    # 检验mysql是否运行

     service mysqld status
    # 为sql指定密码

    /usr/local/mysql/bin/mysqladmin -u root password 'new-password'

      

    /usr/local/mysql/bin/mysqladmin -u root -h 'host' password 'new-password'
    # 启动命令行窗口

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

    执行以下操作:

    [root@localhost mysql]# service mysqld start
    Starting MySQL.. SUCCESS!

    SQL节点关闭

    最直接的方式:

    [root@localhost mysql]# /usr/local/mysql/bin/mysqladmin -uroot shutdown

    [root@localhost /]# /etc/rc.d/init.d/mysqld stop
    或者
    [root@localhost mysql]# /etc/init.d/mysql stop
    Shutting down MySQL.. SUCCESS!

    功能测试

    在管理节点(192.168.1.214)上查看服务状态

    [root@localhost ~]# /usr/local/mysql/bin/ndb_mgm

    -- NDB Cluster -- Management Client --
    ndb_mgm> show
    Cluster Configuration
    ---------------------
    [ndbd(NDB)]     2 node(s)
    id=2    @192.168.15.234  (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master)
    id=3    @192.168.15.235  (mysql-5.5.22 ndb-7.2.6, Nodegroup: 1)

    [ndb_mgmd(MGM)] 1 node(s)
    id=1    @192.168.15.231  (mysql-5.5.22 ndb-7.2.6)

    [mysqld(API)]   2 node(s)
    id=4    @192.168.15.232  (mysql-5.5.22 ndb-7.2.6)
    id=5    @192.168.15.233  (mysql-5.5.22 ndb-7.2.6)

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

    1. 在建表的时候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB集群存储引擎,或用ALTER TABLE选项更改表的存储引擎。
    2. NDB表必须有一个主键,因此创建表的时候必须定义主键,否则NDB存储引擎将自动生成隐含的主键。
    3. Sql节点的用户权限表仍然采用MYISAM存储引擎保存的,所以在一个Sql节点创建的MySql用户只能访问这个节点,如果要用同样的用户访问别的Sql节点,需要在对应的Sql节点追加用户。虽然在MySql Cluster7.2版本开始提供了”用户权限共享”。

    数据同步性测试

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

    1. 1步:

    SQL节点1(192.168.1.215)上增加数据:

    [root@localhost mysql]#  /etc/rc.d/init.d/mysqld status                //检验mysql是否运行
    [root@localhost mysql]# /etc/rc.d/init.d/mysqld start                   //启动mysql
    [root@localhost mysql]# /usr/local/mysql/bin/mysql -u root -p
    Enter password:
    mysql> show databases;
    mysql> create database testdb2;
    mysql> use testdb2;
    mysql> CREATE TABLE td_test2 (i INT) ENGINE=NDB;
    //这里必须指定数据库表的引擎为NDBCLUSTER,与配置文件中的名称相同
    mysql> INSERT INTO td_test2() VALUES (1);
    mysql> INSERT INTO td_test2() VALUES (152);
    mysql> SELECT * FROM td_test2;
    1. 2步:

    进入到SQL节点2(192.168.1.216)上查看数据

    mysql> use testdb2;
    Database changed
    mysql> SELECT * FROM td_test2;
    +------+
    | i    |
    +------+
    |  126 |
    |    1 |
    +------+
    2 rows in set (0.01 sec)

    查看表的引擎是不是NDB:

    >show create table td_test2;
    1. 3步:

    反向测试,SQL节点2(192.168.1.216)上增加数据:

    mysql> create database bb;
    mysql> use bb;
    mysql> CREATE TABLE td_test3 (i INT) ENGINE=NDB;
    mysql> INSERT INTO td_test3 () VALUES (98);
    mysql> SELECT * FROM td_test3;

    SQL节点1(192.168.1.215)上查看数据:

    mysql>  use bb;
    Database changed
    mysql>  SELECT * FROM td_test3;
    +------+
    | i    |
    +------+
    |   98 |
    +------+
    1 row in set (0.00 sec)

    关闭集群

    先关闭管理节点,然后关闭SQL节点和数据节点。

    集群启动操作顺序

    要再次启动集群,按照以下顺序执行:
    管理节点 -> 数据节点 –> SQL节点 注意:此次启动数据节点时不要加”–initial”参数。 

    安装及测试中的错误

    启动中的错误

    错误提示:
    Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    解决办法1(端口占用) netstat -anp |grep 3306
    kill -9 进程号
    解决办法1(权限问题) [root@localhost mysql]# chown -R mysql:mysql /var/mysql 

  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/weixun/p/4159441.html
Copyright © 2011-2022 走看看