实验

目的

要求

目的:

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

要求:

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

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

软件版本:

选用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

  1. 创建用于存放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=2DataMemory=512MIndexMemory=32MDataDir=/usr/local/mysql/data[NDB_MGMD]NodeId=1HostName=Cluster-01[NDBD]NodeId=2HostName=Cluster-02[NDBD]NodeId=3HostName=Cluster-03[NDBD]NodeId=4HostName=Cluster-04[NDBD]NodeId=5HostName=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]ndbclusterndb-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

Hadoop集群搭建(七:MySQL的安装配置)相关推荐

  1. Hadoop集群搭建之SSH无密码登录配置

    一.准备工作 1) 用客户端工具(ssh client或者putty)连接到linux服务器.在root用户下输入命令: vi /etc/hosts ,用vi编辑hosts文件,如下: #127.0. ...

  2. 【大数据实战】Docker中Hadoop集群搭建

    目录 Docker中Hadoop集群搭建 环境 网络设置 安装docker 安装OpenSSH免密登录 Ansible安装 软件环境配置 配置hadoop运行所需配置文件 Hadoop 启动 问题 D ...

  3. Hadoop集群搭建之Hadoop组件安装

    兵马未动,粮草先行 --汉语成语 系列文章目录 Hadoop集群搭建之Linux系统安装 Hadoop集群搭建之Hadoop组件安装 文章目录 系列文章目录 前言 一.IP和主机名称配置 (一)Had ...

  4. 大数据Hadoop集群搭建

    大数据Hadoop集群搭建 一.环境 服务器配置: CPU型号:Intel® Xeon® CPU E5-2620 v4 @ 2.10GHz CPU核数:16 内存:64GB 操作系统 版本:CentO ...

  5. Hadoop详解(五)——ZooKeeper详解,ZooKeeper伪分布搭建和集群搭建,Hadoop集群搭建,sqoop工具的使用

    ZooKeeper简介 什么是ZooKeeper? ZooKeeper是Google的Chubby一个开源的实现,是Hadoop分布式协调服务. 它包含了一个简单的原语集,分布式应用程序可以基于它实现 ...

  6. 在Linux中进行hadoop集群搭建

    在公网IP为x.x.x.x.y.y.y.y和z.z.z.z并装有Centos8的服务器上进行hadoop集群搭建,都安装hadoop-3.1.3和server-jre-8u202-linux-x64. ...

  7. 好程序员大数据笔记之:Hadoop集群搭建

    好程序员大数据笔记之:Hadoop集群搭建在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天 ...

  8. linux hadoop集群搭建,hadoop集群搭建

    hadoop集群搭建步骤 实验介绍 下面将要在三台linux虚拟机上搭建hadoop集群. 知识点 linux基本命令 集群安装 完成实验需要以下相关知识 解压命令 tar -zxvf XX.tar. ...

  9. Hadoop 集群搭建

    Hadoop 集群搭建 2016-09-24 杜亦舒 目标 在3台服务器上搭建 Hadoop2.7.3 集群,然后测试验证,要能够向 HDFS 上传文件,并成功运行 mapreduce 示例程序 搭建 ...

  10. 不看就亏系列!这里有完整的 Hadoop 集群搭建教程,和最易懂的 Hadoop 概念!| 附代码...

    作者 | chen_01_c 责编 | Carol 来源 | CSDN 博客 封图 | CSDN付费下载于视觉中国 hadoop介绍 Hadoop 是 Lucene 创始人 Doug Cutting, ...

最新文章

  1. numpy维度交换_15年!NumPy论文终出炉,还登上了Nature
  2. 当机器人遇上神经科学时,将会发生什么?
  3. python和c哪个适合入门-Python和C先学哪个好?
  4. [mmu/cache]-ARMV8 MMU内存管理中的Memory attributes和Cache policies
  5. 10倍性能提升!DLA SQL推出基于Alluxio的数据湖分析加速功能
  6. 为机场按上一双“慧眼”消灭飞机的“黑色十分钟”
  7. SQLAlchemy的使用---M2M增删改查
  8. 谈一谈SQL Server中的执行计划缓存(下)
  9. ElasticSearch 安装与API的使用
  10. 小黑笔记:transe模型
  11. 城市电子地图站点 推荐
  12. python通过opc读plc实例_python调用openopc读写plc
  13. 阿里云服务器是否限制流量?阿里云固定宽带和按使用流量计费2种方式解读
  14. 小米2A com.android.phone,104.android 简单的检查小米手机系统和华为手机系统是否打开通话自动录音功能,跳转通话录音页面...
  15. Android修行手册 - ConstraintLayout示例
  16. [分享]浅谈分布式数据库
  17. php中composer require和composer require --dev的区别
  18. SQL---In-Exists-Any
  19. Hive内置函数与常用函数汇总
  20. vue 系统服务器,vue可以运行在windows服务器

热门文章

  1. [微信小程序]物流信息样式加动画效果(源代码附效果图)
  2. iOS 屏幕亮度和闪光灯控制
  3. C#反射使用时注意BindingFlags的用法(转载)
  4. rocketmq-flink
  5. Android Binder概述
  6. Python统计字符串中的中英文字符、数字空格,特殊字符
  7. 大数据是一座孤单的小岛
  8. SQLite第三方框架FMDB的使用,以及使用FMDatabaseQueue保证线程安全
  9. Centos5上firefox的升级
  10. 表单系列之input number总结