mysql数据库rp集群,使用MySQL-Cluster搭建MySQL数据库集群

1、MySQL集群的作用:

- 解决访问节点的单点故障

- 数据存储节点的单点故障

- 解决数据存储节点数据备份问题

2、集群:

使用一组服务器提供相同的服务

3、关于MySQL-Cluster:

MySQL官方提供的集群版本

已集成标准版MySQL程序,可独立安装使用

采用NDB(Network DataBase)引擎

假定每个节点都有独立内存、硬盘

利用廉价硬件减少整个数据库的单点故障

4、集群中服务器的角色

- 数据节点:ndbd(单线程) ndb_mtd(多线程)   存储数据的(表里的记录)

- Sql节点:mysqld  是客户端访问数据的接口,负责执行SQL命令

可理解为支持NDB的标准MySQL服务器,仅存储表结构、独立的用户授权

面向客户端提供用户鉴权、SQL查询等访问服务

- 管理节点:ndb_mgmd  管理集群中的所有服务器

客户端:client 访问数据

5、案例拓扑:

0818b9ca8b590ca3270a3433284dd417.png

6、0818b9ca8b590ca3270a3433284dd417.pngMySQL集群的搭建(配置)

1)公共配置:

# rpm -qa | grep -i mysql

# service mysql  stop ; chkconfig  mysql off

# rpm -e --nodeps MySQL-devel MySQL-embeddedMySQL-test MySQL-server MySQL-client MySQL-shared MySQL-shared-compat

//保留RHEL自带的mysql-libs包

# rm -rf  /etc/my.cnf

# rm -rf  /var/lib/mysql/*

# tar -xvfMySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar

# rpm -Uvh MySQL-Cluster-*.rpm

2)配置管理节点:

运行管理进程   ndb_mgmd

配置文件  /etc/config.ini   (服务器的角色  和角色对应的ip  id号   工作目录)

[ndbd default] :数据节点的公共配置

[ndb_mgmd] :指定管理节点

[ndbd] :指定数据节点

[mysqld] :指定sql节点

# mkdir  -p    /var/log/mysql-cluster   //创建工作目录

# vim /etc/config.ini   //编写主配置文件

[ndbd default]

NoOfReplicas=2       //保留2份数据拷贝

DataMemory=80M     //数据缓存大小

IndexMemory=18M   //索引缓存大小

[ndb_mgmd]

nodeid=7      //管理节点的ID标识

hostname=192.168.4.100   //管理节点的IP地址

datadir=/var/log/mysql-cluster    //工作目录

[ndbd]           //设置数据节点ndbA

nodeid=8      //数据节点ndbA的ID标识

hostname=192.168.4.30     //此节点的IP地址

datadir=/var/log/mysql-cluster/data     //工作目录

[ndbd]         //设置数据节点ndbB

nodeid=9

hostname=192.168.4.40

datadir=/var/log/mysql-cluster/data

[mysqld]      //设置sql节点sqlA

nodeid=10      //sql节点sqlA的ID标识

hostname=192.168.4.10     //此节点的IP地址

[mysqld]      //设置sql节点sqlB

nodeid=11

hostname=192.168.4.20

:wq

3)配置数据节点:

运行数据进程   ndbd

配置文件:  /etc/my.cnf

#mkdir -p   /var/log/mysql-cluster/data    //创建工作目录

#vim    /etc/my.cnf

[mysqld]

datadir=/var/log/mysql-cluster/data       //工作目录

ndb-connectstring=192.168.4.100    //管理节点IP地址

ndbcluster                     //指定使用ndbcluster集群存储引擎

[mysql_cluster]

ndb-connectstring=192.168.4.100   //如何连接管理节点

:wq

4)配置sql节点

运行mysql服务  mysql(此服务是由mysql-cluster软件包提供)

#vim   /etc/my.cnf

[mysqld]

ndbcluster                                //指定使用ndbcluster集群存储引擎

default-storage-engine=ndbcluster    //指定表的默认存储引擎是 ndbcluster

ndb-connectstring=192.168.4.100

[mysql_cluster]

ndb-connectstring=192.168.4.100     //如何连接管理节点

:wq

7、启动不同角色服务器上进程

1)  启动管理节点上的管理进程

#ndb_mgmd  -f  /etc/config.ini

//启动进程,结合-f选项读取.ini配置;默认后台模式,调试时可加--nodaemon;修改了配置以后,可加--initial重新初始化

#netstat -untlap  |  grep   :1186    //查看进程

#pkill  -9   ndb_mgmd      //杀死进程

2)依次启动数据节点上的数据进程

#ndbd

//首次执行时,可加--initial初始化;多个数据节点的操作相同

3)依次启动sql节点上的数据库服务

#service   mysql start  //多个sql节点的操作相同

8、查看集群状态

1)管理节点上登录管理界面,查看状态

#ndb_mgm

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)]  2node(s)

id=8 @192.168.4.30  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0, *)

id=9 @192.168.4.40  (mysql-5.6.14 ndb-7.3.3, Nodegroup: 0)

[ndb_mgmd(MGM)]      1 node(s)

id=7 @192.168.4.100  (mysql-5.6.14 ndb-7.3.3)

[mysqld(API)]       2 node(s)

id=10      @192.168.4.10  (mysql-5.6.14 ndb-7.3.3)

id=11      @192.168.4.20  (mysql-5.6.14 ndb-7.3.3)

ndb_mgm>

2)Sql节点的mysql初始化

重设root密码;为客户端访问添加用户授权

#service mysqlstart

#mysql -uroot -p初始密码    //初始密码见/root/.mysql_secret文件

3)在sql节点上,检查默认的存储引擎

Mysql>show engines;

9、测试访问节点的单点故障

在sql节点上授权可以从远端的客户机连接自己

Grant all on  webdb.* to webuser@”%”identified by “webuser88”;  //两个sql节点都做授权

客户端访问:#mysql-h192.168.10/20  -uwebuser -pwebuser88

mysql>create  database  webdb;

mysql>create  table webdb.a(id int);

mysql>insert   into webdb.a values(1000);

mysql> select  * from webdb.a ;

访问sqlA节点操纵数据,在sqlB上会同步结果。

10、测试数据节点的单点故障

数据节点之间可以互相备份,自动选举Master,自动同步数据。测试时可关掉一个数据节点的ndbd服务,插入、查询数据验证数据的同步性。

Sql节点和数据节点的进程正常运行后,不需要重启的话,管理节点可以关掉

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

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

相关文章

桌面虚拟化云技术将支撑数字化医院

桌面虚拟化云技术将支撑数字化医院 2013-12-04 10:32 现今医疗行业已经从医院——患者的二元关系走向从医院——患者——政府监督——医疗保险的多元关系,医疗体系需要更高效的运转,患者需要更好的就医体验,这使得医疗行业信息化建设的重要性…

Blazor University (23)路由 —— 路由参数

原文链接:https://blazor-university.com/routing/route-parameters/路由参数源代码[1]到目前为止,我们已经了解了如何将静态 URL 链接到 Blazor 组件。静态 URL 只对静态内容有用,如果我们希望同一个组件根据 URL 中的信息(例如客…

【经典回放】多种语言系列数据结构算法:栈(C版)

本文采用C语言实现栈结构算法并举例应用。 一 栈的基本原理分析 作为栈这种数据结构,数据是进行所谓的先进后出操作,但栈在操作中,并不需要在中间插入删除操作、一般也不需要在进栈数据中查找什么,这种情况下,恰恰是顺序表可以完成的非常好的场合,所以栈经常是用一个简单…

Android之提示android.content.res.Resources$NotFoundException: Resource ID #0x7f08010a

1 问题 在我的oppo机器上面运行一个页面没有奔溃,但是在红米安卓5.1版本运行页面奔溃,奔溃信息如下 /Timeline(11600): Timeline: Activity_launch_request time:61313216 I/WtProcessController( 3721): FOREGROUND INFO: name=com.appsinnova.android.keepshare uid=1023…

《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。 本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖…

Javascript和android原生互调

最近在做原生和js端的互调的功能&#xff0c;自己改了个demo&#xff0c;给大家讲解下。 先上js代码 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>方法调用基本流程测试</title> </head> <body> &l…

ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]

PHP没有中间件&#xff0c;导致了对很多麻烦。比如&#xff0c;对数据库的操作必须要链接数据库&#xff0c;然后做SQL操作。WEB程序直接操作数据库的方法&#xff0c;这样会带来很多人为因素的事故隐患&#xff0c;以及管理上的麻烦&#xff0c;尤其是对大型的网站应用来说。规…

HttpCookie

参考 : http://www.cnblogs.com/fish-li/archive/2011/07/03/2096903.html 上文结尾有提到一个说法 4. HttpRequest.Cookies 与 HttpResponse.Cookies 会有关系&#xff08;很奇怪吧&#xff09;。 微软官网也是这么说的 : https://msdn.microsoft.com/en-us/library/system.we…

Android之BaseQuickAdapter.setOnItemChildClickListener点击死人也没反应的原因

1 问题 用BaseQuickAdapter设置子view点击事件 unInstalledAdapter!!.setOnItemChildClickListener(object: BaseQuickAdapter.OnItemChildClickListener {override fun onItemChildClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) {var info =…

【经典回放】多种语言系列数据结构算法:栈(C#版)

本文采用C#语言实现栈结构算法并举例应用。 一、C#的栈对象使用 对C#而言,要使用栈是极其简单的事情,因为C#已经有栈对象,所以根本不需要自用再用顺序表构造栈,只需要你会说明、会应用即可。 在C#中栈对象的类型名称是Stack,这是个泛型的对象,所以,你在使用这个对象的时…

美国银行将AI应用于企业应收账款处理

据外媒消息&#xff0c;美国银行&#xff08;Bank of America&#xff09;与Fintech创业公司High Radius达成合作&#xff0c;将人工智能应用于企业应收账款处理。该应用程序专为大型、复杂的公司管理大笔支付业务&#xff0c;因这些公司常常发生回款信息丢失或一方单独收到付款…

在 Kubernetes 上部署 Secret 加密系统 Vault

HashiCorp Vault 是一个基于身份的 Secret 和加密管理系统。Secret 是您想要严格控制访问的内容&#xff0c;例如 API 加密密钥、密码或证书。Vault 提供由身份验证和授权方法控制的加密服务。使用 Vault 的 UI、CLI 或 HTTP API&#xff0c;可以安全地存储和管理对机密和其他敏…

《看聊天记录都学不会C语言?太菜了吧》(15)你学了一节课的函数我5分钟搞定了,还很熟

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 本系列文章将会以通俗易懂的对话方式进行教学&#xff0c;对话中将涵盖…

【经典回放】多种语言系列数据结构算法:栈(JavaScript版)

本文采用JavaScript语言实现栈结构算法并举例应用。 JavaScript的栈是数组对象中自动提供的,这点如同C#,实际也不需要自己编写什么栈的程序,如果你用: var s=new Array(); 定义一个s的数组,则这个s上将有以下的方法可供使用: 其中:FF: Firefox, IE: Internet Explore…

设计模式(10)-----模板方法模式

模板方法模式(Template Method) 定义 定义了一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 UML类图 例子 AbstractClass package com.csdhsm.pattemdesign.template;/** * Title: …

Android之提示Caused by: java.lang.UnsupportedOperationException: Binary XML file line #67: You must sup

1 问题 : Caused by: java.lang.UnsupportedOperationException: Binary XML file line #67: You must supply a layout_width attribute. 05-08 16:42:59.322 23038 23038 E AndroidRuntime: at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:7…

SLES修改本地FTP安装源

2019独角兽企业重金招聘Python工程师标准>>> SLES修改本地FTP安装源 一、配置本机FTP............................................................................................................. 1 1.1、安装.............................................…

.NET7 Preview4:重构的返回值TypedResults

为了更好的测试&#xff0c;更好的性能&#xff0c;Preview4带了一个新的请求返回值类型&#xff0c;这个新的类型中封装了所有的Http请求返回状态函数&#xff0c;还包括了返回成功后的几种数据类型&#xff0c;下面列举了几个常用的类型&#xff1a;app.MapGet("/test_o…

MATLAB软件禁用利好,Matlab被禁用?一款国产软件站了出来说:我就是中国的Matlab...

众所周知&#xff0c;前段时间Matlab被禁用&#xff0c;引发了网友们对于国产工业软件落后的诸多思考&#xff0c;比如为什么落后&#xff0c;落后到什么程度&#xff0c;有没有替代品等等。并且从Matlab到EDA&#xff0c;再到CAD等等&#xff0c;甚至工业操作系统等等&#xf…

CMDB资产采集

Paramikoimport paramiko private_key paramiko.RSAKey.from_private_key_file(/home/auto/.ssh/id_rsa) # 创建SSH对象ssh paramiko.SSHClient()# 允许连接不在know_hosts文件中的主机ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 连接服务器ssh.connect(ho…