mysql群集配置_CentOS7 - 建立一个MySQL集群

Standing up a MySQL cluster

此配方将指导您完成设置MySQL群集的过程。 通过跨多个系统划分数据并维护副本以避免单点故障,群集数据库可以应对可伸缩性和高可用性的挑战。

集群的成员称为节点。 MySQL集群中有三种节点类型:数据节点,API节点和管理节点。 数据节点负责存储数据。 然后,用户和进程连接到API节点以访问数据库。 管理节点作为整体管理集群。 虽然可以在同一系统上安装多个节点,但是,API节点和数据节点都可以托管在同一系统上。 但是,在同一系统上托管多个数据节点显然不是一个好主意,因为它否定了MySQL分发数据的努力。

准备

此配方演示了如何使用四个系统部署MySQL集群。 第一个系统将托管管理节点,我们假设它具有IP地址192.168.56.100。 第二个系统将托管API节点并具有地址192.168.56.101。 其余系统将配置数据节点,并使用地址192.168.56.102和192.168.56.103。 您需要使用root帐户或sudo在所有四个系统上进行管理访问.

怎么做。。。

请按照以下步骤设置群集MySQL数据库:

  • 从MySQL网站下载集群存档,并使用tar解压缩其包:
curl -L dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/  MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar | tar x
  • 在每个系统上,安装perl-Data-Dumper并将已安装的mariadb-libspackage替换为下载的MySQL-Cluster-shared软件包:
yum install perl-Data-Dumper MySQL-Cluster-shared-gpl-*.rpmyum erase mariadb-libs
  • 在每个系统上安装MySQL-Cluster-server和MySQL-Cluster-client软件包:
yum install MySQL-Cluster-{server,client}-gpl-*.rpm
  • 在托管管理节点的系统上,创建/ var / lib / mysql-cluster目录:
mkdir /var/lib/mysql-cluster
  • 在/var/lib/mysql-cluster/config.ini中为管理节点创建集群的配置文件,如下所示:
[ndbd default]NoOfReplicas = 2DataMemory = 100MIndexMemory = 10MServerPort = 2202[ndb_mgmd]hostname = 192.168.56.100[mysqld]hostname = 192.168.56.101[ndbd]hostname = 192.168.56.102[ndbd]hostname = 192.168.56.103
  • 启动管理节点:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
  • 在管理节点系统的防火墙中打开端口1186:
firewall-cmd --zone=public --permanent --add-port=1186/tcpfirewall-cmd --reload
  • 在每个数据节点的系统上,使用以下命令创建文件/etc/my.cnf:
[mysql_cluster]ndb-connectstring = 192.168.56.100
  • 启动每个数据节点:
ndbd
  • 在数据节点的系统防火墙中打开端口2202:
firewall-cmd --zone=public --permanent --add-port=2202/tcpfirewall-cmd --reload
  • 使用以下命令在托管API节点的系统上创建/etc/my.cnf:
[mysqld]ndbclusterdefault-storage-engine = ndbcluster[mysql_cluster]ndb-connectstring = 192.168.56.100
  • 启动MySQL服务器作为API节点:
mysqld_safe &
  • 检索安装MySQL服务器时创建的root帐户的临时密码。 它记录在/root/.mysql_secret中:
cat /root/.mysql_secret
  • 使用mysqladmin为root帐户设置新密码。 提示输入当前密码时,请输入上一步中标识的密码:
mysqladmin -u root -p password
  • 在API节点系统的防火墙中打开端口3306:
firewall-cmd --zone=public --permanent --add-service=mysqlfirewall-cmd --reload
  • 使用托管管理节点的系统上的ndb_mgm客户端验证集群的状态:
ndb_mgm -e SHOW

工作原理

本文教您如何使用两个数据节点设置MySQL集群数据库:一个API节点和一个管理节点。 管理节点由ndb_mgmdprocess组成,该处理器向其他节点提供配置信息并对其进行监视。 在数据节点上,ndbd进程处理群集数据的存储,分区和复制。 知道管理节点和数据节点的MySQL服务器充当API节点,用户可以通过该节点使用集群数据库。

Oracle维护的存储库中可用的软件包是在不支持网络数据库(NDB)的情况下构建的,因此我们首先从MySQL网站下载了一个存档,该存档包含将安装支持NDB /集群的MySQL版本的软件包:

curl -L dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL- Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar | tar x

MySQL抽象了数据的物理组织和操作细节,并将其委托给各种存储引擎。 不同的引擎具有不同的能力。 由于NDB引擎是实现集群的引擎,因此我们需要一个支持引擎的构建。 而不是像我们在其他配方中那样将curl的输出写入文件,这次我们使用x参数将输出直接传递给tar,以便动态扩展存档。

之后,我们从CentOS存储库安装了perl-Data-Dumper软件包,并将已安装的mariadb-libs软件包替换为每个系统上刚刚下载的MySQL-Cluster-shared软件包:

yum install perl-Data-Dumper MySQL-Cluster-shared-gpl-*.rpmyum erase mariadb-libs

MySQL-Cluster-shared软件包提供其他程序使用的共享库来使用MySQL。默认情况下,这些库取代了从CentOS存储库安装的MariaDB版本,使我们免于遇到会阻止干净安装的库冲突。由于之后不再需要它,我们卸载了mariadb-libspackage。

Yum在安装MySQL-Cluster-server软件包之后执行的一些安装后步骤是在Perl中编写的,并使用Perl的Data :: Dumper模块。这使得Perl-Data-Dumper包成为MySQL-Cluster-server包的依赖项。但是,一个错误导致Yum错过了这个,所以我们自己安装了这个包,以便MySQL-Cluster-server软件包的安装顺利进行。它不会阻止软件包的安装,但它需要我们手动完成一些额外的配置步骤。

有了这些要求,我们就在每个系统上安装了MySQL-Cluster-server和MySQL-Cluster-client软件包:

yum install MySQL-Cluster-{server,client}-gpl-*.rpm

整个集群的配置几乎集中在/var/lib/mysql-cluster/config.ini中的管理节点。 该文件分为几个部分,第一部分是[ndb default],它提供了应该用于集群的默认配置值。 这里的值适用于集群的每个节点,除非在相应节点的配置部分中被更具体的指令覆盖:

[ndbd default]NoOfReplicas = 2DataMemory = 100MIndexMemory = 10MServerPort = 2202

NoOfReplicas选项设置群集中的副本数。它的值可以设置为1或2,尽管2是推荐值。回想一下,不仅跨数据节点对集群数据库进行了分区,而且还对其进行了复制;每个节点通常承载一个分区,通常是数据库大小的1 / n(其中n是数据节点的数量),也是其他节点的副本。如果系统脱机,群集仍然可以正常运行,因为其数据在副本中仍然可用。 NoOfReplicas的值为1意味着只有一个数据库副本(没有副本),并且数据库的可用性取决于所有数据节点都在运行。

数据节点将其数据库的工作副本保存在RAM中,以减少延迟,同时定期将数据同步到磁盘。 DataMemory选项指定节点应为数据保留多少RAM,IndexMemory指定应为主键和唯一索引保留多少内存。无论您提供什么值,请确保有足够的资源可以避免RAM交换。

ServerPort选项指定节点将用于彼此通信的端口号。默认情况下,MySQL会动态分配端口,以便更容易在同一系统上运行多个节点,但由于此配方在其自己的主机系统上运行每个节点,我们需要知道端口以允许通过防火墙的流量,我们指定了我们自己。

配置中的后续部分使用hostname选项指定管理节点(通过[ndb_mgmtd]部分),API节点([mysqld]部分)和数据节点([ndbd]部分)的地址正在跑步。如多个[ndbd]部分所示,如果在集群中运行该类型的多个节点,则会出现相同类型的多个部分:

[ndb_mgmd]hostname = 192.168.56.100[mysqld]hostname = 192.168.56.101[ndbd]hostname = 192.168.56.102[ndbd]hostname = 192.168.56.103

在其余系统上,/etc/my.cnf被创建为数据节点和API节点使用的配置文件。 每个包含一个[mysql_cluster]部分,它提供了ndb-connectionstring选项:

[mysql_cluster]ndb-connectstring = 192.168.56.100

ndb-connectstring选项指定承载管理节点的系统的地址。 当数据和API节点联机时,它们与管理器通信以接收其配置信息。 如果您的群集有多个管理节点,则可以在用逗号分隔的连接字符串中列出其他节点:

ndb-connectstring = "192.168.56.100,192.168.56.105,192.168.56.106"

此外,API节点的配置包括[mysqld]部分。 它包括用于启用NDB引擎的ndbcluster选项和default-storage-engine选项,指示MySQL使用NDB来管理所有新表,除非在表的CREATE TABLE语句中另有指定:

[mysqld]ndbclusterdefault-storage-engine = ndbcluster

当用户或进程使用CREATE TABLE语句创建新表时,他们可以使用ENGINE指令指定应使用哪些MySQL存储引擎来管理其数据,例如:

CREATE TABLE users ( id INTEGER UNSIGNED NOT NULL PRIMARY KEY, first_name VARCHAR(50) NOT NULL DEFAULT '', last_name VARCHAR(50) NOT NULL DEFAULT '')ENGINE = NDBCluster;

默认引擎是InnoDB引擎。 但是,只有NDB管理的表中的数据才能进入群集。 如果表由另一个引擎管理,则数据驻留在API节点上本地,并且不可用于群集中的其他节点。 为了防止意外问题和这可能导致的任何混淆,我们更改了默认引擎,以便在未提供ENGINE指令时表将使用NDB引擎。

启动MySQL集群时启动节点的顺序很重要,因为一个节点可能依赖于其他节点。 首先启动管理节点,然后启动数据节点,然后启动API节点。

API节点上MySQL的root帐户的密码是在第一次启动服务器时随机生成的,并写入/root/.mysql_secret文件,就像我们在设置MySQL数据库配方时使用mysqladmin更改它一样:

cat /root/.mysql_secretmysqladmin -u root -p password

发送到管理节点系统上的ndb_mgm客户端的SHOW命令允许我们查看集群的状态,并确保一切正常运行。 可以在交互模式下调用客户端,也可以使用-e参数直接将命令传递给它:

ndb_mgm -e SHOW
543435866d74bda89affc15e8176261b.png

可以使用ndb_mgm客户端查看MySQL集群的状态

See also

Refer to the following resources for more information on working with MySQL clusters:

  • MySQL Reference Manual: MySQL Cluster Core Concepts (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-basics.html)
  • MySQL Reference Manual: MySQL Cluster Installation (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-installation.html)
  • MySQL Reference Manual: MySQL Cluster Nodes, Node Groups, Replicas, and Partitions (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-nodes-groups.html)
  • MySQL Reference Manual: Online Backup of MySQL Cluster (http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-backup.html)
  • Set Up a MySQL Cluster the Easy Way (http://youtube.com/watch?v=64jtbkuPtvc)
  • High Availability MySQL Cookbook by Alex Davies (https://www.packtpub.com/big-data-and-business-intelligence/high-availability-mysql-cookbook)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

叮!您收到一份超值Java基础入门资料!

Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例带领大家Java基…

jop怎么读音英语怎么说_“春晚”英语怎么说?

大家都说近年来的春节年味越来越淡,每年陪老人一起看春晚、上网吐槽春晚,应该算是最有年味的一件事了吧!你期待今年的春晚吗?在春晚即将开播之际,先和我一起了解一些有关“春晚”的英语知识吧!01、“春晚”…

2019 年软件开发人员必学的编程语言 Top 3

这篇文章将探讨编程语言世界的现在和未来,这些语言让新一代软件开发者成为这个数字世界的关键参与者,他们让这个世界变得更健壮、连接更加紧密和更有意义。开发者要想在 2019 年脱颖而出,这三门语言一定要关注。 作为软件开发者,…

小数据量计算最大lyapunov代码_Software | 计算Lyapunov指数的GUI工具箱及函数包汇总...

二十年前读书时用过的Lyapunov Exponents Toolbox,推荐给做非线性动力学入门的同学们。那个时候不会编写程序,做分支图、算连续或者离散系统的Lyapunov指数,极其困难,还好有这个工具箱,慢慢看源程序学会写一点改进的程…

git 小乌龟 更新分支_git常用操作

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式&a…

web 服务器 内存 影响_C/C++服务器开发常用的7大开源库,让你在同行中脱颖而出...

C/C服务器开发7大常用开源库,在这里简单介绍一下。1、OpenSSLOpenSSL是一个开放源代码的安全套接字层密码软件库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,应用程序可以使用这个包来进行安全通信,避免窃听&…

pandas 更改单元格的值_懂Excel轻松入门Python数据分析包pandas(二十四):连续区域...

此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的)经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得…

产生式是蕴含式_独栋别墅~下沉式庭院设计

遇见美. 发现美创造美. 成就美有趣、有情奢享生活.创艺空间设计项目概述:这是一套婚房,从设计到装修完毕,历经三年。这是一生幸福开启的地方。一层为会客厅、室内花园、餐厅、茶室、老人房。原始房屋整体空间不够方正,空间利用率低…

在前端中如何在表格中最后一行加入输入框_UI设计进阶干货 — 如何制定UI规范...

APP为何要制定设计规范作为UI设计师,整理设计规范也是设计能力的一种体现。但很多小公司的设计师都觉得, 整个公司只有自己一个设计师, 所有的设计稿都是自己一个人做的, 风格肯定都是统一的, 所以没必要花那么长时间去做一个没有用的东西。但其实规范的本身并不是只…

如何用三元组表表示下列稀疏矩阵_盘一盘 Python 系列特别篇21之:SciPy 稀疏矩阵...

引言和稠密矩阵相比,稀疏矩阵的最大好处就是节省大量的内存空间来储存零。稀疏矩阵本质上还是矩阵,只不过多数位置是空的,那么存储所有的 0 非常浪费。稀疏矩阵的存储机制有很多种 (列出常用的五种):COO (Coordinate List Format)…

六西格玛dfss_向六西格玛质量水平进攻!

为提高设计质量,提升研发团队整体作战能力,2019年初,技术中心确定了大力推进先进质量管理方法DFSS(六西格玛设计)的工作目标。一年来,在DFSS小组的策划组织和通用黑带大师的倾力支持下 ,技术中心各区域工程师积极地学习…

c字符串中包含双引号_必须知道的C语言知识细节:单引号和双引号正确用法

C语言中ACSII码字符单引号和双引号"在程序中经常出现,很简单,但却是十分重要的语法标点符号,初学者容易混淆使用。单引号在字符常量时使用,表示单个字符。例如:char c;c a;c 1;c A;当在单引号中出现两个及以上…

计算机组成原理哈工大期末_浅谈计算机组成原理(三)

1、第二章:存储系统通过下面的思维导图来依次分享「存储系统」里面重要知识点。2、第一节:存储器的结构1. 主存储器:简称主存,又称内存储器(内存),用来存放计算机运行期间所需的大量程序和数据,CPU可以直接…

网页中竖的目录怎么改成横的_怎么学习手绘插画?小白也能入门哦

怎么学习手绘插画?小白也能入门哦!在回答这个问题之前,我们先来认识一下什么插画?相信很多人对插画这个概念是很笼统的。插画在中国被人们俗称为插图。发展至今其应用范围很是广泛包括;出版物配图、卡通吉祥物、广告、…

python自动测试v_python下selenium自动化测试自我实践

周末实验自动化提交数据时,本来没打算写记录的,不过遇到一些问题,觉得可以提提。基本操作就不用写了,搜索过程中都发现了两个博客都出了seleniumpython的书,说明操作一搜一大把。 1. 等待页面加载完成 本来用的sleep()…

graphpad细胞增殖曲线_肿瘤干细胞?居然被这两个新加坡人轻松干掉了?

近日,著名医学期刊《自然•医学》上发表了一篇关于肿瘤干细胞的文章。来自新加坡的研究团队发现,人类非小细胞肺癌的肿瘤干细胞需要大量的蛋氨酸,以维持自身组蛋白的甲基化,这对于肿瘤干细胞的生长和致瘤作用至关重要。同时&#…

isight参数优化理论与实例详解_案例1(ISIGHT集成ADAMS CAR方法实现)

本文字数1304字25图,建议阅读时间7分钟强调一下是ISIGHT,不是INSIGHTINSIGHT是ADAMS内置的一个试验设计模块,它提供了一组统计工具,用于分析仿真结果,辅助优化和改进系统ISIGHT是功能强大的计算机辅助优化平台&#xf…

修改图片src_【学习园地】企业SRC搭建

xSRC-企业SRC搭建腾讯xSRC 开源版是腾讯安全应急响应中心(TSRC)面向合作伙伴推出的安全应急响应中心(SRC)建站软件,软件源代码开放,可支持合作伙伴轻松构建SRC平台,省去大量开发运维工作,并支持个性化功能及页面设置,企…

2 数据源配置_论多数据源(读写分离)的实现方案

好的,作为一个合格的bug生产者,我们直接进入主题,多数据源和读写分离实现方案。首先多数据源和读写分离什么时候我们才需要呢?多数据源:一个单体项目过于复杂,需要操作多个业务库的时候,就需要多…

docker安装gitlab_docker 安装部署gitlab

下载镜像并且启动//下载镜像(镜像较大,如果网速不行可以切换阿里云镜像仓库) docker pull gitlab/gitlab-ce:latest //启动镜像 docker run --name gitlab -d -p 18080:80 -p 1443:443 -p 2222:22 -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/lo…