【Data Cluster】真机环境下MySQL数据库集群搭建
摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建。购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建。起初笔者对此不甚了解,查阅很多资料,最终都不太完善。故笔者真机环境测试成功后,整理出此搭建文档,一则防止遗忘知识总结,另则与人共享。前天完成文档由于文字偏多,给陌生配置者带来不小压力。更改文档版本后,减少文字增加图片,让一个大一的对mysql集群不了解者,照此配置。能够配置成功,故发表。(本文原创/整理,转载请标注原文出处: 真机环境下MySQL-Cluster搭建文档 )
相关文章
- 【Oracle RAC集群搭建1】 集群概念介绍
- 【Oracle RAC集群搭建2】 ORACLE集群概念和原理
- 【Oracle RAC集群搭建3】 RAC 工作原理和相关组件
- 【Oracle RAC集群搭建4】 缓存融合技术
- 【Oracle RAC集群搭建5】 RAC 特殊问题和实战经验
- 【Oracle RAC集群搭建6】 ORACLE 11 G版本2 RAC在LINUX上使用NFS安装前准备
- 【Oracle RAC集群搭建7】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC集群安装
- 【Oracle RAC集群搭建8】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC数据库安装
- 【Oracle RAC集群搭建9】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC基本测试与使用
【MySql集群搭建】 真机环境下MySQL-Cluster搭建文档
【Hadoop集群搭建1】Hadoop集群的配置
【Hadoop集群搭建2】Hadoop集群的配置
MySQL Cluster简介
MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing architecture)。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备。MySQL cluster 主要利用了 NDB 存储引擎来实现,NDB 存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造 成数据丢失。MySQL cluster 主要由 3 各部分组成:
- SQL 服务器节点
- NDB 数据存储节点
- 监控和管理节点
这样的分层也是与 MySQL 本身把 SQL 处理和存储分开的架构相关系的。MySQL cluster 的优点在于其是一个分布式的数据库集群,处理节点和存储节点都可以线性增加,整个集群没有单点故障,可用性和扩展性都可以做到很高,更适合 OLTP 应用。但是它的问题在于:
- NDB(“NDB” 是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点。) 存储引擎必须要求数据全部加载到内存之中,限制比较大,但是目前 NDB 新版本对此做了改进,允许只在内存中加 载索引数据,数据可以保存在磁盘上。
- 目前的 MySQL cluster 的性能还不理想,因为数据是按照主键 hash 分布到不同的存储节点上,如果应用不是通过主键去获取数据的话,必须在所有的存储节点上扫描, 返回结果到处理节点上去处理。而且,写操作需要同时写多份数据到不同的存储节点上, 对 节点间的网络要求很高。
虽然 MySQL cluster 目前性能还不理想,但是 share nothing 的架构一定是未来的趋势,Oracle 接手 MySQL之后,也在大力发展 MySQL cluster,我对 MySQL cluster 的前景抱有很大的期待。
mysql-cluster构造
安装mysql-cluster首先要了解cluster的构造,Cluster大体上是由管理节点(mgmd)、数据节点(ndbd)、sql节点(mysqld)组成的。
虚拟机安装centos6.6
系统要求:
内存:4G(最少4G)
CPU:需要支持VT
如果你是笔记本用户那么cpu虚拟化可能是关闭的,请在BIOS下设置virtualization 为enable
新建虚拟机,选择典型安装,点击下一步
点击下一步
这里用户名最好是mysql因为后面要用到。设置成其他用户也可以。
下一步
位置就是保存这个虚拟centos系统的位置
下一步
选择如图所示,下一步
选择自定义硬件,建议最好每个虚拟机分配1G的内存。每个cent最少分配512M内存。
点击完成就可以了。
虚拟机安装完成后,用root权限进入。密码和mysql账户的密码相同。
mysql-cluster下载
www.mysql.com/downloads/cluster 选择linux-generic下的版本 根据你的cent的系统选择32or64
centos6.6搭建环境配置
首先进入linux终端,右键桌面如图所示
Open in terminal(终端)
安装mysql-cluster前首先要卸载原有系统自带的mysql
联网卸载(终端下执行命令)
#yum remove mysql
手动清理(终端下执行命令)
#rpm –qa|grep mysql* (这条是查询系统中存在的mysql)
#rpm –e –nodeps mysql-libs-5.1.71-1.el6.x86_64 (不同版本的centos这个版本也不同)
mysql-cluster安装包导入cent中
首先查询需要导入的cent的ip地址,终端下输入
#ifconfig
如图所示其中inet addr:192.168.191.129就是这个cent的ip地址。
下载软件winscp
打开软件
新建站点,主机名就是cent 的ip ,用户名使用root
点击登录,输入密码,连接成功
左边是windows右边是cent
Cent下进入目录/usr/local/src 把你的mysql-cluster安装文件放在这个目录下
打开cent终端
添加mysql用户和组(如果前面安装虚拟机的时候使用的用户是mysql则跳过此步骤
添加mysql用户
1. # groupadd mysql
2. # useradd mysql -g mysql
安装mysql-cluster 7.4.4-linux
1. # cd /usr/local/src/(已下载好集群版)
2. # tar -xvf mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64.tar.gz
3. # mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64 ../mysql
4. # cd ..
5. # chown -R mysql:mysql mysql/
6. # cd mysql
7. # scripts/mysql_install_db --user=mysql
当出现这个页面则mysql-cluster安装成功
以上步骤是安装mysql-cluster必须步骤,所有机器都要进行以上的步骤
集群配置
首先进行管理节点的配置(终端输入)
# vi /var/lib/mysql-cluster/config.ini (目录和文件没有请新建,添加以下内容)
1. [NDBD DEFAULT] 2. NoOfReplicas=2 3. [TCP DEFAULT] 4. portnumber=3306 5. 6. [NDB_MGMD] 7. #设置管理节点服务器 8. nodeid=1 9. HostName=192.168.191.132 (管理节点服务器ip地址) 10. DataDir=/var/mysql/data 11. 12. [NDBD] 13. nodeid=2 14. HostName=192.168.191.130 (ndbd点ip地址) 15. DataDir=/var/mysql/data 16. 17. [MYSQLD] 18. nodeid=3 19. HostName=192.168.191.131 (mysqld节点ip地址) 20. [MYSQLD] 21. nodeid=4 22. HostName=192.168.191.133 (mysqld节点ip地址) 23. 24. #必须有空的mysqld节点,不然数据节点断开后启动有报错 25. [MYSQLD] 26. nodeid=5 27. [mysqld] 28. nodeid=6
以上内容输入完毕后,按ESC,输入:wq即可保存退出
拷贝ndb_mgm、ndb_mgmd、config.ini到bin目录。
# cd /usr/local/mysql/bin
# cp ./ndb_mgm /usr/local/bin/
# cp ./ndb_mgmd /usr/local/bin/
# cp /var/lib/mysql-cluster/config.ini /usr/local/bin/
数据节点配置(终端输入)
# vi /etc/my.cnf (添加以下内容)
[mysqld]
datadir=/var/mysql/data
socket=/var/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#运行NDB存储引擎
ndbcluster
#指定管理节点
ndb-connectstring=192.168.191.132 (管理节点ip)
[MYSQL_CLUSTER]
ndb-connectstring=192.168.191.132 (管理节点ip)
[NDB_MGM]
connect-string=192.168.191.132 (管理节点ip)
[mysqld_safe]
log-error=/var/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Sql节点配置(终端输入)
# cd /usr/local/mysql/
设置mysql服务为开机自启动
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld
# vi /etc/my.cnf (添加以下内容)
[mysqld]
datadir=/var/mysql/data
socket=/var/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-bin = /var/mysql/log/mysql-bin.log
max_connections=1000
#以下为mysql 主主模式的配置文件
# 忽略mysql数据库复制
binlog-ignore-db=mysql
# 每次增长2
auto-increment-increment=2
# 设置自动增长的字段的偏移量,即初始值为2
auto-increment-offset=1
ndbcluster
ndb-connectstring=192.168.191.132 (管理节点ip)
[MYSQL_CLUSTER]
ndb-connectstring=192.168.191.132 (管理节点ip)
[NDB_MGM]
connect-string=192.168.191.132 (管理节点ip)
[mysqld_safe]
log-error=/var/mysql/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
这里要注意,在var目录下新建mysql目录,在新建的mysql目录下建立log和data目录
另外要给这两个目录授权代码如下
# cd /var
# chown –R mysql:mysql mysql/
下面两个命令是对mysql命令的一个link,否则无法使用mysql命令
# Ln –s /usr/local/mysql/bin/mysql /usr/bin
# Ln –s /var/mysql/mysql.sock /tmp/mysql.sock
运行mysql-cluster
mysql集群的启动顺序为:管理节点->数据节点->SQL节点
mysql集群的关闭顺序为,管理节点->数据节点->SQL节点
打开服务的时候注意防火墙问题
注意把管理节点的防火墙关闭 命令如下:
# /etc/init.d/iptables stop
首先打开管理节点服务
# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial(注意第一次或者对config文件进行修改后,打开服务一定要加上initial否则新增加的内容不会被使用)
然后打开ndbd节点服务
# /usr/local/mysql/bin/ndbd --initial(此处同上)
出现一下信息表示ndbd节点启动成功.
2012-03-28 02:01:38 [ndbd] INFO -- Angel connected to '10.32.33.120:1186'
2012-03-28 02:01:38 [ndbd] INFO -- Angel allocated nodeid: 36
最后打开两个sql节点131和133
#service mysqld start
出现mysql success表示服务启动成功
打开管理节点,终端输入
# ndb_mgm
#ndb_mgm> show
显示以下信息,则mysql-cluster安装部署成功
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @192.168.191.130 (mysql-5.5.20 ndb-7.4.4, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @192.168.191.132 (mysql-5.5.20 ndb-7.4.4)
[mysqld(API)] 4 node(s)
id=3 @192.168.191.131 (mysql-5.5.20 ndb-7.4.4)
id=4 @192.168.191.133 (mysql-5.5.20 ndb-7.4.4)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
可以看到各个节点已经连接上了。
以下是关于mgm相关的命令
# ndb_mgm
# ndb_mgm> show 查看各节点情况。
# ndb_mgm> all report memory 查看各数据节点使用情况
# ndb_mgm>create nodegroup 3创建数据节点分组
# mysql> alter online table data_house reorganize partition; 调整分区数据
# ndb_mgm>shutdown关闭节点
# ndb_mgm>exit退出
常见问题
Mysqld端服务无法启动
[root@localhost Desktop]#service mysqld start
Starting mysql.the service quit without updating PID file (/[FAILED]/var/mysql/log/localhost.localdomain.pid).
先去查看日志
#cd /var/mysql/data
#less localhost.localdomain.err
如果错误是
Fatal error:can’t open and lock privilege tables:Table’mysql.user’ doesn’t exist
解决方法:
终端输入
到mysql目录下/usr/local/mysql
输入
Scripts/mysql_install_db –user=mysql(初始化数据库即可)
其他问题请注意查看问题所在的文件夹权限问题
测试
1、从SQL节点131登录,创建数据库和表,进行简单测试。
mysql> create database tltest ;
mysql> use tltest;
Database changed
mysql> create table test1(id int,name varchar(10)) engine=ndb ;
mysql> insert into test1 values(1,'tl');
mysql> select * from test1 ;
+------+---------+
| id | name |
+------+---------+
| 1 | tl |
+------+---------+
登陆133节点,查看效果,库,表和数据已经同步。
从133节点插入一条数据,同样登陆131,也能看到数据已经同步。
尾注:本系列文档,笔者真机环境测试无误得以分享,纯属原创,若有转载,请注释出处.:真机环境下MySQL-Cluster搭建文档
【Data Cluster】真机环境下MySQL数据库集群搭建的更多相关文章
- 生产环境MySQL数据库集群MHA上线实施方案
生产环境MySQL数据库集群MHA上线实施方案 一.不停库操作 1.在所有节点安装MHAnode所需的perl模块(需要有安装epel源) yum install perl-DBD-MySQL -y ...
- MySQL数据库集群进行正确配置步骤
MySQL数据库集群进行正确配置步骤 2010-06-09 10:47 arrowcat 博客园 字号:T | T 我们今天是要和大家一起分享的是对MySQL数据库集群进行正确配置,我前两天在相关网站 ...
- docker环境下solrcloud+zookeeper集群部署教程
前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...
- Facebook揭密:如何让MySQL数据库集群自主运行
Facebook运行着全球最大的MySQL数据库集群,该集群分布在两个大洲上的多个数据中心中数以千计的服务器上.让人不解的是,Facebook只动用了一个很小的团队来管理这个庞大的MySQL数据库集群 ...
- 在Windows中单机环境下创建RabbitMQ集群
本文根据:http://www.360doc.com/content/15/0312/17/20874412_454622619.shtml整理而来 RabbitMQ具有很好的消息传递性能,同时又是开 ...
- mysql数据库集群
mysql数据库集群主要有2种常用方案: replication:速度快.弱一致性.适合保存低价值的数据,主要应用于日志.新闻.帖子等系统. PXC:速度慢.强一致性.适合保存高价值的数据,主要应用于 ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- 【转】【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
原文地址:http://www.cnblogs.com/baiboy/p/orc9.html 阅读目录 目录 检查RAC状态 检查创建的数据库 全部参考文献 相关文章 Oracle 11G RAC ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)
Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
随机推荐
- Android笔记——Button点击事件几种写法
Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button ...
- CSS浮动、定位
这几天有空,整理了关于CSS浮动和定位的一些知识点,有什么欠缺的地方,欢迎大家批评指正. 一.文档流的概念指什么?有哪种方式可以让元素脱离文档流? 文档流,指的是元素排版布局过程中,元素会自动从左往右 ...
- ubuntu如何安装nodejs最新版 本
如何正确的安装nodejs? 我们可以先安装nvm, git clone https://github.com/creationix/nvm.git ~/.nvm 然后打开 ~/.bashrc , ...
- 【WPF】日常笔记
本文专用于记录WPF开发中的小细节,作为备忘录使用. 1. 关于绑定: Text ="{Binding AnchorageValue,Mode=TwoWay,UpdateSourceTrig ...
- SEO:权重如何做到从0到1
SEO:权重如何做到从0到1 [写于2016年9月]我真的好久好久没到我的博客上去看过了,今天突然登上 seo.chinaz.com,搜索 dkplus.iteye.com,发现自己的博客在百度收录中 ...
- BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]
1692: [Usaco2007 Dec]队列变换 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1383 Solved: 582[Submit][St ...
- NodeJs 开发微信公众号(五)真实环境部署
在测试环境下开发完成代表着你离正式上线的目标不远了.接下来本章就主要谈一谈把测试环境的公众号升级为正式的公众号. 服务器和域名 目前为止我们只是在自己的电脑上完成了测试环境.真实的线上环境当然需要自己 ...
- .NET深入实战系列—Linq to Sql进阶
最近在写代码的过程中用到了Linq查询,在查找资料的过程中发现网上的资料千奇百怪,于是自己整理了一些关于Linq中容易让人困惑的地方. 本文全部代码基于:UserInfo与Class两个表,其中Cla ...
- EasyPR--开发详解(6)SVM开发详解
在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机 ...
- Direct3D Draw函数 异步调用原理解析
概述 在D3D10中,一个基本的渲染流程可分为以下步骤: 清理帧缓存: 执行若干次的绘制: 通过Device API创建所需Buffer: 通过Map/Unmap填充数据到Buffer中: 将Buff ...