mysql集群架构说明与配置实例-详细过程
多图文详细介绍mysql各个集群方案

多图文详细介绍mysql各个集群方案MySQL是一个开源的关系型数据库管理系统,已经成为了业界最流行的数据库之一、由于单机MySQL数据库的性能有限,为了提高数据库的可用性、扩展性和性能,业界提出了各种MySQL集群方案,本文将详细介绍几种常见的MySQL集群方案。
1.MySQL主从复制集群:MySQL主从复制是一种简单而常用的集群方案。
该方案通过一个主数据库和多个从数据库实现数据的异步复制,主数据库负责写入操作,从数据库负责读取操作。
主从复制具有以下特点:-主数据库可以提供写入的高性能,从数据库可以提供读取的高性能。
-从数据库可以用于灾备,一旦主数据库出现故障,可以快速切换到从数据库继续提供服务。
-主从复制的实现较为简单,不需要引入复杂的集群管理软件。
-主从复制的缺点是从数据库的数据有一定的延迟。
2.MySQL双主集群:MySQL双主集群是一种更进一步的集群方案,通过在多个数据库之间实现双向复制,实现了数据库的读写分离。
双主集群具有以下特点:-双主结构可以提供更高的可用性,一旦一个数据库出现故障,可以快速切换到另一个数据库继续提供服务。
-双主结构可以提供更高的性能,读写操作可以同时在两个数据库上进行。
-双主集群的缺点是配置和管理比较复杂,需要保证数据的一致性和冲突解决。
3.MySQL分片集群:MySQL分片集群通过将数据分散到多个数据库节点上实现横向扩展,以应对海量数据的处理需求。
分片集群具有以下特点:-分片集群可以提供无限的水平扩展性,可以随着数据的增长增加更多的节点。
-分片集群可以提供更好的性能,可以将负载均衡到多个节点上。
-分片集群的缺点是管理和维护成本较高,需要处理数据的分片和路由问题。
4.MySQL主备集群:MySQL主备集群通过在多个数据库节点之间实现实时数据同步,实现了高可用性和故障切换。
主备集群具有以下特点:-主备结构可以提供高可用性,一旦主节点出现故障,可以自动切换到备用节点继续提供服务。
mysql数据库集群配置详解

mysql数据库集群配置详解环境:Vmware workstation6.5操作系统:Centos 5.2 (2台)第一台:主机名:mysql1 IP:192.168.1.30第二台主机名:mysql2 IP:192.168.1.32软件下载安装下载软件地址:/downloads/select.php?id=14选择操作系统是RedHat Enterprise 版本如下:MySQL-Cluster-gpl-client-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-debuginfo-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-devel-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-embedded-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-extra-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-management-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-server-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-shared-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-storage-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-test-7.0.8a-0.rhel5.i386.rpmMySQL-Cluster-gpl-tools-7.0.8a-0.rhel5.i386.rpm将软件包上传到服务器Rpm –ivh *.rpm具体配置在两台机器上做(同样的配置文件)1、创建配置文件目录:(mysql1 mysql2)#mkdir /var/lib/mysql-cluster –p在/var/lib/mysql-cluster 下创建集群配置文件config.ini编辑,添加如下内容:[NDBD DEFAULT]NoOfReplicas=2DataMemory=128MIndexMemory=64MMaxNoOfConcurrentOperations=2000000[MYSQLD DEFAULT][NDB_MGMD DEFAULT]DataDir= /var/lib/mysql-cluster[TCP DEFAULT]# Section for the cluster management node[NDB_MGMD]# IP address of the management node (this system) ID=1HostName= 192.168.1.30[NDB_MGMD]# IP address of the management node (this system) ID=2HostName= 192.168.1.32# Section for the storage nodes[NDBD]ID=3# IP address of the first storage nodeHostName=192.168.1.30[NDBD]ID=4# IP address of the second storage node HostName=192.168.1.32# one [MYSQLD] per storage node[MYSQLD][MYSQLD][MYSQLD][MYSQLD][MYSQLD][MYSQLD][MYSQLD]2、创建API文件(mysql1 mysql2)编辑/etc/f 添加如下内容:[mysqld]default-storage-engine=ndbclusterlog=queryLoglog-slow-queries=slowquerylogmax_connections = 1000#NDBCLUSTERndbclusterndb-connectstring = 192.168.1.30,192.168.1.32[ndb_mgm]connect-string = 192.168.1.30,192.168.1.32[ndbd]connect-string = 192.168.1.30,192.168.1.32[mysql_cluster]ndb-connectstring= 192.168.1.30,192.168.1.32[ndb_mgmd]config-file=/var/lib/mysql-cluster/config.ini集群的启动:启动管理节点在mysql1 上启动管理节点# ndb_mgmd –ndb_nodeid=1在mysql2上启动管理节点# ndb_mgmd –ndb_nodeid=2第一次会有警告:Cluster configuration warning:arbitrator with id 1 and db node with id 3 on same host 192.168.1.30 arbitrator with id 2 and db node with id 4 on same host 192.168.1.32 Running arbitrator on the same host as a database node maycause complete cluster shutdown in case of host failure.是说:节点1和3,2和4的arbitrator一样,可能引起整个集群失败这个无所谓,继续启动NDB在mysql1 上运行:# ndbd –nodeid=3 –initial在mysql2上运行:# ndbd –nodeid=4 –iniitial注意:在第一次启动ndb或者修改了config.ini 文件才加上-initiail 参数查看状态:在任意一台机器上查看:[root@mysql1 ~]# ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showConnected to Management Server at: 192.168.1.30:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=5 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)id=6 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)[ndb_mgmd(MGM)] 2 node(s)id=1 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8)id=2 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)[mysqld(API)] 9 node(s)id=7 (not connected, accepting connect from any host)id=8 (not connected, accepting connect from any host)id=9 (not connected, accepting connect from any host)id=10 (not connected, accepting connect from any host)id=11 (not connected, accepting connect from any host)id=12 (not connected, accepting connect from any host)id=13 (not connected, accepting connect from any host)id=14 (not connected, accepting connect from any host)id=15 (not connected, accepting connect from any host)看到上面的信息就正常了启动API在mysql1中:#mysqld_safe –ndb_nodeid=5 –user=mysql &在mysql2 中:#mysqld_safe –ndb_nodeid=6 –user=mysql &再次查看:[root@mysql1 ~]# ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showConnected to Management Server at: 192.168.1.30:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=5 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master) id=6 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0)[ndb_mgmd(MGM)] 2 node(s)id=1 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8)id=2 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)[mysqld(API)] 9 node(s)id=7 @192.168.1.30 (mysql-5.1.37 ndb-7.0.8)id=8 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)id=9 (not connected, accepting connect from any host)id=10 (not connected, accepting connect from any host)id=11 (not connected, accepting connect from any host)id=12 (not connected, accepting connect from any host)id=13 (not connected, accepting connect from any host)id=14 (not connected, accepting connect from any host)id=15 (not connected, accepting connect from any host)显示两个API节点正常集群测试在mysql1中创建库# /usr/local/mysql/bin/mysql -u root -pmysql >create database love;mysql > use love;mysql > create table love (i INT)mysql > insert into love () VALUES (1);在mysql2上查询:mysql > select * from love;mysql> show tables;+----------------+| Tables_in_love |+----------------+| love |+----------------+1 row in set (0.03 sec)mysql> select * from love;+------+| i |+------+| 1 |+------+1 row in set (0.08 sec)已经同步:下面我将mysql1 停掉网卡:看一下状态:[root@mysql2 ~]# ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showConnected to Management Server at: 192.168.1.32:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=5 (not connected, accepting connect from 192.168.1.30)id=6 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8, Nodegroup: 0, Master)[ndb_mgmd(MGM)] 2 node(s)id=1 (not connected, accepting connect from 192.168.1.30)id=2 @192.168.1.32 (mysql-5.1.37 ndb-7.0.8)[mysqld(API)] 9 node(s)id=7 (not connected, accepting connect from any host)id=8 (not connected, accepting connect from any host)id=9 (not connected, accepting connect from any host)id=10 (not connected, accepting connect from any host)id=11 (not connected, accepting connect from any host)id=12 (not connected, accepting connect from any host)id=13 (not connected, accepting connect from any host)id=14 (not connected, accepting connect from any host)id=15 (not connected, accepting connect from any host)mysql2 对外提供服务成为主服务器看能否查询:mysql> select * from love;ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER mysql> select * from love;ERROR 1296 (HY000): Got error 157 'Unknown error code' from NDBCLUSTER 暂时不能查询,出现错误:稍等片刻再次查询,没有错误,这段时间是故障转移,时间不是很长具体时间没计算在mysql2 上创建表:mysql > create table love1 (i INT)mysql > insert into love1 () VALUES (1);接下来将mysql1的网卡启动在mysql1上查询数据:[root@mysql1 ~]# mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.1.37-ndb-7.0.8a-cluster-gpl-log MySQL Cluster Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> use love;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables ;+----------------+| Tables_in_love |+----------------+| love || love1 |+----------------+2 rows in set (0.01 sec)mysql> select * from love1;+------+| i |+------+| 1 |+------+1 row in set (0.00 sec)可以看到在mysql2上创建的表love2正常运行但是mysql1成为主服务器,这个怎么改变过来,还不清楚The end !。
MySQL多实例部署与集群配置

MySQL多实例部署与集群配置概述:MySQL是一款常用的开源关系型数据库管理系统,具有简单易用、高性能和可扩展性等优势。
在实际应用中,为了应对大量的访问和数据需求,常常需要进行MySQL多实例部署和集群配置。
本文将详细介绍MySQL多实例部署和集群配置的方法和步骤,帮助读者更好地理解和使用MySQL。
一、MySQL多实例部署1.1 确定需求和目标在进行MySQL多实例部署之前,首先需要明确自己的需求和目标。
是为了提高系统性能、负载均衡还是为了分布式部署?根据不同的需求和目标,选择合适的部署方式和配置参数。
1.2 安装MySQL软件在进行多实例部署之前,需要先安装MySQL软件。
可以从官方网站下载最新的MySQL安装包,并按照官方文档进行安装。
安装完成后,确保MySQL软件能够正常运行。
1.3 创建多个MySQL实例在安装完成后,可以通过配置文件的方式创建多个MySQL实例。
每个实例都有自己独立的配置文件和数据目录。
通过修改配置文件的参数,可以控制每个实例的运行方式和特性。
1.4 配置多实例参数对于每个实例,需要根据实际需求进行参数配置。
例如,可以配置不同的端口号、数据目录和日志文件,以及分配不同的系统资源。
通过合理地配置参数,可以使每个实例都能够充分利用系统资源,提高整个系统的性能和稳定性。
1.5 启动和管理多实例在配置完成后,可以使用不同的命令来启动和管理多个MySQL实例。
可以通过命令行或者脚本的方式来启动每个实例,并监控其运行状态。
同时,还可以对实例进行备份、恢复和故障处理等操作,确保系统的可用性和数据的安全性。
二、MySQL集群配置2.1 确定集群拓扑结构在进行MySQL集群配置之前,需要首先确定集群的拓扑结构。
常见的集群拓扑结构有主从复制、主主复制和多主复制等。
不同的拓扑结构对于系统的性能和可用性都有不同的影响,需要根据实际需求进行选择。
2.2 配置主从复制主从复制是最常见的集群配置方式之一。
mysql 集群方案

MySQL集群方案介绍MySQL是一种常用的关系型数据库管理系统,被广泛应用于多种类型的软件开发和企业应用场景中。
随着数据量和访问量的增长,单一的MySQL实例可能无法满足业务需求,并面临诸如性能瓶颈、高可用性和容灾等问题。
为了解决这些问题,MySQL集群方案应运而生。
MySQL集群方案提供了高可用性、负载均衡和容灾备份等特性,使得数据库能够持续稳定地运行。
MySQL集群方案的架构MySQL集群方案一般由多个MySQL节点(MySQL instances)和相关组件组成。
以下是一个典型的MySQL集群方案架构:•负载均衡器(Load Balancer):负责分发来自客户端的请求到不同的MySQL节点,以实现负载均衡。
常用的负载均衡器有Nginx、HAProxy等。
•主节点(Master):主节点是MySQL集群中负责处理写操作(INSERT、UPDATE、DELETE)的节点。
主节点上的数据会同步到其他从节点。
•从节点(Slave):从节点是MySQL集群中负责处理读操作(SELECT)的节点。
从节点通过复制(Replication)机制从主节点同步数据。
从节点可以有多个。
•数据复制(Replication):通过数据复制机制,将主节点的数据同步到从节点。
一般情况下,主节点会将自己的二进制日志传输到从节点,从节点按照主节点的日志顺序进行重放,从而保证数据的一致性。
•数据同步监控(Monitoring):监控系统用于监控MySQL集群的状态和性能指标,以及及时发现问题和进行故障恢复。
•数据备份和恢复(Backup & Recovery):数据备份和恢复组件用于定期备份MySQL集群中的数据,并在需要时进行灾备恢复。
MySQL集群方案的实施步骤以下是MySQL集群方案的实施步骤:1.规划和设计:在实施MySQL集群之前,需进行规划和设计。
根据业务需求和系统要求,确定需要部署多少个MySQL节点、负载均衡器、监控系统和数据备份系统等组件。
MySQL数据库集群架构与部署指南

MySQL数据库集群架构与部署指南随着数据量和访问量的增长,单一的MySQL数据库已经不能满足高可用和高性能的需求。
为了满足这些需求,使用MySQL数据库集群是一个理想的解决方案。
本文将介绍MySQL数据库集群的架构和部署指南,帮助您构建和管理一个稳定的MySQL集群。
一、概述MySQL数据库集群是由多个MySQL数据库服务器组成的,这些服务器共享相同的数据集。
通过将数据分布到不同的节点上,可以提高系统的可扩展性和吞吐量。
二、MySQL数据库集群架构MySQL数据库集群通常由三个主要组件组成:数据库节点、管理节点和负载均衡器。
1. 数据库节点数据库节点是实际存储和处理数据库数据的服务器。
它们负责数据的读写操作。
您可以根据系统需求,增加或减少数据库节点的数量。
2. 管理节点管理节点用于控制数据库节点的状态和配置。
它们负责数据的复制和同步,以及故障检测和自动故障转移。
3. 负载均衡器负载均衡器用于将客户端请求分发到不同的数据库节点上,以实现负载均衡和高可用性。
常用的负载均衡器有Nginx、HAProxy等。
三、MySQL数据库集群的部署指南以下是MySQL数据库集群的部署指南,以帮助您构建一个稳定和高效的集群环境。
1. 硬件要求在选择硬件时,应考虑以下几个因素:- 容量:确保每个节点具有足够的存储容量,以满足数据的需求。
- 内存:为每个数据库节点提供足够的内存,以支持高并发访问和查询性能。
- CPU:选择高性能的多核CPU,以提供卓越的计算能力。
2. 操作系统选择适合MySQL数据库集群的操作系统有Linux、Unix等。
根据您的需求和熟悉程度选择最合适的操作系统。
3. 数据库节点部署配置每个数据库节点时,注意以下几个要点:- 数据库版本:确保所有节点使用相同的MySQL版本。
- 数据分布:合理划分数据集,确保每个节点的数据负载均衡。
- 复制策略:选择适当的复制策略,包括主从复制、主主复制等。
4. 管理节点部署部署管理节点时,需要注意以下几个关键点:- 配置管理节点的高可用性,采用冗余方案,防止单点故障。
MySQL数据库集群安装与配置指南

MySQL数据库集群安装与配置指南1. 引言数据库是现代软件系统中不可或缺的重要组成部分,而MySQL数据库则是其中使用最广泛的一种关系型数据库管理系统。
随着数据量和访问压力的增加,单个MySQL数据库服务器往往无法满足高可用性和高并发性的要求。
为了解决这一问题,MySQL数据库集群应运而生。
本文将介绍MySQL数据库集群的安装与配置指南,帮助读者快速搭建一个稳定可靠的数据库集群环境。
2. 准备工作在开始安装和配置MySQL数据库集群之前,您需要准备以下工作:- 一组具备相同操作系统和硬件配置的服务器节点,用于搭建集群。
服务器节点数量取决于负载和可用性需求,一般至少需要三个节点。
- 确保服务器节点之间可以互相通信,可以通过本地网络或者云平台提供的虚拟私有网络(VPC)来实现。
- 下载最新版本的MySQL数据库软件,官方网站提供了各种操作系统下的二进制发行版和源码包。
3. 安装MySQL数据库软件需要在每个服务器节点上安装MySQL数据库软件。
具体安装步骤如下:- 解压MySQL二进制发行版或者编译安装MySQL源码包。
- 配置MySQL实例的基本参数,包括端口号、字符集、缓存大小等。
可以通过编辑`f`配置文件来实现。
- 启动MySQL实例并进行初次配置,包括设置root用户密码、删除不必要的测试数据库等。
4. 配置数据库复制数据库复制是MySQL数据库集群实现高可用性和数据备份的重要机制。
在MySQL数据库集群中,一个节点充当主节点(master),其他节点为从节点(slave)。
具体配置步骤如下:- 在主节点上开启二进制日志(binary log),用于记录数据库的所有操作。
- 在从节点上配置主节点的IP地址和端口号,以及从节点的唯一标识。
- 在从节点上启动复制进程,使其能够连接到主节点并获取主节点的二进制日志。
5. 配置负载均衡负载均衡是MySQL数据库集群实现高并发性的重要机制。
在MySQL数据库集群中,可以使用代理服务器或者分布式文件系统来实现负载均衡。
MySQL基础架构-架构详解

MySQL基础架构-架构详解mysql基础架构图架构详解连接器部分整体功能建⽴连接维持管理连接校验⽤户名密码,查询权限最佳实践1. 不要在命令⾏客户端中明⽂输⼊密码-p 中不要使⽤明⽂密码2. 修改权限,需要重新建⽴连接后才会⽣效mysql在建⽴连接时会读取⼀次权限,以后都使⽤这个权限3. 查看所有连接命令:show processlist长连接默认超时时间为8⼩时,超时后服务端会断开连接使⽤这个超时参数:wait_timeout来设置服务端断开连接后,客户端再次执⾏请求,会报Lost Connection to mysql server during query。
4. mysql异常重启(OOM被杀掉)原因之⼀客户端建⽴长连接后,会占⽤⼀些内存,直到连接关闭后才释放。
如果建⽴⼤量连接,可能导致内存飙升解决⽅法:定期断开连接mysql5.7以后版本,⽀持 mysql_reset_connection命令,可以初始化连接内存,和第⼀种⽅法⽐,不需要重连和校验权限。
查询缓存部分最佳实践1. mysql8.0版本以后已经去掉这个功能了2. mysql8.0以前的版本建议关闭查询缓存功能,把query_cache_type设置为DEMAND在需要使⽤缓存的表中,select语句中加⼊ SQL_CACHE即可select SQL_CACHE * from 表名3. 查询结果返回时,会校验权限分析器部分分析器部分主要做两件事:1. 词法分析:解析关键词,校验表名是否存在,列是否存在等等2. 语法分析:判断是否符合mysql的语法规则最佳实践1. 出现语法错误时,会返回you have an error in your SQL syntax错误,这个错误提⽰第⼀个出现错误的地⽅,所以检查紧跟use near后⾯的语句即可优化器部分优化器做两类事:1. 选择索引2. 确定表关联的顺序⽬的都是优化执⾏性能执⾏器部分执⾏器先校验是否有权限如果有权限,按照表定义中的引擎,使⽤这个引擎提供的接⼝如果没有索引:1. 调⽤引擎提供的取表第⼀⾏,判断是否符合条件,符合条件加⼊结果集2. 调⽤引擎提供的下⼀⾏接⼝,继续判断;直到最后⼀⾏3. 将结果集返回给客户端如果有索引:1. 调⽤满⾜条件的第⼀⾏接⼝2. 循环取满⾜条件的下⼀⾏接⼝最佳实践1. 慢查询⽇志中有⼀个rows_examined字段,这个字段是在执⾏器每调⽤⼀次引擎接⼝的时候就加⼀,但是每调⽤⼀次接⼝,实际在引擎中扫描的⾏数是不确定的,所以实际扫描⾏数和这个字段并不完全⼀致。
MySQL集群部署与配置指南

MySQL集群部署与配置指南引言MySQL是一种开源的关系型数据库管理系统,被广泛应用于各种应用程序中。
在处理大规模数据和高并发访问时,单个MySQL服务器可能无法满足需求。
为了提高性能和可用性,使用MySQL集群来部署和配置数据库是一个不错的选择。
本文将详细介绍MySQL集群部署和配置的指南,帮助读者了解集群的概念,并提供一些实用的技巧。
1. 集群概述1.1 什么是MySQL集群MySQL集群是指由多个MySQL服务器组成的集合,通过共享数据和负载均衡来提供高性能和高可用性。
集群中的每个节点都存储相同的数据,并且可以处理来自客户端的查询请求。
如果其中一个节点发生故障,其他节点将继续提供服务,确保数据的有效性和可访问性。
1.2 集群的优势MySQL集群具有以下优势:- 高可用性:即使其中一个节点发生故障,其他节点也可以继续提供服务,避免了单点故障的风险。
- 负载均衡:通过将查询请求分发到不同的节点上,集群可以平衡负载,提高整个系统的性能。
- 扩展性:可以根据需求增加或减少集群节点,以应对不断增长的数据和用户访问量。
- 数据冗余:通过复制数据到多个节点,可以提供数据的冗余备份,避免数据丢失的风险。
2. 部署MySQL集群2.1 硬件要求部署MySQL集群需要考虑以下硬件要求:- 多台服务器:每个节点都需要一个独立的服务器来承载MySQL服务。
- 网络连接:节点之间需要可靠的网络连接,以便进行数据同步和通信。
2.2 软件要求部署MySQL集群还需要满足以下软件要求:- MySQL数据库:每个节点都需要安装并配置MySQL数据库。
- 集群管理软件:可以使用各种集群管理软件,如MySQL Cluster、Galera Cluster或Percona XtraDB Cluster等。
2.3 数据同步配置为了保持每个节点上的数据一致性,需要配置数据同步机制。
可以使用MySQL的复制功能来实现数据同步。
具体步骤如下:- 在一个节点上设置为主节点(master),并启用二进制日志功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Mysql集群架构文档MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。
它采用了NDB Cluster 存储引擎,允许在1个Cluster 中运行多个MySQL服务器。
在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。
(注意,要想获得MySQL Cluster 的功能,必须安装mysql-server 和mysql-max RPM)。
目前能够运行MySQL Cluster 的操作系统有Linux、Mac OS X和Solaris(一些用户通报成功地在FreeBSD上运行了MySQL Cluster ,但MySQL AB公司尚未正式支持该特性)。
一、MySQL Cluster概述MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的Cluster 。
通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。
此外,由于每个组件有自己的内存和磁盘,不存在单点故障。
MySQL Cluster 由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster 的数据节点,管理服务器,以及(可能)专门的数据访问程序。
关于Cluster 中这些组件的关系,请参见下图:所有的这些节点构成一个完成的MySQL集群体系。
数据保存在“NDB存储服务器”的存储引擎中,表(结构)则保存在“MySQL服务器”中。
应用程序通过“MySQL服务器”访问这些数据表,集群管理服务器通过管理工具(ndb_mgmd)来管理“N DB存储服务器”。
通过将MySQL Cluster 引入开放源码世界,MySQL为所有需要它的人员提供了具有高可用性、高性能和可缩放性的Cluster 数据管理。
二.安装环境1.Linux操作系统版本:CentonOS 4.72.Mysql数据库版本:mysql-max-5.0.24-linux-i686.tar.gz共三台机器安装了CentonOS4.7版本,首先保证把系统中没有一个包带有mysql的,有的话就执行以下命令把mysql安装包删除:rpm –e ;3.三台机器的ip如下划分:PC1 IP:10.20.25.114(sql和存储公用)PC2 IP:10.20.25.115(sql和存储公用)PC3 IP:10.20.25.116(集群管理节点)三.装操作步骤1. 在PC1、PC2上需要执行如下的命令,请按照顺序来执行:mv mysql-max-5.0.24-linux-i686.tar.gz /usr/local/cd /usr/local/tar zxvf mysql-max-5.0.24-linux-i686.tar.gzrm mysql-max-5.0.24-linux-i686.tar.gzmv mysql-max-5.0.24-linux-i686 mysqlgroupadd mysqluseradd -g mysql mysqlcd mysqlscripts/mysql_install_db --user=mysqlchown -R mysql:mysql .cp /usr/local/mysql/support-files/f /etc/fvi /etc/f找到myisam_sort_buffer_size = 8M这一行,然后在后面添加如下的两行:ndbclusterndb-connectstring=192.168.10.198然后到f的最后一行增加以下六行:[ndbd]connect-string=192.168.10.198[ndb_mgm]connect-string=192.168.10.198[ndb_mgmd]config-file=/var/lib/mysql-cluster修改完毕后,保存推出!mkdir /var/lib/mysql-cluster2.在PC3上执行如下的命令,请按照顺序执行:mv mysql-max-5.0.24-linux-i686.tar.gz /usr/local/cd /usr/local/tar zxvf mysql-max-5.0.24-linux-i686.tar.gzrm mysql-max-5.0.24-linux-i686.tar.gzmv mysql-max-5.0.24-linux-i686 mysqlgroupadd mysqluseradd -g mysql mysqlcd mysqlscripts/mysql_install_db --user=mysqlchown -R mysql:mysql .cp /usr/local/mysql/support-files/f /etc/fvi /etc/f找到myisam_sort_buffer_size = 8M这一行,然后在后面添加如下的两行:ndbclusterndb-connectstring=10.20.25.116然后到f的最后一行增加以下六行:[ndbd]connect-string=10.20.25.116[ndb_mgm]connect-string=10.20.25.116[ndb_mgmd]config-file=/var/lib/mysql-cluster修改完毕后,保存推出!mkdir /var/lib/mysql-clustercd /var/lib/mysql-clustertouch config.inivi config.ini 键入如下信息:(半个字符都不能错)[NDBD DEFAULT]NoOfReplicas= 2DataDir= /var/lib/mysql-cluster[NDB_MGMD]Hostname= 10.20.25.116DataDir= /var/lib/mysql-cluster[NDBD]HostName= 10.20.25.115[NDBD]HostName=10.20.25.114[MYSQLD][MYSQLD][MYSQLD]保存退出!3.到此为止整个的配置步骤算是完成,下面需要设置一些快捷命令:在PC1、PC2上需要输入以下命令:cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqldchkconfig --add mysqldln -s /usr/local/mysql/bin/ndbd /usr/bin/ndbdvi /etc/rc.local添加一行ndbd后保存退出在PC3上需要输入以下命令:cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld chmod +x /etc/rc.d/init.d/mysqldchkconfig --add mysqldln -s /usr/local/mysql/bin/ndb_mgm /usr/bin/ndb_mgmln -s /usr/local/mysql/bin/ndb_mgmd /usr/bin/ndb_mgmdvi /etc/rc.local后添加如下一行/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini保存退出!四.启动服务PC3需要执行的命令如下:/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.iniservice mysqld startPC1、PC2需要执行的命令如下:/usr/local/mysql/bin/ndbd --initial 注:只在第一次启动ndbd时使用--initial参数service mysqld start五.测试与检查PC3需要执行的命令如下:ndb_mgm执行如下命令以及显示如下信息则说明工作正常![root@lzj local]# ndb_mgm-- NDB Cluster -- Management Client --ndb_mgm> showConnected to Management Server at: 10.20.25.116:1186Cluster Configuration---------------------[ndbd(NDB)] 2 node(s)id=2 @10.20.25.115 (Version: 5.0.24, Nodegroup: 0, Master)id=3 @10.20.25.114 (Version: 5.0.24, Nodegroup: 0)[ndb_mgmd(MGM)] 1 node(s)id=1 @10.20.25.116 (Version: 5.0.24)[mysqld(API)] 3 node(s)id=4 @10.20.25.115 (Version: 5.0.24)id=5 @10.20.25.114 (Version: 5.0.24)id=6 @10.20.25.116 (Version: 5.0.24)ndb_mgm>测试的时候则需要创建表,看是否三台机器的mysql是否能够同步。
如果上面没有问题,现在开始测试MySQL:注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。
与没有使用Cluster的MySQL相比,在MySQL Cluster内操作数据的方式没有太大的区别。
执行这类操作时应记住两点:表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在Cluster内复制它们。
如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
另外还请记住,每个NDB表必须有一个主键。
如果在创建表时用户未定义主键,NDB Cluster 存储引擎将自动生成隐含的主键。
(注释:该隐含键也将占用空间,就像任何其他的表索引一样。
由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。
在Server1中:# /usr/local/mysql/bin/mysql -u root -p> use test;> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;> INSERT INTO ctest () VALUES (1);> SELECT * FROM ctest;应该可以看到1 row returned信息(返回数值1)。