Mysql学习详解MySQL集群搭建

Mysql学习详解MySQL集群搭建,第1张

概述介绍《Mysql学习详解MySQL集群搭建》开发教程,希望对您有用。

《MysqL学习详解MysqL集群搭建》要点:
本文介绍了MysqL学习详解MysqL集群搭建,希望对您有用。如果有疑问,可以联系我们。

概述MysqL实例

MysqL Cluster 是MysqL 适合于分布式计算环境的高实用、可拓展、高性能、高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达到99.999%.MysqL Cluster允许在无共享的系统中部署“内存中”数据库集群,通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于每个组件有自己的内存和磁盘,不存在单点故障.MysqL实例

实际上,MysqL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MysqL服务器集成.它包含一组计算机,每个都跑一个或者多个进程,这可能包括一个MysqL服务器,一个数据节点,一个管理服务器和一个专有的一个数据访问程序.MysqL实例

MysqL Cluster能够使用多种故障切换和负载平衡选项配置NDB存储引擎,但在Cluster 级别上的存储引擎上做这个最简单.以下为MysqL集群结构关系图,MysqL实例

MysqL实例

MysqL从结构看,由3类节点(计算机或进程)组成,分别是:MysqL实例

管理节点:用于给整个集群其他节点提供配置、管理、仲裁等功能.理论上通过一台服务器提供服务就可以了.MysqL实例

数据节点:MysqL Cluster的核心,存储数据、日志,提供数据的各种管理服务.2个以上 时就能实现集群的高可用保证,DB节点增加时,集群的处理速度会变慢.MysqL实例

sql节点(API):用于访问MysqL Cluster数据,提供对外应用服务.增加 API 节点会提高整个集群的并发访问速度和整体的吞吐量,该节点 可以部署在Web应用服务器上,也可以部署在专用的服务器上,也开以和DB部署在同一台服务器上.MysqL实例

NDB引擎MysqL实例

MysqL Cluster 使用了一个专用的基于内存的存储引擎――NDB引擎,这样做的好处是速度快,没有磁盘I/O的瓶颈,但是由于是基于内存的,所以数据库的规模受系统总内存的限制,如果运行NDB的MysqL服务器一定要内存够大,比如4G,8G,甚至16G.NDB引擎是分布式的,它可以配置在多台服务器上来实现数据的可靠性和扩展性,理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题.MysqL实例

缺陷MysqL实例

@H_301_68@基于内存,数据库的规模受集群总内存的大小限制 基于内存,断电后数据可能会有数据丢失,这点还需要通过测试验证. 多个节点通过网络实现通讯和数据同步、查询等 *** 作,因此整体性受网络速度影响,因此速度也比较慢

2.2 优点MysqL实例

@H_301_68@多个节点之间可以分布在不同的地理位置,因此也是一个实现分布式数据库的方案. 扩展性很好,增加节点即可实现数据库集群的扩展. 冗余性很好,多个节点上都有完整的数据库数据,因此任何一个节点宕机都不会造成服务中断.

实现高可用性的成本比较低,不象传统的高可用方案一样需要共享的存储设备和专用的软件才能实现,NDB 只要有足够的内存就能实现.MysqL实例

本文将搭建一个最简化的MysqL Cluster系统,配置方法中的所有命令都是以root账户运行.这个MysqL Cluster包含一个管理结点、两个数据结点、两个sql结点,这五个结点会分别安装在五个虚拟机上,虚拟机的名称和IP如下所示:MysqL实例

MysqL实例

一、公共配置MysqL实例

请在三个虚拟机上分别配置此处的配置项.MysqL实例

1. 安装虚拟机MysqL实例

虚拟机 *** 作系统安装CentOS 6.4的x86_64版本,使用NAT网络,并且还要安装vmware-tools,具体安装方法此处不详述.MysqL实例

2. 拷贝MysqL clusterMysqL实例

下载MysqL-Cluster:MysqL实例

下载得到的压缩包拷贝至虚拟机的/root/Downloads目录,然后在shell中运行以下命令:MysqL实例

cd /root/Downloads  tar -xvzf MysqL-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz  mv MysqL-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/MysqL

 3. 关闭安全策略MysqL实例

关闭iptables防火墙(或者打开防火墙的1186、3306端口),在Shell中运行以下命令:MysqL实例

chkconfig --level 35 iptables off 


关闭SElinux,在Shell中运行以下命令:MysqL实例

gedit /etc/selinux/config 

将config文件中的SEliNUX项改为Disabled,修改后的config文件的内容如下:MysqL实例

# This file controls the state of SElinux on the system.  # SEliNUX= can take one of these three values:  # enforcing - SElinux security policy is enforced.  # permissive - SElinux prints warnings instead of enforcing.  # Disabled - No SElinux policy is loaded.  SEliNUX=Disabled  # SEliNUXTYPE= can take one of these two values:  # targeted - Targeted processes are protected,# mls - Multi Level Security protection.  SEliNUXTYPE=targeted 

最后重启系统MysqL实例


二、配置管理结点(192.168.124.141)MysqL实例

1. 配置config.ini配置文件MysqL实例

在shell中运行以下命令:MysqL实例

mkdir /var/lib/MysqL-cluster  cd /var/lib/MysqL-cluster  gedit config.ini 

配置文件config.ini内容如下:MysqL实例

[ndbd default]  NoOfReplicas=2  DataMemory=80M  IndexMemory=18M  [ndb_mgmd]  NodeID=1  hostname=192.168.124.141  datadir=/var/lib/MysqL-cluster  [ndbd]  NodeID=2  hostname=192.168.124.142  datadir=/usr/local/MysqL/data  [ndbd]  NodeID=3  hostname=192.168.124.143  datadir=/usr/local/MysqL/data  [MysqLd]  NodeID=4  hostname=192.168.124.144  [MysqLd]  NodeID=5  hostname=192.168.124.145 

2. 安装管理结点MysqL实例

安装管理节点,不需要MysqLd二进制文件,只需要MysqL Cluster服务端程序(ndb_mgmd)和监听客户端程序(ndb_mgm).在shell中运行以下命令:MysqL实例

cp /usr/local/MysqL/bin/ndb_mgm* /usr/local/bin  cd /usr/local/bin  chmod +x ndb_mgm* 

三、配置数据结点(192.168.124.142、192.168.124.143)MysqL实例

1. 添加MysqL组和用户MysqL实例

在shell中运行以下命令:MysqL实例

groupadd MysqL  useradd -g MysqL MysqL 

2. 配置my.cnf配置文件MysqL实例

在shell中运行以下命令:MysqL实例

gedit /etc/my.cnf 

配置文件my.cnf的内容如下:MysqL实例

[MysqLd]  basedir=/usr/local/MysqL  datadir=/usr/local/MysqL/data  socket=/usr/local/MysqL/sock/MysqL.sock  user=MysqL  # disabling symbolic-links is recommended to prevent assorted security risks  symbolic-links=0  [MysqLd_safe]  log-error=/var/log/MysqLd.log  pID-file=/var/run/MysqLd/MysqLd.pID  [MysqL_cluster]  ndb-connectstring=192.168.124.141 

3. 创建系统数据库MysqL实例

在shell中运行以下命令:MysqL实例

cd /usr/local/MysqL  mkdir sock  scripts/MysqL_install_db --user=MysqL --basedir=/usr/local/MysqL --datadir=/usr/local/MysqL/data 

4. 设置数据目录MysqL实例

在shell中运行以下命令:MysqL实例

chown -R root .  chown -R MysqL.MysqL /usr/local/MysqL/data  chown -R MysqL.MysqL /usr/local/MysqL/sock  chgrp -R MysqL . 

5. 配置MysqL服务MysqL实例

在shell中运行以下命令:MysqL实例

cp support-files/MysqL.server /etc/rc.d/init.d/  chmod +x /etc/rc.d/init.d/MysqL.server  chkconfig --add MysqL.server

四、配置sql结点(192.168.124.144、192.168.124.145)MysqL实例

1. 添加MysqL组和用户MysqL实例

在shell中运行以下命令:MysqL实例

groupadd MysqL  useradd -g MysqL MysqL 

2. 配置my.cnf配置文件MysqL实例

在shell中运行以下命令:MysqL实例

gedit /etc/my.cnf

配置文件my.cnf的内容如下:MysqL实例

[clIEnt]  socket=/usr/local/MysqL/sock/MysqL.sock  [MysqLd]  ndbcluster  datadir=/usr/local/MysqL/data  socket=/usr/local/MysqL/sock/MysqL.sock  ndb-connectstring=192.168.124.141  [MysqL_cluster]  ndb-connectstring=192.168.124.141 

3. 创建系统数据库MysqL实例

在shell中运行以下命令:MysqL实例

cd /usr/local/MysqL  mkdir sock  scripts/MysqL_install_db --user=MysqL --basedir=/usr/local/MysqL --datadir=/usr/local/MysqL/data 

4. 设置数据目录MysqL实例

在shell中运行以下命令:MysqL实例

chown -R root .  chown -R MysqL.MysqL /usr/local/MysqL/data  chown -R MysqL.MysqL /usr/local/MysqL/sock  chgrp -R MysqL . 

5. 配置MysqL服务MysqL实例

在shell中运行以下命令:MysqL实例

cp support-files/MysqL.server /etc/rc.d/init.d/  chmod +x /etc/rc.d/init.d/MysqL.server  chkconfig --add MysqL.server 

五、Cluster环境启动MysqL实例

注意启动顺序:首先是管理节点,然后是数据节点,最后是sql节点.MysqL实例

1. 启动管理结点MysqL实例

在shell中运行以下命令:MysqL实例

ndb_mgmd -f /var/lib/MysqL-cluster/config.ini

 还可以使用ndb_mgm来监听客户端,如下:MysqL实例

ndb_mgmMysqL实例

2. 启动数据结点MysqL实例

首次启动,则需要添加--initial参数,以便进行NDB节点的初始化工作.在以后的启动过程中,则是不能添加该参数的,否则ndbd程序会清除在之前建立的所有用于恢复的数据文件和日志文件.MysqL实例

/usr/local/MysqL/bin/ndbd --initial 

如果不是首次启动,则执行下面的命令.MysqL实例

/usr/local/MysqL/bin/ndbd 

3. 启动sql结点MysqL实例

若MysqL服务没有运行,则在shell中运行以下命令:MysqL实例

/usr/local/MysqL/bin/MysqLd_safe --user=MysqL & 

4. 启动测试MysqL实例

查看管理节点,启动成功MysqL实例

六、集群测试MysqL实例

1. 测试一MysqL实例

现在我们在其中一个sql结点上进行相关数据库的创建,然后到另外一个sql结点上看看数据是否同步.MysqL实例

在sql结点1(192.168.124.144)上执行:MysqL实例

shell> /usr/local/MysqL/bin/MysqL -u root -p  MysqL>show databases;  MysqL>create database aa;  MysqL>use aa;  MysqL>CREATE table ctest2 (i INT) ENGINE=NDB; //这里必须指定数据库表的引擎为NDB,否则同步失败  MysqL> INSERT INTO ctest2 () VALUES (1);  MysqL> SELECT * FROM ctest2; 

然后在sql结点2上看数据是否同步过来了MysqL实例

经过测试,在非master上创建数据,可以同步到master上MysqL实例

查看表的引擎是不是NDB,>show create table 表名;MysqL实例

2. 测试二MysqL实例

关闭一个数据节点,在另外一个节点写输入,开启关闭的节点,看数据是否同步过来.MysqL实例

首先把数据结点1重启,然后在结点2上添加数据MysqL实例

在sql结点2(192.168.124.145)上 *** 作如下:MysqL实例

MysqL> create database bb;  MysqL> use bb;  MysqL> CREATE table ctest3 (i INT) ENGINE=NDB;  MysqL> use aa;  MysqL> INSERT INTO ctest2 () VALUES (3333);  MysqL> SELECT * FROM ctest2; 

等数据结点1启动完毕,启动数据结点1的服务MysqL实例

#/usr/local/MysqL/bin/ndbd --initial#service MysqLd start
然后登录进去查看数据MysqL实例

# /usr/local/MysqL/bin/MysqL -u root Cp
可以看到数据已经同步过来了,说明数据可以双向同步了.MysqL实例

七、关闭集群MysqL实例

1. 关闭管理节点和数据节点,只需要在管理节点(ClusterMgm--134)里执行:MysqL实例

Connected to Management Server at: localhost:1186  2 NDB Cluster node(s) have shutdown.  disconnecting to allow management server to shutdown. 

显示MysqL实例

Connected to Management Server at: localhost:1186  2 NDB Cluster node(s) have shutdown.  disconnecting to allow management server to shutdown. 

2. 然后关闭sql节点(135,136),分别在2个节点里运行:MysqL实例

shell> /etc/init.d/MysqL.server stopShutting down MysqL... SUCCESS!

注意:要再次启动集群,就按照第五部分的启动步骤即可,不过这次启动数据节点的时候就不要加”-initial”参数了.MysqL实例

以上就是MysqL集群搭建过程,希望对大家自己动手搭建MysqL集群有所帮助MysqL实例

总结

以上是内存溢出为你收集整理的Mysql学习详解MySQL集群搭建全部内容,希望文章能够帮你解决Mysql学习详解MySQL集群搭建所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1162471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存