MyCat实现水平分库

MyCat实现水平分库

mycat的关键特性

  • 支持 SQL 92标准

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

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

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

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

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

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

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

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

为什么要进行水平分库
(1)集中式处理,势必造成性能瓶颈;

(2)应用程序集中在一台计算机上运行,一旦该计算机发生故障,则整个系统受到影响,可靠性不高;

(3) 集中式处理引起系统的规模和配置都不够灵活,系统的可扩充性差。

在这种形势下,集中式数据库将向分布式数据库发展。

mycat的分片规则
一共有10种,今天只讲一种:取余

例子 分片
1%3=1 第二个分片
2%3=2 第三个分片
3%3=0 第一个分片

测试分片

首先我们需要安装好了的两个容器,分别为mysql及mycat。
在mycat中需要一张表,同时在mysql中建三个数据库,分别为dm_order1,dm_order2,dm_order3,并在这3个数据库分别建1张表和mycat主表结构一样,这样对应待会分过来的数据。
我这里使用的是partainer,进入mycat容器,找到console,进去,然后到这个界面,点击
提示如果你用的是普通docker安装容器的,执行以下命令::

1. docker ps -a 查询所有容器包括未启动的:
2. docker start + 容器名字 就进去了:

MyCat实现水平分库_第1张图片
进入容器以后,找到mycat下的conf目录下3个配置文件:

  1. schema.xml:主要是对数据库的逻辑操作
    将以下内容放入mycat:schema标签里:

   
		
	
	
	
	
		select 1
	
  
  
	

 
  

rule.xml:主要配置分片规则:



		
			id
			rang-mod-dm
		
	
 

 
		3
	

server.xml: 在加以下内容:


  
		123456
		dm_order
	
	

	
		user
		
		dm_order
		true
	

连接mycat数据库,向表里添加3条测试数据:
MyCat实现水平分库_第2张图片
然后在mysql刷新一下,3个数据就都有对应分片规则的数据了:
order1里就有第三条数据了。
MyCat实现水平分库_第3张图片
end …

你可能感兴趣的:(MyCat)