mysql集群原理群

您所在的位置: &
MySQL集群性能优化指南(1)
MySQL集群性能优化指南(1)
核子可乐译
MySQL集群是一款实时、可扩展的事务性数据库。可以通过扩展实现诸多企业级解决方案,例如移动支付系统、实时分析、数据流与分析以及内容管理等事务。在本文中,我们将共同探讨提升MySQL集群性能的最佳实践方案。通过这些方案,大家将能在各类工作负载中实现游刃有余的资源分配效果。
【51CTO精选译文】MySQL集群是一款实时、可扩展的事务性数据库。其设计初衷在于为对实时性能要求较高的应用程序打造一套嵌入式电信数据库,并实现运营商级别的可用性。不过MySQL集群也可以通过扩展实现诸多企业级解决方案,例如移动支付系统、实时分析、数据流与分析以及内容管理等事务。MySQL集群的横向扩展能力足以满足密集型工作负载的需求,其集群架构如下图所示:
整信集群由三类节点构成:数据节点、应用程序节点以及管理节点。
数据节点通常负责数据访问与存储事务。
应用程序节点提供由应用程序逻辑层及应用API指向数据节点的链接。
管理节点在集群配置体系中的作用至关重要,并在网络分区环境下负责负载指派。
在本文中,我们将共同探讨提升MySQL集群性能的最佳实践方案。通过这些方案,大家将能在各类工作负载中实现游刃有余的资源分配效果。
最适合MySQL集群的应用程序
MySQL集群能确保来自应用程序或者SQL节点的更新立即被用于集群体系中的每一个节点。表格被划分至一系列商用节点当中,从而实现数据库的横向可扩展性。
MYSQL集群在数据库层处理表格划分,这就避免了对应用程序层的影响。这一特性能够大大简化应用程序的开发与维护工作。在事务性工作负载方面,MySQL集群还能提供非常强大的数据吞吐能力。另外,这套集群可以利用多个并行SQL节点,且每个节点都提供多个连接。
最适合MySQL集群的应用程序包括:
交易平台/系统;
支付网关;
用户配置管理;
多人网络游戏;
DHCP宽带接入;
VoIP及视频会议。
识别性能问题
我们一直建议大家对延迟及事务数据吞吐量等性能指标进行重复检测方针。另一大关注重点在于考量数据库的特定变更及其可用性。大家应该在变更实际部署前进行性能测试,并在优化技术安置完毕后再次进行测试。
在某些情况下,我们可能无意中遇上必须满足的特殊需求。通过迭代流程,大家可以追踪目标的当前进展。除了检测应用程序的整体性能,大家还应该考虑个别事务的性能表现。某些查询请求可能需要很长时间才能执行完毕。
如果大家利用SQL对接入MySQL Enterprise Monitor的数据库进行查询,那么不妨试试Query Analyzer--它能追踪所有负载较高的事务。如果大家没有接入Enterprise Monitor,那么MySQL慢速查询日志也足以帮助我们找出处理过程过长的事务。我们可以通过对long_query_time变量的设定选择日志中到底应该保留哪些慢速查询(即慢到何种程度)。变量数值的单位是&秒&,将该数值设为&0&则代表在日志中记录下所有查询请求。
由于对long_query_time变量所做出的变更不会马上体现在活动连接当中,因此大家需要删除当前连接然后重新建立。
MySQL集群在数据节点内保留着全部细节信息。这部分数据可由名为NDBINFO的虚拟数据库直接使用。举例来说,NDBINFO能够显示磁盘页面缓冲区的使用信息。所谓磁盘页面缓冲区,其实是各个数据节点根据表格进行磁盘操作时的缓存。通常情况下,其缓冲命中率越高、则性能表现越好。调整这部分缓存的大小会对系统产生显著影响。大家可以通过mysql命令行访问磁盘页面缓冲数据。
内容导航&第 1 页: &第 2 页:
关于&&的更多文章
越来越多的web设计师提出了移动优先的口号,而随着硬件设施的完
本期重点推荐:转角遇到Zabbix:企业级分布式系统监控部署
任何一位已经实施了灾难恢复解决方案的数据中心管理者
Fedora 19(代号“薛定谔的猫”)最终正式版已经出炉
历经一年的开发与测试,Linux Deepin 12.12 正式版本
本书共10章,介绍的内容包括恶意软件(包括病毒、木马和蠕虫等)的深度防御方法,黑客的主要类型和防御方法,企业网络内、外部网
51CTO旗下网站您所在的位置: &
Lvs+Keepalived+MySQL Cluster架设高可用负载均衡Mysql集群
Lvs+Keepalived+MySQL Cluster架设高可用负载均衡Mysql集群
MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster存储引擎,允许在1个Cluster中运行多个MySQL服务器。在MyQL5.0 及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。
MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster存储引擎,允许在1个Cluster中运行多个MySQL服务器。在MyQL5.0 及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署&内存中&数据库的 Cluster。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL Cluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。
二、MySQL Cluster基本概念&
NDB是一种&内存中&的存储引擎,它具有可用性高和数据一致性好的特点。MySQL &Cluster能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在Cluster 级别上的存储引擎上做这个最简单。MySQL Cluster的NDB存储引擎包含完整的数据集,仅取决于Cluster本身内的其他数据。&
目前,MySQL Cluster的Cluster部分可独立于MySQL服务器进行配置。在MySQL Cluster中,Cluster
的每个部分被视为1个节点。&
管理(MGM)节点:这类节点的作用是管理MySQL &Cluster内的其他节点,如提供配置数据、启动并停止节点、运行备份等。由于这类节点负责管理其他节点的配置,应在启动其他节点之前首先启动这类节点。MGM节点是用命令&ndb_mgmd&启动的。&
数据(NDB)节点:这类节点用于保存Cluster的数据。数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点。不过没有必要设置多个副本。数据节点是用命令&ndbd&启动的。&
客户(SQL)节点:这是用来访问Cluster数据的节点。对于MySQL Cluster,客户端节点是使用NDB Cluster 存储引擎的传统MySQL服务器。通常,SQL节点是使用命令&mysqld -ndbcluster&启动的,或将&ndbcluster&添加到&f&后使用&mysqld&启动。&
注释:在很多情况下,术语&节点&用于指计算机,但在讨论MySQL Cluster时,它表示的是进程。在单台计算机上可以有任意数目的节点,为此,我们采用术语&Cluster主机&。&
管理服务器(MGM节点)负责管理Cluster配置文件和Cluster日志。Cluster中的每个节点从管理服务器检索配置数据,并请求确定管理服务器所在位置的方式。当数据节点内出现新的事件时,节点将关于这类事件的信息传输到管理服务器,然后将这类信息写入Cluster日志。
系统:CentOS6.4 32位 & 9台
软件包(可以去mysql官网下载/downloads/cluster/):
MySQL-Cluster-gpl-management-7.1.31-1.el6.i686.rpm
MySQL-Cluster-gpl-tools-7.1.31-1.el6.i686.rpm
MySQL-Cluster-gpl-client-7.1.31-1.el6.i686.rpm
MySQL-Cluster-gpl-server-7.1.31-1.el6.i686.rpm
MySQL-Cluster-gpl-storage-7.1.31-1.el6.i686.rpm
498)this.width=498;' onmousewheel = 'javascript:return big(this)' title="无标题4.png" alt="wKiom1OFwSTzvSc9AAGGtl899xs417.jpg" width="650" onreset="" onselect="" onunload="" onchange="" onsubmit="" src="/wyfs02/M02/2A/F6/wKiom1OFwSTzvSc9AAGGtl899xs417.jpg" />
498)this.width=498;' onmousewheel = 'javascript:return big(this)' title="无标题8.png" alt="wKioL1OFw-Gwy2L8AAGxWiLB-iU586.jpg" width="650" onreset="" onselect="" onunload="" onchange="" onsubmit="" src="/wyfs02/M01/2A/FB/wKioL1OFw-Gwy2L8AAGxWiLB-iU586.jpg" />
四、配置(请先卸载掉与mysql有关的所有RPM包)
1.LB-Master及LB-Backup配置
(1)LB-Master及LB-Backup安装keepalived和ipvsadm
&&&&&Keepalived&configuration& &------------------------& &Keepalived&version&&&&&&&:&1.2.1& &Compiler&&&&&&&&&&&&&&&&&:&gcc& &Compiler&flags&&&&&&&&&&&:&-g&-O2& &Extra&Lib&&&&&&&&&&&&&&&&:&-lpopt&-lssl&-lcrypto&& &Use&IPVS&Framework&&&&&&&:&No&&&&//配置出现错误& &IPVS&sync&daemon&support&:&No& &Use&VRRP&Framework&&&&&&&:&Yes& &Use&Debug&flags&&&&&&&&&&:&No& &解决方法:& &&&&&&&&&& &&&drwxr-xr-x.&3&root&root&4096&May&24&00:37&keepalived& &drwxr-xr-x.&3&root&root&4096&May&24&00:29&rc.d& &drwxr-xr-x.&2&root&root&4096&May&24&00:29&sysconfig& &&&&&& &配置以系统方式service启动& &&&&&&
(2)LB-Master及LB-Backup的keepalived主配置文档
&&&global_defs&{& &&&&&&&&&router_id&HaMySQL_1& &&&&&&&&&}& &vrrp_sync_group&VGM&{& &&&&&&&&&group&{& &&&&&&&&&VI_MYSQL& &&&&&&&&&}& &}& &vrrp_instance&VI_MYSQL&{& &&&&&&&&&state&MASTER&&&&&&&&&&&&&//LB-Backup设置为BACKUP& &&&&&&&&&interface&eth0& &&&&&&&&&lvs_sync_daemon_inteface&eth0& &&&&&&&&&virtual_router_id&55& &&&&&&&&&priority&100&&&&&&&&&&&&&//LB-Backup设置为90& &&&&&&&&&advert_int&5& &&&&&&&&&authentication&{& &&&&&&&&&&&&&&&&&auth_type&PASS& &&&&&&&&&&&&&&&&&auth_pass&123456& &&&&&&&&&}& &&&&&&&&&virtual_ipaddress&{& &&&&&&&&&&&&&&&&&192.168.2.200/24&dev&eth0& &&&&&&&&&}& &}& &&virtual_server&192.168.2.200&3306&{& &&&&&&&&&delay_loop&6& &&&&&&&&&lb_algo&rr& &&&&&&&&&lb_kind&DR& &&&&&&&&&persistence_timeout&6& &&&&&&&&&protocol&TCP& &&& &&&&&&&&&real_server&192.168.2.50&3306&{& &&&&&&&&&&&&&&&&&weight&100& &&&&&&&&&&&&&&&&&TCP_CHECK&{& &&&&&&&&&&&&&&&&&&&&&&&&&connect_timeout&3& &&&&&&&&&&&&&&&&&&&&&&&&&nb_get_retry&3& &&&&&&&&&&&&&&&&&&&&&&&&&delay_before_retry&3& &&&&&&&&&&&&&&&&&&&&&&&&&connect_port&3306& &&&&&&&&&&&&&&&&&}& &&&&&&&&&}& &&&&&&&&&real_server&192.168.2.60&3306&{& &&&&&&&&&&&&&&&&&weight&100& &&&&&&&&&&&&&&&&&TCP_CHECK&{& &&&&&&&&&&&&&&&&&&&&&&&&&connect_timeout&3& &&&&&&&&&&&&&&&&&&&&&&&&&nb_get_retry&3& &&&&&&&&&&&&&&&&&&&&&&&&&delay_before_retry&3& &&&&&&&&&&&&&&&&&&&&&&&&&connect_port&3306& &&&&&&&&&&&&&&&&&}& &&&&&&&&&}& &}& &&
(1)安装管理节点
(2)配置管理节点
&[ndbd&default]& &NoOfReplicas=2& &DataMemory=80M& &IndexMemory=18M& &&[tcp&default]& &portnumber=2202& &&[ndb_mgmd]& &id=1& &hostname=192.168.2.10& &datadir=/var/lib/mysql-cluster &&[ndbd]& &id=2& &hostname=192.168.2.30& &datadir=/var/lib/mysql &[ndbd]& &id=3& &hostname=192.168.2.40& &datadir=/var/lib/mysql &[mysqld]& &id=4& &hostname=192.168.2.50& &[mysqld]& &id=5& &hostname=192.168.2.60&
(3)启动管理节点
&&MySQL&Cluster&Management&Server&mysql-5.1.73&ndb-7.1.31& &&tcp&&&&&0&&&&&0&&&&0.0.0.0:1186&&&0.0.0.0:*&&&LISTEN&&&&&17629/ndb_mgmd&
3.数据节点(NDB1和NDB2)配置
(1)安装数据节点
(2)配置数据节点
&[mysqld]& &datadir=/var/lib/mysql &socket=/var/lib/mysql/mysql.sock& &user=mysql& &&symbolic-links=0& &&& &[mysqld_safe]& &log-error=/var/log/mysqld.log& &pid-file=/var/run/mysqld/mysqld.pid& &&& &[mysql_cluster]& &ndb-connectstring=192.168.2.10&
(3)启动数据节点
&2014-05-28&00:32:17&[ndbd]&INFO&&&&&--&Angel&connected&to&'192.168.2.10:1186'&2014-05-28&00:32:17&[ndbd]&INFO&&&&&--&Angel&allocated&nodeid:&2& &&2014-05-28&00:33:08&[ndbd]&INFO&&&&&--&Angel&connected&to&'192.168.2.10:1186'&2014-05-28&00:33:08&[ndbd]&INFO&&&&&--&Angel&allocated&nodeid:&3&
4.SQL节点(SQL1和SQL2)配置
网卡及屏蔽ARP设置
在现有网卡基础上添加一块lo:0网卡
498)this.width=498;' onmousewheel = 'javascript:return big(this)' title="无标题00.png" alt="wKioL1OF0K-jcWeNAADMjF9kAk4318.jpg" onreset="" onselect="" onunload="" onchange="" onsubmit="" src="/wyfs02/M00/2B/02/wKioL1OF0K-jcWeNAADMjF9kAk4318.jpg" />
&net.ipv4.conf.all.arp_announce&=&2& &net.ipv4.conf.all.arp_ignore&=&1& &&
(1)安装SQL节点
(2)配置SQL节点
&[mysqld]& &port&=&3306& &socket=/var/lib/mysql/mysql.sock& &ndbcluster& &default-storage-engine=NDBCLUSTER& &skip-name-resolve& &[mysql_cluster]& &ndb-connectstring=192.168.2.10&
(3)启动SQL节点
&Starting&MySQL..&SUCCESS!&& &&Starting&MySQL&SUCCESS!&& &&tcp&&&&&0&&&&&0&&&0.0.0.0:3306&&&&&&&&0.0.0.0:*&&&&&LISTEN&&&&&&3475/mysqld&
(4)配置远程连接(SQL1和SQL2配置一致)
&mysql&&grant&all&on&*.*&to&'nuo'@'%'&identified&by&'123';& &mysql&&flush&&
启动顺序一定要遵循:MGM&NDB&SQL
五、查看状态
1.查看MGM状态
&--&NDB&Cluster&--&Management&Client&--& &ndb_mgm&&show& &Connected&to&Management&Server&at:&localhost:1186& &Cluster&Configuration& &---------------------& &[ndbd(NDB)]&2&node(s)& &id=2&&&&@192.168.2.30&&(mysql-5.1.73&ndb-7.1.31,&Nodegroup:&0,&*)& &id=3&&&&@192.168.2.40&&(mysql-5.1.73&ndb-7.1.31,&Nodegroup:&0)& &&& &[ndb_mgmd(MGM)]&1&node(s)& &id=1&&&&@192.168.2.10&&(mysql-5.1.73&ndb-7.1.31)& &&& &[mysqld(API)]&&&2&node(s)& &id=4&&&&@192.168.2.50&&(mysql-5.1.73&ndb-7.1.31)& &id=5&&&&@192.168.2.60&&(mysql-5.1.73&ndb-7.1.31)&
2.查看LB-Master状态
&Starting&keepalived:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&[&&OK&&]& &&1:&lo:&&LOOPBACK,UP,LOWER_UP&&mtu&16436&qdisc&noqueue&state&UNKNOWN&& &&&&&link/loopback&00:00:00:00:00:00&brd&00:00:00:00:00:00& &&&&&inet&127.0.0.1/8&scope&host&lo& &&&&&inet6&::1/128&scope&host&& &&&&&&&&valid_lft&forever&preferred_lft&forever& &2:&eth0:&&BROADCAST,MULTICAST,UP,LOWER_UP&&mtu&1500&qdisc&pfifo_fast&state&UNKNOWN&qlen&1000& &&&&&link/ether&00:0c:29:22:3d:01&brd&ff:ff:ff:ff:ff:ff& &&&&&inet&192.168.2.20/24&brd&192.168.2.255&scope&global&eth0& &&&&&inet&192.168.2.200/24&scope&global&secondary&eth0& &&&&&inet6&fe80::20c:29ff:fe22:3d01/64&scope&link&& &&&&&&&&valid_lft&forever&preferred_lft&forever& &&IP&Virtual&Server&version&1.2.1&(size=4096)& &Prot&LocalAddress:Port&Scheduler&Flags& &&&-&&RemoteAddress:Port&&&&&&&&&&&Forward&Weight&ActiveConn&InActConn& &TCP&&192.168.2.200:mysql&rr&persistent&6& &&&-&&192.168.2.50:mysql&&&&&&&&&&&Route&&&100&&&&0&&&&&&&&&&0&&&&&&&&&& &&&-&&192.168.2.60:mysql&&&&&&&&&&&Route&&&100&&&&0&&&&&&&&&&0&
3.查看LB-Backup状态
&Starting&keepalived:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&[&&OK&&]& &&1:&lo:&&LOOPBACK,UP,LOWER_UP&&mtu&16436&qdisc&noqueue&state&UNKNOWN&& &&&&&link/loopback&00:00:00:00:00:00&brd&00:00:00:00:00:00& &&&&&inet&127.0.0.1/8&scope&host&lo& &&&&&inet6&::1/128&scope&host&& &&&&&&&&valid_lft&forever&preferred_lft&forever& &2:&eth0:&&BROADCAST,MULTICAST,UP,LOWER_UP&&mtu&1500&qdisc&pfifo_fast&state&UNKNOWN&qlen&1000& &&&&&link/ether&00:0c:29:27:e1:98&brd&ff:ff:ff:ff:ff:ff& &&&&&inet&192.168.2.21/24&brd&192.168.2.255&scope&global&eth0& &&&&&inet6&fe80::20c:29ff:fe27:e198/64&scope&link&& &&&&&&&&valid_lft&forever&preferred_lft&forever& &&IP&Virtual&Server&version&1.2.1&(size=4096)& &Prot&LocalAddress:Port&Scheduler&Flags& &&&-&&RemoteAddress:Port&&&&&&&&&&&Forward&Weight&ActiveConn&InActConn& &TCP&&192.168.2.200:mysql&rr&persistent&6& &&&-&&192.168.2.50:mysql&&&&&&&&&&&Route&&&100&&&&0&&&&&&&&&&0&&&&&&&&&& &&&-&&192.168.2.60:mysql&&&&&&&&&&&Route&&&100&&&&0&&&&&&&&&&0&
1.客户端1(CentOS6.4 32位,IP:192.168.2.80/24)
&&Enter&password:& &mysql&&show&& &+--------------------+& &|&Database&&&&&&&&&&&|& &+--------------------+& &|&information_schema&|& &|&mysql&&&&&&&&&&&&&&|& &|&ndbinfo&&&&&&&&&&&&|& &|&test&&&&&&&&&&&&&&&|& &+--------------------+& &mysql&&create&database&t;& &mysql&&use&t;& &mysql&&create&table&t2(id&int);& &mysql&&insert&into&t2&values(10);& &mysql&&insert&into&t2&values(20);&
2.LB-Master查看连接状态
&IP&Virtual&Server&version&1.2.1&(size=4096)& &Prot&LocalAddress:Port&Scheduler&Flags& &&&-&&RemoteAddress:Port&&&&&&&&&&&Forward&Weight&ActiveConn&InActConn& &TCP&&192.168.2.200:mysql&rr&persistent&6& &&&-&&192.168.2.50:mysql&&&&&&&&&&&Route&&&100&&&&1&&&&&&&&&&0&&&&&&&&&& &&&-&&192.168.2.60:mysql&&&&&&&&&&&Route&&&100&&&&0&&&&&&&&&&0&&&&&&&&&& &&IPVS&connection&entries& &pro&expire&state&&&&&&&source&&&&&&&&&&&&&virtual&&&&&&&&&&&&destination& &TCP&14:48&&ESTABLISHED&192.168.2.80:49993&192.168.2.200:3306&192.168.2.50:3306& &TCP&00:54&&NONE&&&&&&&&192.168.2.80:0&&&&&192.168.2.200:3306&192.168.2.50:3306&
3.客户端2(CentOS6.4 32位,IP:192.168.2.81/24)
&&Enter&password:& &mysql&&show&& &+--------------------+& &|&Database&&&&&&&&&&&|& &+--------------------+& &|&information_schema&|& &|&mysql&&&&&&&&&&&&&&|& &|&ndbinfo&&&&&&&&&&&&|& &|&t&&&&&&&&&&&&&&&&&&|& &|&test&&&&&&&&&&&&&&&|& &+--------------------+& &mysql&&use&t;& &mysql&&select&*&from&t2;& &+------+& &|&id&&&|& &+------+& &|&&&20&|& &|&&&10&|& &+------+&
4.LB-Master查看连接状态
&IPVS&connection&entries& &pro&expire&state&&&&&&&source&&&&&&&&&&&&&virtual&&&&&&&&&&&&destination& &TCP&00:36&&NONE&&&&&&&&192.168.2.81:0&&&&&192.168.2.200:3306&192.168.2.60:3306& &TCP&14:18&&ESTABLISHED&192.168.2.81:42435&192.168.2.200:3306&192.168.2.60:3306&
总结:在客户端1上插入数据后,服务器显示客户端1连接的是SQL1(192.168.2.50),在客户端2上进行查询,能查询到客户端1输入的数据,服务器显示客户端2连接的是SQL2(192.168.2.60),所以,数据是同步的,并且是一致性的。
51CTO博客:
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
在企业级虚拟化市场上,VMware vSphere占据重要的地位。VMware v
本次的专刊为大家提供了Oracle最新推出的Java SE 8详细的开发教程,从解读到探究Java 8最新
讲师: 0人学习过讲师: 1人学习过讲师: 4人学习过
Angular.js 是一个MV*(Model-View-Whatever,不管是M
本周,搜狗浏览器被爆存在重大漏洞的消息被炒得沸沸扬
IE浏览器不支持很多CSS属性是出了名的,即便在支持的
本书综合介绍了微软的Windows Server 2003操作系统和微软其他常用应用软件提供的服务,同时融入了作者在Windows网络管理上的多年
51CTO旗下网站MySQL集群配置 - wang1988ming - 博客园
一、运行环境配置
管理节点:操作系统:SUSE Linux Enterprise Server 11 (x86_64),主机名:gvhost49,ip地址:10.0.31.49
数据节点1:操作系统: SUSE Linux Enterprise Server 9 (x86_64),主机名:gvhost40,ip地址:10.0.31.40
数据节点2:操作系统: SUSE Linux Enterprise Server 10 (x86_64),主机名:gvhost41,ip地址:10.0.31.41
SQL节点有两个,和数据节点装在一起。
二、安装配置管理节点
2.1、下载mysql-cluster-gpl-7.1.22-linux-x86_64-glibc23.tar.gz安装包,注意服务器架构类型。
2.2、建立mysql用户组和mysql用户:#groupadd mysql& && useradd mysql -g mysql
2.3、解压压缩包并重命名:
&&&&&&& #tar zxvf mysql-cluster-gpl-7.1.22-linux-x86_64-glibc23.tar.gz
&&&&&&& #mv mysql-cluster-gpl-7.1.22-linux-x86_64-glibc23 mysqlc
2.4、进入mysqlc目录创建logs目录并更改mysqlc目录的所有者
&&&&&&& #cd mysqlc &&& mkdir logs
&&&&&&& #cd .. && chown &R mysql:mysql mysqlc&&&&&&&
2.5、建系统相关数据库以及表
&&&&&&& #scripts/mysql_install_db --user=mysql
2.6、配置管理节点
&&&&&&& #mkdir /var/lib/mysql-cluster && cd /var/lib/mysql-cluster
&&&&&&& # vim /var/lib/mysql-cluster/config.ini
三、安装配置数据节点
因为两台数据节点操作一样,所以这里只列出数据节点1的配置过程。
&&&&&&& 复制管理节点上的mysqlc整个目录到数据节点1上的/usr/local目录,重命名为mysql,确保mysql目录的所属用户和组为mysql。
3.2、复制配置文件和启动脚本
&&&&&&& #cp support-files/f /f
&&&&&&& #cp support-files/mysql.server /etc/init.d/mysqld
3.3、编辑配置文件
&&&&&&& #vim /f
&&&&& 增加[mysqld]下面的配置项,如图:
保存退出,在数据节点2上进行相同的操作
四、启动集群
4.1、启动管理节点
4.2、启动数据节点(仅应在首次启动ndbd时,或在备份/恢复或配置变化后重启ndbd时使用&--initial&参数,这很重要。原因在于,该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括恢复用日志文件。)
4.3、启动SQL节点
4.4、在管理端查看集群当前状态
&&&&&&& 从管理端看出来,集群有一个管理节点,两个数据节点(ndbd(NDB)),两个SQL节点(mysqld(API)),当前只有数据节点1和SQL节点1启动了。在节点2上启动数据节点和SQL节点,结果:
五、数据测试
5.1、主节点上创建ClusterTest数据库,user数据表(注意,数据表引擎必须是NDB),插入一条数据。
在非主节点上查看数据同步情况:
5.2、在非主节点上更新数据:
查看主节点上的数据同步情况:
六、JDBC编程(注意,因为数据节点的机器本身装的mysql,所以我修改了端口以避免冲突,在my.cnf里面修改)应用程序必须访问SQL节点而不是管理节点或者数据节点。
七、集群架构wiliiwin 的BLOG
用户名:wiliiwin
文章数:140
评论数:158
访问量:196891
注册日期:
阅读量:1914
51CTO推荐博文
看网上很多人说mysql集群不是很稳定,因此这2天做了下mysql的集群,打算配置没有什么问题了,过2天做下相关的性能测试,我的配置环境如下:
&&&& Centos5.2
&&&& mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
数据库管理节点: 192.168.100.151数据库数据节点: 192.168.100.65,192.168.100.58数据库sql节点: 192.168.100.65,192.168.100.58
我这里数据节点和sql节点用相同的2台机器承担.
1.管理节点的安装
& #groupadd mysql
& #useradd&mysql -g mysql
& #mv mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz /usr/local/
& #cd /usr/local/
& #tar zxvf mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
& #rm -f mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
& #mv mysql-cluster-gpl-7.0.8a-linux-i686-glibc23 mysql
& #chown -R mysql:mysql mysql
& #cd mysql
&&#scripts/mysql_install_db --user=mysql
2.管理节点的配置
& #mkdir /var/lib/mysql-cluster
& #cd /var/lib/mysql-cluster
& #vi config.ini&&&&&&&&&&&&&&& //这里需要手动添加如下内容
& [ndbd default]& NoOfReplicas=2&&DataMemory=80M& IndexMemory=18M&&&&&&&&&&&&&&&&& //这里有很多参数,大家可以自己找下相关资料
& [ndb_mgmd]& Id=1& Hostname=10.10.1.151&&&&&&&&&&& &//管理节点IP& datadir=/usr/local/mysql/logs
& [ndbd]& Id=2& Hostname=10.10.1.65&&&&&&&&&&&&& //数据节点IP&& & datadir=/usr/local/mysql/data/&& //数据节点的数据目录,这里要与数据节点的配置文件my.cnf
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&的数据指定相同
& [ndbd]& Id=3& Hostname=10.10.1.58&&&&&&&&&& &//数据节点IP&&&& datadir=/usr/local/mysql/data/
& [MYSQLD]& [MYSQLD]
<font color="#.安装和配置数据节点
& 这里2台机器数据节点安装是相同的.
& #groupadd mysql
& #useradd&mysql -g mysql
& #mv mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz /usr/local/
& #cd /usr/local/
& #tar zxvf mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
& #rm -f mysql-cluster-gpl-7.0.8a-linux-i686-glibc23.tar.gz
& #mv mysql-cluster-gpl-7.0.8a-linux-i686-glibc23 mysql
& #chown -R mysql:mysql mysql
& #cd mysql
&&#scripts/mysql_install_db --user=mysql
& #cp support-files/f /f
& #cp support-files/mysql.server /etc/init.d/mysqld
& #vi /f&&&&&&&& //这里需要手动添加如下的内容
& datadir=/usr/local/mysql/data/&&&&&& //这里要与管理节点的config.ini相同& ndbcluster& ndb-connectstring=10.10.1.151& [ndbd]& connect-string=10.10.1.151& [mysql_cluster]& ndb-connectstring=10.10.1.151& [ndb_mgm]& connect-string=192.168.1.151& [ndb_mgmd]& config-file=/var/lib/mysql-cluster/config.ini& //这里要指定管理节点配置文件路径
<font color="#.启动相关服务
& 在管理节点启动相关服务:
& #/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini
& #netstat -lntpu
& tcp&&&&&&& 0&&&&& 0 0.0.0.0:1186&&&&&&&&&&& 0.0.0.0:*&&&&&&&&&&&&&&&&
& LISTEN&&&22907/ndb_mgmd
& 看到1186端口开放了说明启动是正常的.
& 在数据节点启动相关服务:
& #/usr/local/mysql/bin/ndbd --initial
& #netstat -lntpu& tcp&&&&&&& 0&&&&& 0 10.10.1.65:32975&&&&&&&&&&& 0.0.0.0:*&&&&&&&&&&&&&&&&&&& LISTEN&&&&& 1901/ndbd&&&&&&&&&&&&&&&&& tcp&&&&&&& 0&&&&& 0 10.10.1.65:32976&&&&&&&&&&& 0.0.0.0:*&&&&&&&&&&&&&&&&&& LISTEN&&&&& 1901/ndbd&&&&&&&&&& tcp&&&&&&& 0&&&&& 0 10.10.1.65:32977&&&&&&&&&&& 0.0.0.0:*&&&&&&&&&&&&&&&&&& LISTEN&&&&& 1901/ndbd &
#service mysqld start
#netstat -lntpu
tcp&&&&&&& 0&&&&& 0 :::3306&&&&&&&&&&&&&&&&&&&& :::*&&&&&&&&&&&&&&&&&&&&&&& LISTEN&&&&& 2258/mysqld&
可以看到相关的ndbd服务以及mysql已经启动ok了.
5.功能测试
&&到管理节点查看下相关服务状态
&# ndb_mgm&ndb_mgm& show&Connected to Management Server at: localhost:1186&Cluster Configuration&---------------------&[ndbd(NDB)]&&&& 2 node(s)&id=2&&& @10.10.1.65& (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)&id=3&&& @10.10.1.58& (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)
&[ndb_mgmd(MGM)] 1 node(s)&id=1&&& @10.10.1.151& (mysql-5.1.37 ndb-7.0.8)
&[mysqld(API)]&& 2 node(s)&id=4&&& @10.10.1.65& (mysql-5.1.37 ndb-7.0.8)&id=5&&& @10.10.1.58& (mysql-5.1.37 ndb-7.0.8)
&可以看到这里的数据节点、管理节点、sql节点都是正常的.
&现在我们在其中一个数据节点上进行相关数据库的创建,然后到另外一个数据节点上看看数据是否同步
&# /usr/local/mysql/bin/mysql -u root -p
&mysql&+--------------------+| Database&&&&&&&&&& |+--------------------+| information_schema | | mysql&&&&&&&&&&&&& | | ndb_2_fs&&&&&&&&&& | | test&&&&&&&&&&&&&& | +--------------------+mysql&mysql& use aamysql& CREATE TABLE ctest2 (i INT) ENGINE=NDB;&//这里必须指定数据库表的引擎为NDB,否则同步失败mysql& INSERT INTO ctest2 () VALUES (1);mysql& SELECT * FROM ctest2;+------+| i&&& |+------+|&&& 1 | +------+
现在到另外一个数据节点查看下aa数据库是否同步过来了.
#/usr/local/mysql/bin/mysql -u root -p
mysql&+--------------------+| Database&&&&&&&&&& |+--------------------+| information_schema | | aa&&&&&&&&&&&&&&&& | | bb&&&&&&&&&&&&&&&& | | mysql&&&&&&&&&&&&& | | ndb_3_fs&&&&&&&&&& | | test&&&&&&&&&&&&&& | +--------------------+mysql& use aamysql& select * from ctest2;+------+| i&&& |+------+|&&& 1 | +------+
从上面可以看到数据已经同步了,mysql集群环境已经搭建完成.
6.破坏性测试
& 大家在上面可以看到10.10.1.65作为主的数据节点,我现在把10.10.1.65这台机器关闭,看下有什么结果
& ndb_mgm& show& Cluster Configuration& ---------------------& [ndbd(NDB)]&&&& 2 node(s)& id=2 (not connected, accepting connect from 10.10.1.65)& id=3&&& @10.10.1.58& (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)
& [ndb_mgmd(MGM)] 1 node(s)&&id=1&&& @10.10.1.151& (mysql-5.1.37 ndb-7.0.8)
& [mysqld(API)]&& 2 node(s)& id=4 (not connected, accepting connect from any host)& id=5&&& @10.10.1.58& (mysql-5.1.37 ndb-7.0.8)
从上面可以发现现在10.10.1.65这台机器的数据节点和sql节点已经连接不了,10.10.1.58成为了主数据节点,我们现在在10.10.1.58数据节点上创建一个表,然后恢复10.10.1.65的数据节点,看下它是否把数据同步过来了.
& 先在10.10.1.58数据节点做如下操作:
& mysql& create table ctest3(id int(11)) engine=NDB;& mysql&+--------------+| Tables_in_aa |+--------------+| ctest2&&&&&& | | ctest3&&&&&& | +--------------+mysql& insert into ctest3 values(1);mysql& select * from ctest3;+------+| id&& |+------+|&&& 1 | +------+
然后我们恢复10.10.1.65数据节点,查看下ctest3数据是否同步过来了.
mysql&+--------------------+| Database&&&&&&&&&& |+--------------------+| information_schema | | aa&&&&&&&&&&&&&&&& | | bb&&&&&&&&&&&&&&&& | | mysql&&&&&&&&&&&&& | | ndb_2_fs&&&&&&&&&& | | test&&&&&&&&&&&&&& | +--------------------+mysql& use aamysql& +--------------+| Tables_in_aa |+--------------+| ctest&&&&&&& | | ctest2&&&&&& | | ctest3&&&&&& | +--------------+mysql& select * from ctest3;+------+| id&& |+------+|&&& 1 | +------+
可以看到10.10.1.65数据节点已经把10.10.1.58数据节点的数据同步过来了,说明mysql集群是没有问题的了.随后做下mysql性能相关的测试.本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
12:40:56 13:02:05 09:58:04 23:42:34 13:07:51

我要回帖

更多关于 分布式数据库 的文章

 

随机推荐