MySQL优化之——集群搭建步骤具体解释
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46833179
1 概述
MySQL Cluster 是MySQL 适合于分布式计算环境的高有用、可拓展、高性能、高冗余版本号。其研发设计的初衷就是要满足很多行业里的最严酷应用要求。这些应用中常常要求数据库执行的可靠性要达到99.999%。
MySQL Cluster同意在无共享的系统中部署“内存中”数据库集群,通过无共享体系结构。系统可以使用便宜的硬件,并且对软硬件无特殊要求。此外。因为每一个组件有自己的内存和磁盘,不存在单点故障。
实际上,MySQL集群是把一个叫做NDB的内存集群存储引擎集成与标准的MySQLserver集成。它包括一组计算机。每一个都跑一个或者多个进程,这可能包括一个MySQLserver,一个数据节点,一个管理server和一个专有的一个数据訪问程序。
MySQL Cluster可以使用多种故障切换和负载平衡选项配置NDB存储引擎,但在Cluster 级别上的存储引擎上做这个最简单。
下面为MySQL集群结构关系图,
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" height="335" width="585">
MySQL从结构看。由3类节点(计算机或进程)组成,各自是:
管理节点:用于给整个集群其它节点提供配置、管理、仲裁等功能。理论上通过一台server提供服务就能够了。
数据节点:MySQL Cluster的核心。存储数据、日志,提供数据的各种管理服务。
2个以上 时就能实现集群的高可用保证。DB节点添加时。集群的处理速度会变慢。
SQL节点(API):用于訪问MySQL Cluster数据。提供对外应用服务。添加 API 节点会提高整个集群的并发訪问速度和总体的吞吐量,该节点 能够部署在Web应用server上。也能够部署在专用的server上,也开以和DB部署在 同一台server上。
2 NDB引擎
MySQL Cluster 使用了一个专用的基于内存的存储引擎——NDB引擎,这样做的优点是速度快, 没有磁盘I/O的瓶颈,可是因为是基于内存的。所以数据库的规模受系统总内存的限制, 假设执行NDB的MySQLserver一定要内存够大,比方4G, 8G, 甚至16G。NDB引擎是分布式的,它能够配置在多台server上来实现数据的可靠性和扩展性。理论上 通过配置2台NDB的存储节点就能实现整个数据库集群的冗余性和解决单点故障问题。
2.1 缺陷
基于内存,数据库的规模受集群总内存的限制大小
基于内存,断电后数据可能会有数据丢失,这点还须要通过測试验证。
多个节点通过网络实现通讯和数据同步、查询等操作。因此总体性受网络速度影响。
因此速度也比較慢
2.2 长处
多个节点之间能够分布在不同的地理位置,因此也是一个实现分布式数据库的方案。
扩展性非常好。添加节点就可以实现数据库集群的扩展。
冗余性非常好,多个节点上都有完整的数据库数据,因此不论什么一个节点宕机都不会造成服务中断。
实现高可用性的成本比較低。不象传统的高可用方案一样须要共享的存储设备和专用的软件才干实现。NDB 仅仅要有足够的内存就能实现。
二、集群搭建
将搭建一个最简化的MySQL Cluster系统,配置方法中的全部命令都是以root账户执行。
这个MySQL Cluster包括一个管理结点、两个数据结点、两个SQL结点,这五个结点会分别安装在五个虚拟机上,虚拟机的名称和IP例如以下所看到的:
|
管理结点 |
mysql-mgm |
192.168.124.141 |
|
数据结点 1 |
mysql-ndbd-1 |
192.168.124.142 |
|
数据结点 2 |
mysql-ndbd-2 |
192.168.124.143 |
|
SQL 结点1 |
mysql-sql-1 |
192.168.124.144 |
|
SQL 结点2 |
mysql-sql-2 |
192.168.124.145 |
一、公共配置
请在三个虚拟机上分别配置此处的配置项。
1. 安装虚拟机
虚拟机操作系统安装CentOS 6.4的x86_64版本号,使用NAT网络,而且还要安装vmware-tools,详细安装方法此处不详述。
2. 拷贝mysql cluster
下载下面版本号的MySQL-Cluster:
下载得到的压缩包拷贝至虚拟机的/root/Downloads文件夹。然后在shell中执行下面命令:
| 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. 关闭安全策略
关闭iptables防火墙(或者打开防火墙的1186、3306port),在Shell中执行下面命令:
| chkconfig --level 35 iptables off |
关闭SELinux,在Shell中执行下面命令:
| gedit /etc/selinux/config |
将config文件里的SELINUX项改为disabled。改动后的config文件的内容例如以下:
# 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 |
最后重新启动系统
二、配置管理结点(192.168.124.141)
1. 配置config.ini配置文件
在shell中执行下面命令:
|
mkdir /var/lib/mysql-cluster cd /var/lib/mysql-cluster gedit config.ini |
配置文件config.ini内容例如以下:
| [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] [mysqld] [mysqld] |
2. 安装管理结点
安装管理节点,不须要mysqld二进制文件,仅仅须要MySQL Cluster服务端程序(ndb_mgmd)和监听client程序(ndb_mgm)。在shell中执行下面命令:
| 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)
1. 加入mysql组和用户
在shell中执行下面命令:
| groupadd mysql useradd -g mysql mysql |
2. 配置my.cnf配置文件
在shell中执行下面命令:
| gedit /etc/my.cnf |
配置文件my.cnf的内容例如以下:
| [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. 创建系统数据库
在shell中执行下面命令:
| cd /usr/local/mysql mkdir sock scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
4. 设置数据文件夹
在shell中执行下面命令:
| chown -R root . chown -R mysql.mysql /usr/local/mysql/data chown -R mysql.mysql /usr/local/mysql/sock chgrp -R mysql . |
5. 配置MySQL服务
在shell中执行下面命令:
| 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)
1. 加入mysql组和用户
在shell中执行下面命令:
| groupadd mysql useradd -g mysql mysql |
2. 配置my.cnf配置文件
在shell中执行下面命令:
| gedit /etc/my.cnf |
配置文件my.cnf的内容例如以下:
| [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. 创建系统数据库
在shell中执行下面命令:
| cd /usr/local/mysql mkdir sock scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data |
4. 设置数据文件夹
在shell中执行下面命令:
| chown -R root . chown -R mysql.mysql /usr/local/mysql/data chown -R mysql.mysql /usr/local/mysql/sock chgrp -R mysql . |
5. 配置MySQL服务
在shell中执行下面命令:
| cp support-files/mysql.server /etc/rc.d/init.d/ chmod +x /etc/rc.d/init.d/mysql.server chkconfig --add mysql.server |
五、Cluster环境启动
注意启动顺序:首先是管理节点,然后是数据节点,最后是SQL节点。
1. 启动管理结点
在shell中执行下面命令:
| ndb_mgmd -f /var/lib/mysql-cluster/config.ini |
还能够使用ndb_mgm来监听client,例如以下:
| ndb_mgm |
2. 启动数据结点
首次启动,则须要加入--initial參数。以便进行NDB节点的初始化工作。在以后的启动过程中。则是不能加入该參数的,否则ndbd程序会清除在之前建立的全部用于恢复的数据文件和日志文件。
| /usr/local/mysql/bin/ndbd --initial |
假设不是首次启动,则运行以下的命令。
| /usr/local/mysql/bin/ndbd |
3. 启动SQL结点
若MySQL服务没有执行,则在shell中执行下面命令:
| /usr/local/mysql/bin/mysqld_safe --user=mysql & |
4. 启动測试
查看管理节点,启动成功:
六、集群測试
1. 測试一
如今我们在当中一个SQL结点上进行相关数据库的创建,然后到另外一个SQL结点上看看数据是否同步。
在SQL结点1(192.168.124.144)上运行:
| 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上看数据是否同步过来了
经过測试,在非master上创建数据,能够同步到master上
查看表的引擎是不是NDB。>show create table 表名;
2. 測试二
关闭一个数据节点 ,在另外一个节点写输入。开启关闭的节点。看数据是否同步过来。
首先把数据结点1重新启动,然后在结点2上加入数据
在SQL结点2(192.168.124.145)上操作例如以下:
| 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的服务
|
#/usr/local/mysql/bin/ndbd --initial#service mysqld start |
然后登录进去查看数据
|
# /usr/local/mysql/bin/mysql -u root –p |
能够看到数据已经同步过来了,说明数据能够双向同步了。
七、关闭集群
1. 关闭管理节点和数据节点,仅仅须要在管理节点(ClusterMgm--134)里运行:
| shell> /usr/local/mysql/bin/ndb_mgm -e shutdown |
显示
| 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个节点里执行:
| shell> /etc/init.d/mysql.server stop Shutting down MySQL... SUCCESS! |
注意:要再次启动集群,就依照第五部分的启动步骤就可以,只是这次启动数据节点的时候就不要加”-initial”參数了。
MySQL优化之——集群搭建步骤具体解释的更多相关文章
- Linux下MySQL/MariaDB Galera集群搭建过程【转】
MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...
- 重要参考步骤---ProxySQL Cluster 集群搭建步骤
环境 proxysql-1:192.168.20.202 proxysql-2:192.168.20.203 均采用yum方式安装 # cat <<EOF | tee /etc/yum.r ...
- MySQL之PXC集群搭建
一.PXC 介绍 1.1 PXC 简介 PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比 PXC 最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实 ...
- Mysql Innodb cluster集群搭建
之前搭建过一个Mysql Ndb cluster集群,但是mysql版本是5.7的,看到官网上mysql8的还是开发者版本,所以尝试搭建下mysql Innodb cluster集群. MySQL的高 ...
- mysql-cluster集群搭建步骤
1.从官网下载mysql-cluster安装包: https://dev.mysql.com/downloads/cluster/ 2.解压安装包 #上传到服务器目录/usr/softwares并解压 ...
- 基于Hadoop 2.2.0的高可用性集群搭建步骤(64位)
内容概要: CentSO_64bit集群搭建, hadoop2.2(64位)编译,安装,配置以及测试步骤 新版亮点: 基于yarn计算框架和高可用性DFS的第一个稳定版本. 注1:官网只提供32位re ...
- Hadoop2.0 HA集群搭建步骤
上一次搭建的Hadoop是一个伪分布式的,这次我们做一个用于个人的Hadoop集群(希望对大家搭建集群有所帮助): 集群节点分配: Park01 Zookeeper NameNode (active) ...
- redis5集群搭建步骤
通常情况下为了redis的高可用,我们一般不会使用redis的单实例去运行,一般都会搭建一个 redis 的集群去运行.此处记录一下 redis5 以后 cluster 集群的搭建. 一.需求 red ...
- Linux下MySQL/MariaDB Galera集群搭建过程
MariaDB介绍 MariaDB是开源社区维护的一个MySQL分支,由MySQL的创始人Michael Widenius主导开发,采用GPL授权许可证. MariaDB的目的是完全兼容MySQL,包 ...
随机推荐
- HDU 2521
了解反素数的定义: 反素数是指[1,n]内,比n小的数的约数个数都比n的约数个数要少.注意n其实是最后一个.而在区间内,[a,b]是明显无法满足条件的. 注意了最大才5000.所以,不妨使用枚举. # ...
- Qt on Android:资源文件系统qrc与assets
使用 Qt 为 Android 开发应用时,有时我们的应用会携带一些资源文件,如 png . jpg 等,也可能有一些配置文件,如 xml 等.这些文件放在哪里呢? 有两种方式: qrc assets ...
- Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires
Server Tomcat v8.0 Server at localhost was unable to start within 45 seconds. If the server requires ...
- Log4J日志配置具体解释
一.Log4j简单介绍 Log4j有三个基本的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综 ...
- Codeforces Round #282 (Div. 1)B. Obsessive String KMP+DP
B. Obsessive String Hamed has recently found a string t and suddenly became quite fond of it. He s ...
- 什么是BOM头(字节顺序标记(ByteOrderMark))
在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑ut ...
- 客户现场调试(连接oracle数据库)
1.System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本 http://blog.csdn.net/yucaoye/article/details/ ...
- MacOS系统下简单安装以及配置MongoDB数据库(一)
最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. 项目一共四部分: 1.MacOS下 ...
- windows中安装redis的phpredis扩展
1. 下载php的redis扩展 打开网址 http://pecl.php.net/ (php的扩展库官网),搜索redis,进入地址:http://pecl.php.net/package/redi ...
- layer Tips参数使用
layer.tips(content, follow, options) - tips层type:4的深度定制.也是我本人比较喜欢的一个层类型,因为它拥有和msg一样的低调和自觉,而且会智能定位,即灵 ...