mysql分布式集群实现原理
做MySQL集群,例如:利用mysql cluster ,mysql proxy,mysql replication,drdb等等
有人会问mysql集群,根分表有什么关系吗?虽然它不是实际意义上的分表,但是它启到了分表的作用,做集群的意义是什么呢?为一个数据库减轻负担,说白了就是减少sql排队队列中的sql的数量,举个例子:有10个sql请求,如果放在一个数据库服务器的排队队列中,他要等很长时间,如果把这10个sql请求,分配到5个数据库服务器的排队队列中,一个数据库服务器的队列中只有2个,这样等待时间是不是大大的缩短了呢?这已经很明显了。所以我把它列到了分表的范围以内,我做过一些mysql的集群:
Linux mysql proxy 的安装,配置,以及读写分离
mysql replication 互为主从的安装及配置,以及数据同步
优点:扩展性好,没有多个分表后的复杂操作(PHP代码)
缺点:单个表的数据量还是没有变,一次操作所花的时间还是那么多,硬件开销大。
集群资料:http://www.th7.cn/db/mysql/201409/72633.shtml
ex:
1:
Windows server 2003 192.168.119.88(管理节点,存储节点,SQL节点)
Windows server 2003 192.168.119.87(存储节点,SQL节点)
2、安装程序
在两台机器上面同时进行
(1)在mysql cluster官网:
中下载msi安装软件mysql-cluster-gpl-7.4.11-win32.msi
可能需要Oracle用户注册后下载
安装完成后
(2)在命令行中切换到mysql安装后bin目录下执行:
mysqld --install mysql 注册服务
(3)设置环境变量:
将mysql安装后bin目录添加到环境变量中。
3、创建配置文件
(1)在10.135.10.51上创建c:/cluster/config.ini文件,内容为:
[ndbd default]
NoOfReplicas=2
[ndb_mgmd] #管理节点
NodeId=1
HostName=192.168.119.88
DataDir=c:/cluster/data
[ndbd] #数据节点
NodeId=21
HostName=192.168.119.88
DataDir=c:/cluster/ndbdata
[ndbd] #数据节点
NodeId=22
HostName=192.168.119.87
DataDir=c:/cluster/ndbdata
[mysqld] #sql节点
NodeId=11
HostName=192.168.119.88
[mysqld] #sql节点
NodeId=12
HostName=192.168.119.87
注意:在88机器c:/cluster目录下创建data和ndbdata目录。在87机器c:/cluster目录下创建ndbdata目录。
(2)在两台机器上创建mysql配置文件my.ini
在mysql cluster安装目录下找到my-default.ini文件,复制到当前目录并重命名为my.ini。
在my.ini尾部添加如下内容:
[mysql_cluster]
ndb-connectstring=192.168.119.88
[mysqld]
ndbcluster
ndb-connectstring=192.168.119.88
4、启动mysqlcluster(在192.168.119.88中执行)
(1)打开新cmd窗口
ndb_mgmd.exe --config-file=c:/cluster/config.ini--configdir=c:/cluster
(2)打开新cmd窗口
ndbd.exe --initial /*首次执行时加入--initial参数*/
(3)打开新cmd窗口
mysqld.exe--default-file="C:/ProgramFiles/MySQL/MySQL Cluster 7.4/my.ini"
执行完成后启动mysql:
net start mysql
5、在192.168.119.87中执行:
打开新cmd窗口:
ndbd.exe
打开新cmd窗口
mysqld.exe--default-file="C:/ProgramFiles/MySQL/MySQL Cluster 7.4/my.ini"
执行完成后启动mysql:
net start mysql
6、查看安装情况
在192.168.119.88或192.168.119.87上打开cmd窗口,执行
ndb_mgm.exe
ndb_mgm>show
如图所示。
其中,MGM为管理节点,API(mysqld)为SQL节点,NDB为数据节点。
7.在任意一台机器上使用Navicat创建一张存储引擎为ndbcluster的表,并在表中添加一些测试数据。在另外一台机器上查看,可以看到数据库已经同步。
注意点:
1:DataDir=c:/cluster/ndbdata目录必须要创建不要写错会导致问题
2:mysql安装完成后,手动注册服务mysqld --install mysql 注册服务
3:远程登录mysql的授权语句;初始化时用户root密码为空。
GRANT ALL PRIVILEGES ON *.*TO 'root'@'192.168.118.130' WITH GRANT OPTION;
4:创建表语句
CREATETABLE `test` (
`id` varchar(32) NOT NULL,
`name` varchar(32) NOT NULL
) ENGINE=ndbcluster DEFAULTCHARSET=latin1
成功截图
mysql分布式集群实现原理的更多相关文章
- MySQL分布式集群之MyCAT(转)
原文地址:http://blog.itpub.net/29510932/viewspace-1664499/ 隔了好久,才想起来更新博客,最近倒腾的数据库从Oracle换成了MySQL,研究了一段时间 ...
- 如何搭建一个 MySQL 分布式集群
1.准备集群搭建环境 使用6台虚拟机来搭建 MySQL分布式集群 ,相应的实验环境与对应的MySQL节点之间的对应关系如下图所示: 管理节点(MGM):这类节点的作用是管理MySQLCluster内的 ...
- MySQL分布式集群之MyCAT(三)rule的分析【转】
首先写在最前面,MyCAT1.4的alpha版本已经发布了,这里面修复了不少的bug,也完善了一细节,之前两篇博客已经做了一些修改 ---------------------------------- ...
- MySQL分布式集群之MyCAT(二)【转】
在第一部分,有简单的介绍MyCAT的搭建和配置文件的基本情况,这一篇详细介绍schema的一些具体参数,以及实际作用 首先贴上自己测试用的schema文件,双引号之前的反斜杠不会消除,姑 ...
- MySQL分布式集群之MyCAT(一)简介【转】
隔了好久,才想起来更新博客,最近倒腾的数据库从Oracle换成了MySQL,研究了一段时间,感觉社区版的MySQL在各个方面都逊色于Oracle,Oracle真的好方便!好了,不废话,这次准备记录一些 ...
- 抄来的,占个位儿【百度架构师是怎样搭建MySQL分布式集群】
1.准备集群搭建环境 使用6台虚拟机来搭建MySQL分布式集群,相应的实验环境与对应的MySQL节点之间的对应关系如下图所示: 管理节点(MGM):这类节点的作用是管理MySQLCluster ...
- 分布式集群Session原理及实现共享
1.什么是Session/Cookie? 用户使用网站的服务,基本上需要浏览器与Web服务器的多次交互.HTTP协议本身是无状态的,当用户的第一次访问请求结束后,后端服务器就无法知道下一次来访问的还是 ...
- Mysql分布式集群
一.准备 集群: 192.168.1.191 管理节点192.168.1.192 管理节点192.168.1.193 数据节点和API节点 192.168.1.194 数据节点和API节点 安 ...
- 【Database】Mysql分布式集群学习笔记
一.sql 的基本操作 (2018年11月29日,笔记) (1)数据库相关操作 创建数据库.查看数据库.删除数据库 #. 创建数据库 create database mytest default ch ...
随机推荐
- IE6 下 DD_belatedPNG 引发的血案
群里一朋友Q我,说遇到兼容性问题了,我说为何不用jQuery呢(因为他们公司要求尽量js写).他说用了,还是有问题,IE6下不行,其他都行.然后他发我代码,我一开始真以为是兼容性问题,比如数组对象最后 ...
- 把JS和CSS合并到1个文件
合并JS文件和CSS文件很多人都知道,也用过,目的是为了减少请求数.但有时候我们觉的把JS合并到1个文件,CSS又合并到另外1个文件也是浪费,我们如何能把CSS和JS一起合并进1个文件了? 这里需要使 ...
- CPU字节序
小端存储:低对低,高对高(低位存储在低地址,高位存储在高地址) 大端存储:低对高,高对低(低位存储在高地址,高位存储在低地址) 小端字节序: x86体系结构,arm指令只支持小端,数据支持大小端 ...
- Getting Real 摘记
第二章 起始点 一个很好的做软件的方式就是一开始用它来解决你自己的问题.由于你自己变成了软件的目标受众因此你会知道什么是重要的什么不是.这样做下去将会是推出一个突破性产品的伟大起始点. 手头有多少钱就 ...
- Druid.io SQL乱码问题
1.场景 1.1.依赖版本 avatica-core 1.11.0 druid 0.12.0 1.2.问题重现: 使用Avatica JDBC查询语句:SELECT score FROM studen ...
- Qt多线程编程中的对象线程与函数执行线程
近来用Qt编写一段多线程的TcpSocket通信程序,被其中Qt中报的几个warning搞晕了,一会儿是说“Cannot create children for a parent that is in ...
- SolrJ查询条件组合查询实现——(十六)
带查询条件的实现原理: 查询按钮被包在一个大表单,表单还有三个隐藏域,一个商品筛选,一个 价格,一个排序,每次点击查询时候清空三个隐藏域,就带着一个大条件去查询;点击下面的筛选条件时,给隐藏域的筛选条 ...
- java中并发Queue种类与各自API特点以及使用场景!
一 先说下队列 队列是一种数据结构.它有两个基本操作:在队列尾部加入一个元素,和从队列头部移除一个元素(注意不要弄混队列的头部和尾部) 就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经 ...
- torch.Tensor.view (Python method, in torch.Tensor)
返回具有相同数据但大小不同的新张量.返回的张量共享相同的数据,必须具有相同数量的元素,但可能有不同的大小. Example >>> x = torch.randn(4, 4) > ...
- getattr的使用
from requests_html import HTMLSession class UrlGenerator(object): def __init__(self, root_url): self ...