zoukankan      html  css  js  c++  java
  • 分库分表之Mycat实现

    分库分表之Mycat实现

    使用分库分表的前提:

    当你们的数据库表数据特别大时,比如说上亿的记录,数据库本身的优化基本上无法解决性能问题了,根本原因是数据库本身的io读写到了一个瓶颈,这个时候,需要海量数据的存储和查询问题。此时我们需要利用分库分表的思想去进行数据库的架构优化。随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为很多可以独立提供服务的小应用。每个应用都有独立的数据库。

     

     什么是Mycat?

    一个彻底开源的,面向企业应用开发的“大数据库集群”

    ·支持事务、ACID、可以替代Mysql的加强版数据库

    ·一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群

    ·一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server

    ·结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

    ·一个新颖的数据库中间件产品

    Mycat架构:

      

     Mycat的关键特性:

    支持 SQL 92标准

    ·支持Mysql集群,可以作为Proxy使用

    ·支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL  Server使用

    ·支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群

    ·自动故障切换,高可用性

    ·支持读写分离,支持Mysql双主多从,以及一主多从的模式

    ·支持全局表,数据自动分片到多个节点,用于高效表关联查询

    ·支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询

    ·多平台支持,部署和实施简单

    Mycat存在的问题:

    跨库join问题

    通过业务分析将不同库的join查询拆分成多个select

    建立全局表(每个库都有一个相同的表)

    冗余字段(不符合数据库三范式)

    * E-R分片(将有关系的记录都存储到一个库中)

    最多支持跨两张表跨库的join

    l 分布式事务(弱事务)

    强一致性事务(同步)

    最终一致性事务(异步思想)

    l 分布式主键

    * redis incr命令

    数据库(生成主键)

    * UUID

    * snowflake算法

    Mycat的下载及安装

    下载mycat:

    github地址:https://github.com/MyCATApache

      Mycat安装:

    安装rz上传文件工具

    yum install -y lrzsz

    第一步:把MyCat的压缩包上传到linux服务器

    第二步:解压缩,得到mycat目录

    tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

    第三步:进入mycat/bin,启动MyCat

    启动命令:./mycat start

    停止命令:./mycat stop

    重启命令:./mycat restart

    注意:可以使用mysql的客户端直接连接mycat服务。默认服务端口为8066

  • 相关阅读:
    table操作:边框-斑马线-多表头-焦点高亮-自动求和
    Pygame
    Struts+HIbernate+Spring
    java 中hashcode 与 equals的关系
    Testcase的编写
    Struts+Hibernate+Spring常见问题
    我的思考
    JSP-------<%@ %>
    Python yield
    Python:itertools模块
  • 原文地址:https://www.cnblogs.com/wnlsq/p/12141978.html
Copyright © 2011-2022 走看看