mysql集群搭建--韩国庆
按照我给大家提供的步骤,一步一步来,你就能配好mysql集群环境
什么是mycat
简单的说,MyCAT就是:
•一个彻底开源的,面向企业应用开发的“大数据库集群”
•支持事务、ACID、可以替代Mysql的加强版数据库
•一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群
•一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
•结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
•一个新颖的数据库中间件产品
MyCAT的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题
自动故障切换,高可用性
•支持读写分离,支持Mysql双主多从,以及一主多从的模式
•支持全局表,数据自动分片到多个节点,用于高效表关联查询
•支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
•多平台支持,部署和实施简单
mycat解决的问题
性能问题
数据库连接过多
E-R分片难处理
可用性问题
成本和伸缩性问题
mycat对数据库的支持
mycat分片策略
MyCAT支持水平分片与垂直分片:
•水平分片:一个表格的数据分割到多个节点上,按照行分隔。
•垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。
MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法。
1、Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。
2、Table:表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。
3、DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上
4、DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上
Mycat下载及安装
官方网站http://www.mycat.org.cn/
github网站https://github.com/MyCATApache
mycat安装环境
mycat是java编写的,所以必须先安装java的环境变量。在这里韩老师采用的是在生产环境linux下进行讲解mycat,那么我也会给大家提供windows下的mycat包.
先安装mysql
这如何安装linux下的mysql数据库我已经给大家提供文档了,照着韩老师文档一步步配置即可。
学习mycat这里我们需要安装两个数据库,所以大家要把两个mysql数据提前安装好
安装mycat
linux下mycat的tar包上传至centos7上
把mycat解压到/usr/local下
tar -zxvf Mycat-server-1.4-release-20151019230038-linux.tar.gz -C /usr/local
如果这些linux命令还记不住,请放下代码,回家种地去...
解压过后的文件/usr/local
mycat目录
bin目录下,这里有mycat的脚本
conf目录下配置文件
rule.xml:这里主要配置分库分表的规则
schema.xml:这里主要配置逻辑的表,以及如何连接dataNode配置
server.xml:这里主要就是一些全局的配置了
启动mycat
在mycat/bin目录下
./mycat start
分区
分区条件:这里我们需要两个mysql数据库服务
mysql-1数据库中 创建db1和db3两个数据库
mysql-2数据库中 创建db
分片配置
我们要把表分配到三个节点上(数据库),这时我们配置mycat的schema.xml
Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。
schema 标签用于定义MyCat实例中的逻辑库
Table 标签定义了MyCat中的逻辑表
dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。
注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。在MySQL的配置文件中my.ini [mysqld] 中增加一行(linux下叫my.cnf)
lower_case_table_names = 1
编辑Schema.xml配置文件
vi schema.xml
讲解Schema.xml信息(配置后的文件)
如下,我们配置数据库有一个商品表(tb_item),如果有更多的表,以此在这里配置表分区操作。
这里需要注意:我们mysql默认是区分大小写表名的,如果不区分,我们需要在安装mysql的时候,在/etc/my.cnf这里添加不区分大小配置
lower_case_table_names = 1 不区分大小写
修改server.xml
分配mycat用户名和密码
修改wrapper.conf
修改mycat连接超时时间
wrapper.startup.timeout=7200
启动mycat
./mycat start
先试用命令的方式登录mycat服务
mysql -h127.0.0.1 -uroot -P8066 -p123456
然后使用mysql客户端登录
测试,在mycat逻辑库中创建表
create table tb_item(id int not null primary key ,username varchar(20),passwords varchar(20));
这时,我们操作mycat数据库时,其他两个mysql数据库中就会创建出来tb_item表,这就代表已经配置mycat成功。
操作mycat
我们可以创建一个表测试
老师给大家提供了创建表的sql语句和插入的sql语句。
我们把数据插入到mycat逻辑库中。
那么我们发现这些数据分到其他的物理库中
大家注意:mycat把数据分配至物理库是采用id字段记录数,每个物理库所分配的记录数到id等于500万,是根据id值。不是总500万条记录。当超过了总物理库所储存的id值时,则不能插入数据成功,需要我们再次横向扩容。
mysql集群搭建--韩国庆的更多相关文章
- Redis集群搭建-韩国庆
认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...
- windows+mysql集群搭建-三分钟搞定集群
注:本文来源: 陈晓婵 < windows+mysql集群搭建-三分钟搞定集群 > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...
- 2-20 MySQL集群搭建实现高可用
MySQL集群概述和安装环境 MySQL Cluster是MySQL适合于分布式计算环境的高实用.高冗余版本.Cluster的汉语是"集群"的意思.它采用了NDB Cluster ...
- MySQL集群搭建详解
概述 MySQL Cluster 是MySQL 适合于分布式计算环境的高实用.可拓展.高性能.高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达 ...
- MySQL集群搭建方案(PXC)
服务器快过期了,清一点库存,把运维这块的知识复习下 为什么要搭MySQL集群 技术层面上,传统的单节点数据库,万一宕机了,就凉凉了.容灾性能差.抗并发能力有限,数据量大的时候查询有瓶颈.学习层面上,作 ...
- Mysql集群搭建(多实例、主从)
1 MySQL多实例 一 .MySQL多实例介绍 1.什么是MySQL多实例 MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通 ...
- MySQL集群搭建(6)-双主+keepalived高可用
双主 + keepalived 是一个比较简单的 MySQL 高可用架构,适用于中小 MySQL 集群,今天就说说怎么用 keepalived 做 MySQL 的高可用. 1 概述 1.1 keepa ...
- MySQL集群搭建
在集群中的所有主机上安装提供集群功能的软件包 官网上下载的 mysql-cluster-gpl-7.3.12-linux-glibc2.5-x86_64.tar.gz 规划了5台服务器,10.10. ...
- mysql集群搭建教程-基础篇
计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.于是在孟海滨师哥的带领下开始了我的第一次搭建mysql集群,首先看了一些关于集群的资料,然后根 ...
随机推荐
- 多个DispatcherServlet有什么用处.md
有看到一些应用在 web.xml 文件中配置了多个 DispatcherServlet,例如: <servlet> <servlet-name>en</servle ...
- 数字特征值-python
#Digital eigenvalue.py number = eval(input()) count = 0 Ob = 0 Ox = 0 while number > 0: Ob = numb ...
- [LeetCode&Python] Problem 27. Remove Element
Given an array nums and a value val, remove all instances of that value in-placeand return the new l ...
- redux源码图解:createStore 和 applyMiddleware
在研究 redux-saga时,发现自己对 redux middleware 不是太了解,因此,便决定先深入解读一下 redux 源码.跟大多数人一样,发现 redux源码 真的很精简,目录结构如下: ...
- [工作积累] Tricks with UE4 PerInstanceRandom
最近在用UE4的Instancing, 发现限制很多. Unity有instancing的attribute array (uniform/constant buffer),通过InstanceID来 ...
- [Java] 基本資料包裝類別 Wrapper Classes
基本型別包裝 (Wrapper Classes) 將基本型別生成物件,要將基本型別先包裝成物件,才能執行生成, Boxing: Integer a = new Integer(1) Unboxing: ...
- Spring AOP详解
一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...
- 网络工具之chisel + openvpn混合
目的: 访问内网的shared folder 内网可以无缝访问internet而不需要设置代理(因为有些软件没办法支持代理,比如rustup) 解决方案: 基本思路 家里 设置chisel服务开放44 ...
- 在mysql配置文件修改sql_mode或sql-mode 怎么办?
很多在安装程序配置数据库这一步中会出现: 请在mysql配置文件修改sql_mode或sql-mode 这个问题处理很简单: mysql中修改my.cnf,找到sql_mode,修改值为: NO_AU ...
- Unity 3D中的阴影设置
在Unity 3D中,经常需要用到光照阴影,即Directional Light的Shadow,Shadow分为Hard Shadow和Soft Shadow.区别是Soft Shadow的阴影边缘比 ...