Hadoop集群搭建(七:MySQL的安装配置)

    xiaoxiao2022-07-14  168

    实验

    目的

    要求

     

    目的:

    1、掌握MySQL在集群平台中的安装

    要求:

    完成MySQL的集群版的安装;MySQL集群的相关服务进程能够正常启动;MySQL集群的SQL服务能够作为系统服务开机自动启动;MySQL客户端能够远程连接MySQL集群的SQL服务;MySQL集群的SQL服务能够远程链接访问;创建表、查询数据等数据库操作能够正常进行;MySQL集群的数据库数据能够在多个SQL服务节点之间实现同步;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    五台独立PC式虚拟机;主机之间有有效的网络连接;每台主机内存2G以上,磁盘50G;所有主机上安装CentOS7-64位操作系统;所有主机已完成静态网络地址、主机名、主机地址映射的配置;

     

    软件版本:

            选用MySQL Cluster的7.5.7版本,软件包选择Linux的通用包Generic,软件包名mysql-cluster-gpl-7.5.7-linux-glibc2.12-x86_64.tar.gz;

     

    依赖软件:

            MySQL Cluster的安装和使用需要依赖与软件libaio,选用该软件的0.3.109版本,软件包名libaio-0.3.109-13.el7.x86_64.rpm;

    集群规划:

              * MySQL数据库的集群版本有管理节点、 数据服务节点、 SQL服务节点总共3类服务节点, 集群中要求至少一台单独的主机作为管理节点, 而集群模式需要满足数据有备份和数据处理能够分布并行的基本要求, 所以需要两台或以上的主机作为数据服务节点以及两台或以上的主机作为SQL服务节点, 具体规划如下:

    主机名

    IP地址

    服务描述

    Cluster-01

    192.168.10.111

    MC管理节点

    Cluster-02

    192.168.10.112

    MC数据服务节点

    Cluster-03

    192.168.10.113

    MC数据服务节点

    Cluster-04

    192.168.10.114

    MC SQL服务节点

    Cluster-05

    192.168.10.115

    MC SQL服务节点

     

     

    实验内容

    步骤一:MySQL集群版安装环境配置

    注:1、MySQL集群版安装过程的所有操作步骤都需要使用root用户进行;

           2、此项步骤需要在集群中所有主机上进行;

     

    1、首先,MySQL相关软件包上传到root用户家目录的新建“setups”目录下。

    命令:

         #mkdir setups

    2、匹配MySQL关键字查询包,列出本机yum方式安装的MySQL软件,并卸载删除已安装的MySQL;

    命令:

         #rpm -qa | grep mysql

         #yum list installed | grep mysql

         #rpm -e –nodeps 软件包名

         #yum -y remove mysql

    3、匹配MariaDB关键字查询包,列出本机yum方式安装的MariaDB软件,并卸载删除已安装的MariaDB;

    命令:

         #rpm -qa | grep mariadb

         #rpm -e –nodeps 软件包名

         #rpm -qa | grep libaio

         #yum list installed | grep libaio

         #rpm -ivh 软件包名

    4、检查MySQL用户组是否存在,若不存在则创建MySQL用户组;

    命令:

         #cat /etc/group | grep mysql

         #groupadd mysql

     

    5、检查MySQL用户是否存在,若不存在则创建MySQL用户并加入到MySQL用户组中;

    命令:

            #cat /etc/passwd | grep mysql

            #useradd -r -g mysql mysql

    6、查看前系统中SELinux服务的运行状态,需要进行永久关闭;

    命令:

            #sestatus -v

            #vi /etc/selinux/config

             找到配置项“SELINUX”所在行,将其改为以下内容:

               SELINUX=disable

            #reboot       //重启主机

     

    步骤二:MySQL集群版基本安装配置;

    注:以下步骤需要在集群中所有主机上进行操作;

    1、MySQL Cluster软件包“mysql-cluster-gpl-7.5.7- linux-glibc2.12-x86_64.tar.gz”我们一提前上传与用户家目录的“setups”目录下;

    命令:

         #mkdir /mysql

         #cd /mysql

         #tar -xzf ~/setups/ mysql-cluster-gpl-7.5.7-linux-glibc2.12-x86_64.tar.gz

    2、进入系统的“/usr/local”目录,在该目录下创建一个名为“MySQL”的连接指向MySQL Cluster所在的目录,MySQL源路径以MySQL Cluster软件包实际解压包的路径为准。

    命令:

         #cd /usr/local

         #ln -s /mysql/ mysql-cluster-gpl-7.5.7-linux-glibc2.12-x86_64mysql

    3、进入连接的MySQL目录,创建存放MySQL数据库数据的目录,更改该数据目录的权限设置

    命令:

            #cd mysql

            #mkdir data

            #chmod 770 data

    4、更改当前“MySQL”目录的所属用户和所属组

    命令:

            #chown -R mysql

             #chgrp -R mysql

    5、配置MySQL相关的环境变量,修改系统的配置文件;

    命令:

            #vi /etc/profile

             在文件末尾添加以下内容:

             #mysql-cluster environment

              MYSQL_CLUSTER_HOME=/usr/local/mysql

              PATH=$MYSQL_CLUSTER_HOME/bin:$PATH

              Export MYSQL_CLUSTER_HOME PATH

    6、使新配置的环境变量立即生效,并查看环境变量是否生效;

    命令:

                   #source /etc/profile

                   #echo $MYSQL_CLUSTER_HOME

                   #echo $PATH

    步骤三:配置管理节点Cluster-01;

    注:该项的所有操作需要在集群中所有管理节点主机上进行操作。

    1、进入MySQL Cluster软件所在目录,创建存放MySQL Cluster数据目录;

    命令:

            #cd /usr/local/mysql

            #mkdir mysql-cluster

    2、更改“mysql-cluster”目录的所属用户和所属组;

    命令:

         #chown -R mysql mysql-cluster

         #chgrp -R mysql mysql-cluster

    创建用于存放MySQL Cluster管理节点配置文件的目录,创建MySQL Cluster管理节点的配置文件,并对配置文件进行修改;

    命令:

         #mkdir etc

         #cd stc

         #touch config.ini

         #vi config.ini

          在文件中添加如下内容:

    [NDB_MGMD DEFAULT] DataDir=/usr/local/mysql/data [NDBD DEFAULT] NoOfReplicas=2 DataMemory=512M IndexMemory=32M DataDir=/usr/local/mysql/data [NDB_MGMD] NodeId=1 HostName=Cluster-01 [NDBD] NodeId=2 HostName=Cluster-02 [NDBD] NodeId=3 HostName=Cluster-03 [NDBD] NodeId=4 HostName=Cluster-04 [NDBD] NodeId=5 HostName=Cluster-05

     

    4、更改当前“etc”目录的所属用户和所属组,并启动MySQL Cluster的管理节点;

    注:*首次启动或修改之后启动需要添加参数“--initial”,正常启动时不需要添加参数“--initial”

    命令:

         #chown -R mysql .

         #chgrp -R mysql .

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

           5、查看系统进程信息,若存在信息中包含“ndb_mgmd”关键字的进程则表示MySQL Cluster的管理节点启动成功,进入MySQL Cluster管理节点的控制台,查看节点状况;

    命令:

                   #ps -ef | grep ndb_mgmd

                   #ndb_mgm

                   >show

                   >exit

           

    步骤四:配置数据服务节点Cluster-02、Cluster-03;

    注:*以下步骤需要在集群中所有数据服务节点主机上进行操作。

     

    1、进入系统配置文件所在目录,创建MySQL Cluster数据服务节点的配置文件,并对配置文件进行修改;

    命令:

          #cd /etc

          #touch my.conf

          #vi my.conf

          在其中添加如下内容:

    [MYSQLD] ndbcluster ndb-connectstring=Cluster-01 [MYSQL_CLUSTER] ndb-connectstring=Cluster-01

    2、启动数据服务节点,查看系统进程信息,若存在信息中包含“ndbd”关键字的进程则表示MySQL Cluster的数据服务节点启动成功,并进入MySQL Cluster管理节点的控制台。

    命令:

         #ndbd –initial

         #ps =ef | grep ndbd

    #ndb_mgm

                   >show

                   >exit

      

    步骤五:配置SQL服务节点Cluster-04、Cluster-05;

    注:*以下步骤需要在集群中所有SQL服务节点主机上进行操作

    1、进入系统配置文件所在目录,创建MySQL Cluster数据服务节点的配置文件,并对配置文件进行修改;

    命令:

         #cd /etc

         #touch my.cnf

         #vi my.cnf

          在其中添加如下内容:

    2、对MySQL数据库的安装进行初始化,执行该命令后会有一些提示信息,特别注意最后一行的“[Note]”相关信息,信息内容如下:

    [Note] A temporary password is generated for

    root@localhost:XXXXXXXXXXXXXX

    信息末尾的 “XXXXXXXXXXXXXX”是安装程序随机生成的初始密码, 在首次以root用户登录数据库时雷要使用,非常重要 一定要记下;

    命令:

         # mysql-initialize –user=mysql –basedir=/usr/local/mysql –datadir=/usr/local/mysql/data

    3、将MySQL加入到系统的可控制启动服务目录内,并将服务命名为“MySQL”,启动SQL服务节点,查看系统进程信息,若存在信息中包含“ndbd”关键字的进程则表示MySQL Cluster的数据服务节点启动成功;

    命令:

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

           #service mysql start

           #ps -ef | grep mysql

     

     

    4、进入MySQL Cluster管理节点的控制台;

    命令:

             #ndb_mgm

             >show

             >sxit

    注意:只有本步骤的验证实在集群中管理节点主机上进行操作,之后的操作仍然是在SQL服务节点主机继续操作;

     

    5、登录MySQL数据库,会提示输入密码,该密码为之前进行安装初始化时所显示的初始化密码,然后进入MySQL的控制台;

    命令:

            #mysql -u root -p

     

    5.1、在控制台使用命令“SET PASSEORD=PASSWORD(‘mysqlabc’);”,重新设置数据库的“root”用户的登录密码,其中“mysqlabc”部分为自定义的新密码。

     

    5.2、在MySQL控制台使用命令“USE mysql;” 切换到 “mysql” 数据库。

     

    5.3、在MySQL控制台使用命令“UPDATE user SET host='%' WHERE user='root'” , 修改数据库的root用户所接收请求来源的范围。 允许远程登录。

     

     5.4、使用命令“select host from user where user=root”查看数据库的host信息6、使新配置的环境变量立即生效,并查看环境变量是否生效;

     

    5.5、在MySQL控制台使用命令“FLUSH PRIVILEGES”,刷新数据库的权限信息使新配置的权限生效。

     

    5.6、在MySQL控制台使用命令 "exit”可以退出,MySQL控制台返回到系统命令行界面。

    6、启添加系统防火墙的端口策略, 对外开启MySQL所使用的端口“3306”,并重启系统防火墙服务,使新添加的端口策略生效;

    命令:

          #firewall-cmd --zone=public --add-port=3306/tep --permanent

           #firewall-cmd--reload

    步骤六:MySQL集群版验证;

    1、在任意一台SQL服务 节点主机 上使用命令“mysql-u root -p” 登录到MySQL数据库,会提示输入密码,正确输入密码成功登录MySQL数据库之后会进入MySQL的控制台;

    命令:

         # mysql -u root -P

    2、在MySQL控制台使用命令“CREATEDATABASE  test;"创建数据库“test”;

    命令:

         >CREATE DATABASE test;

    3、在MySQL控制台使用命令“SHOW DATABASES;"显示数据库列表,若存在名为“test”的数据库,则表示集群同步数据成功;

    命令:

                   > SHOW DATABASES

    注:可以使用命令"ssh   目标主机名或IP地址”远程登录到集群中其它SQU服务节点主机进行操作,完成所有操作后使用命令"logout"退出当前登录

     

    4、在任意一台集群主机上执行;

    命令:

            #ndb_mgm -e show

    步骤七:MySQL集群测试;

    1、测试一:

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

    在SQL节点1.上执行:

    shell> /usr/local/mysql/bin/mysql -u root -P

    mysql>show databases;mysql>create database aa;

    mysql>use aa;

    mysql>CREATE TABLE ctest2 Gi INT) ENGINE=NDB;

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

     mysql> INSERT INTO ctest2 O VALUES (1);

    mysql> SEL ECT * FROM ctest2;

    b)然后在SQL节点2上看数据是否同步过来了

    经过测试,在非master.上创建数据,可以同步到master上查看表的引擎是不是NDB,>show create table表名:

    2、测试二:

        a) 关闭一个数据节点,在另外一个节点写输入,开启关闭的节点,看数据是否同步过来。

    首先把数据节点1重启,然后在节点2上添加数据

    在SQL节点2上操作如下:

    mysql> create database bb;

    mysql> use bb;

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

    mysql> use aa;

    mysql> INSERT INTO ctest2 O VALUES (3333);

    mysql> SELECT* FROM ctest2;

    b) 等数据节点1启动完毕,启动数据节点1的服务

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

    #service mysqld start

    c) 然后登录进去查看数据

    # /ustrlocal/mysql/bin/mysql -u root p

    可以看到数据已经同步过来了,说明数据可以双向同步了。

     

    出现的问题与解决方案

    本实验未遇到错误,介绍几个排错技巧:

    1、一般,报错的时候都会有error code。比如ERROR 1504,Error: 2303等等,遇到这些报错,我们可以先用mysql的报错工具perror查看,比如查看报错号为1504的错误,使用命令为: perror --ndb 1504

    2、在出现报错以后,查看WARNINGS或ERRORS信息,比如出现Error CODE : 1528 Failed TO CREATE LOGFILE GROUP后输入SHOW WARNINGS;,会显示出具体的报错信息:

      Got error 1504 'Out of logbuffer memory' FROM NDB

      Failed TO CREATE LOGFILE GROUP

    以上报错代码,均可在官网找到解决方案。

    知识拓展

    1、MySQL集群优缺点;

    优点:

    a) 99.999%的高可用性

    b)快速的自动失效切换

    c)灵活的分布式体系结构,没有单点故障

    d)高吞吐量和低延迟

    e)可扩展性强,支持在线扩容

    缺点:

    a)存在很多限制,比如:不支持外键

    b)部署、管理、配置很复杂

    c)占用磁盘空间大,内存大

    d)备份和恢复不方便

    e)重启的时候,数据节点将数据load到内存需要很长时间

     

    2、MySQL集群如何存储数据;

    a)Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。

    b)每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好(或者无法准备该事务)。

    c)Master等待所有Slave发送OK或ABORT消息

    如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务;如果Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。

    e)每个Slave等待来自Master的OK或ABORT消息。

    如果Slave收到提交请求,它们就会提交事务,并向Master发送事务已提交 的确认;如果Slave收到取消请求,它们就会撤销所有改变并释放所占有的资源,从而中止事务,然后向Masterv送事务已中止的确认。

    f)当Master收到来自所有Slave的确认后,就会报告该事务被提交(或中止),然后继续进行下一个事务处理。

     

     

    3、使用SQLyog连接MySQL集群192.168.10.114或者192.168.10.115

    最新回复(0)