热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQLCluster集群的初级部署教程_MySQL

MysqlCluster概述MySqlCluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。它允许在无共享的系统中部署内存中数据库的Cluster.通过无共享体系

Mysql Cluster概述

MySql Cluster最显著的优点就是高可用性,高实时性,高冗余,扩展性强。

它允许在无共享的系统中部署"内存中"数据库的Cluster.通过无共享体系结构,系统能够使用廉价的硬件.此外,由于每个组件有自己的内存和磁盘,所以不存在单点故障.

它由一组计算机构成,每台计算机上均运行者多种进程,包括mysql服务器,NDB cluster的数据节点,管理服务启,以及专门的数据访问程序

所有的这些节点构成一个完整的mysql集群体系.数据保存在"NDB存储服务器"的存储引擎中,表(结构)则保存在"mysql服务器"中.应用程序通过"mysql服务器"访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理"NDB存储服务器".

基本概念

"NDB"是一种"内存中"的存储引擎,它具有可用性高和数据一致性好的特点.下面介绍mysql cluster 节点时,它表示进程.在单台计算机上可以有任意数目的节点.

管理节点(MGM):这类节点的作用是管理mysql cluster内的其他节点,如配置文件和cluster 日志,启动并停止节点,运行备份等.cluster中的每个节点从管理服务器上检索配置数据,并请求管理服务器所在位置的方式.当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器上,然后,又将这类信息写入cluster日志。由于这类节点负责管理其他节点的配置,所以应在启动其他节点之前首先启动这类节点.MGM节点是用命令"ndb_mgmd"来启动

数据节点(NDB):这类节点用于保存cluster的数据.数据节点的数目与副本的数目相关,是片段的倍数.假设有2个副本,每个副本有2个片段,那么就有4个数据节点.不过没有必要设置多个副本.数据节点是用命令"ndbd"来启动的.

SQL节点:这是用来访问cluster数据的节点.对于MYSQL cluster来说,客户端节点是使用NDB cluster存储引擎的传统Mysql服务器.通常,sql节点使用将"ndbcluster"添加到"my.cnf"后使用"mysqld" 启动

此外,可以有任意数目的cluster客户端进程或应该程序.它们分为两种类型,即标准mysql客户端和管理客户端.

标准mysql客户端:能够从php,perl,c,c++,java,python,ruby等编写的现有mysql应用程序上访问mysql cluster

管理客户端:这类客户端与管理服务器相连,并提供了启动和停止节点,启动和停止消息跟踪,显示节点版本和状态,启动和停止备份等命令.

以下是mysql cluster 架构示意图:

由于Mysql Cluster采用的是TCP/IP方式连接,并且节点之间的数据传输没有加密,最后使用单独的子网里.

下面来实施部署

为了方便 这里我把管理节点,数据节点,sql节点放在一台机器上.

管理节点1 10.1.6.205

数据节点1 10.1.6.203

数据节点2 10.1.6.205

sql节点1 10.1.6.203

sql节点2 10.1.6.205

1.安装(这里安装7.2.6版本)

下载mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz 二进制包(里面包含ndb,mysql)

[email protected]:~# tar -C /usr/local -xzvf [email protected]:/usr/local# ln -s /usr/local/mysql-cluster-gpl-7.2.8-linux2.6-i686 [email protected]:/usr/local# cd [email protected]:/usr/local/mysql# scripts/mysql_install_db [email protected]:/usr/local/mysql# chown -R mysql:mysql /usr/local/mysql同理10.1.6.203

2.配置SQL节点和存储NDB节点

[email protected]:/usr/local/mysql# vim /etc/my.cnf [mysqld]basedir=/usr/local/mysql/datadir=/usr/local/mysql/data/user=mysqlport=3306socket=/tmp/mysql.sock ndbclustermax_connect_errors=10000ndb-cOnnectstring=10.1.6.205connect_timeout = 300 [mysql_cluster]ndb-cOnnectstring=10.1.6.205

同理10.1.6.203
3.配置管理节点

[email protected]:/usr/local/mysql# vim /opt/cluster/config.ini[ndbd default]NoOfReplicas=2 DataMemory=80M #分配data storage使用的内存 每个ndb占用IndexMemory=18M #分配index storage使用的内存 每个ndb占用 [tcp default]portnumber=2205 #ndb监听端口 #设置管理节点[ndb_mgmd]NodeId=1hostname=10.1.6.205datadir=/opt/cluster #在MGM上保存日志的目录 #设置存储节点NDB1[ndbd]NodeId=2hostname=10.1.6.203datadir=/usr/local/mysql/data #设置存储节点NDB2[ndbd]NodeId=3hostname=10.1.6.205datadir=/usr/local/mysql/data #设置SQL节点1[mysqld]NodeId=4hostname=10.1.6.203 #设置SQL节点2[mysqld]NodeId=5hostname=10.1.6.205[mysqld] #运行任意ip连接[mysqld]

4.启动mysql cluster

1)先启动管理节点服务器.2)启动NDB存储节点服务器.3)启动SQL节点服务器.

1)执行启动MGM节点进程

[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgmd -f /opt/cluster/config.iniMySQL Cluster Management Server mysql-5.5.22 ndb-7.2.6

必须用参数-f或–config-file告诉ndb_mgm配置文件config.ini文件所在的位置.
2)在2台存储节点服务器上,如果是第一次启动NDB进程的话,必须先执行以下命令:

[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd --initial2013-08-28 23:40:36 [ndbd] INFO  -- Angel connected to '10.1.6.205:1186'2013-08-28 23:40:36 [ndbd] INFO  -- Angel allocated nodeid: 2

注意:仅在首次启动NDB时,或者在备份/恢复或配置文件发生变化且重启NDB时才使用-initial参数.因为该参数会使节点删除由早期NDB实例创建的,用于恢复的任何文件,包括用于恢复的日志文件.
如果不是第一次启动,用以下命令

[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndbd

3)启动SQL节点服务器

[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqld_safe /etc/my.cnf &

5.查看各个节点情况

[email protected]:/usr/local/mysql# /usr/local/mysql/bin/ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showCluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0, Master)id=3 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s)id=1 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6) [mysqld(API)] 4 node(s)id=4 @10.1.6.203 (mysql-5.5.22 ndb-7.2.6)id=5 @10.1.6.205 (mysql-5.5.22 ndb-7.2.6)id=6 (not connected, accepting connect from any host)id=7 (not connected, accepting connect from any host) ndb_mgm>

6.测试

注意:与没有使用Cluster的Mysql相比,在mysql cluster内操作数据的方式没有太大的区别.操作时注意

1)表必须用engine=NDB或engine=NDBCLUSTER选项创建

2)每个NDB表必须有一个主键.如果在创建表时用户未定义主键,NDB Cluster存储引擎会自动生成隐含的主键.

该隐含键也将占用空间,就像任何其他的表索引一样.由于没有足够的内存来容纳这些自动创建的键,所以很容易出现问题.

在203 sql节点1上创建表

[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysql -uroot -pmysql> use test;mysql> create table dave (num int(10)) engine=ndb;mysql> show create table dave\G;*************************** 1. row ***************************  Table: daveCreate Table: CREATE TABLE `dave` ( `num` int(10) DEFAULT NULL) ENGINE=ndbcluster DEFAULT CHARSET=latin11 row in set (0.00 sec) mysql> insert into dave -> values -> (100);Query OK, 1 row affected (0.01 sec)mysql> select * from dave;+------+| num |+------+| 100 |+------+

然后在205 sql节点2上查看该表

[email protected]:/usr/local/mysql# /usr/local/mysql/bin/mysql -uroot -pmysql> use testmysql> select * from dave;+------+| num |+------+| 100 |+------+

测试OK

关注一下表

mysql> select * from ndbinfo.memoryusage;+---------+--------------+--------+------------+----------+-------------+| node_id | memory_type | used | used_pages | total | total_pages |+---------+--------------+--------+-------本文来源gaodai#ma#com搞*!代#%^码$网*-----+----------+-------------+|  2 | Data memory | 851968 |   26 | 83886080 |  2560 ||  2 | Index memory | 212992 |   26 | 19136512 |  2336 ||  3 | Data memory | 851968 |   26 | 83886080 |  2560 ||  3 | Index memory | 212992 |   26 | 19136512 |  2336 |

注意:使用量写满会访问不了,这时需要调整配置DataMemory,IndexMemory参数.各配置文件都需调整重启生效.

7.关闭cluster

[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/ndb_mgm -e shutdownConnected to Management Server at: 10.1.6.205:11863 NDB Cluster node(s) have shutdown.Disconnecting to allow management server to shutdown.

再关闭SQL节点mysqld服务

[email protected]:/usr/local/mysql/bin# /usr/local/mysql/bin/mysqladmin -uroot -p shutdownEnter password: 130829 02:19:57 mysqld_safe mysqld from pid file /usr/local/mysql/data//debian.pid ended[1]+ Done     /usr/local/mysql/bin/mysqld_safe /etc/my.cnf

以上就是mysql cluster初步部署, 更多相关内容请关注(www.gaodaima.com)!



推荐阅读
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • (九)Docker常用安装
    一、总体步骤1、搜索镜像2、拉取镜像3、查看镜像4、启动镜像5、停止镜像6、移除镜像二、安装tomcat1、dockerhub上面查找tomcat镜像 dockersearchto ... [详细]
  • 概述本章主要写当慢查询文件很大的时候怎样在线生成一个新的慢查询文件。测试环境:mysql5.6.2 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • 对于一般的扩展包,我们一般直接pipinstallxxx即可安装,但是unrar直接安装后,发现并不能通过Python程序实现解压的功能& ... [详细]
  • 【Python 爬虫】破解按照顺序点击验证码(非自动化浏览器)
    #请求到验证码base64编码json_img_datajson_raw.get(Vimage)#获取到验证码编码 #保存验证码图片到本地defbase64_to_img(bstr ... [详细]
author-avatar
何氏眼科-李剑华_951_745
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有