天天看点

Mycat2读写分离配置

作者:Java尚浩宇

一、概述

读写分离是常见的一种数据库架构,一般是由1主多从构成,特殊场景下也会存在多主多从的架构。以下是常见的架构示意图:

一主一从

Mycat2读写分离配置

一主多从

Mycat2读写分离配置

双主双从

Mycat2读写分离配置

双主多从

无论哪一种架构,对于应用程序来说都是多个数据源,增加了代码的复杂性。如果配合mycat,则可以实现屏蔽数据库复杂性,面向应用程序提供统一入口的功能。

二、配置

mycat2的配置逻辑架构大致如下:

Mycat2读写分离配置

本文采用mycat2特有的注释进行相关配置读写分离。

准备:

1、已配置主从的两个mysql实例

2、mycat2实例

步骤:

1、使用Navicat连接mycat2

2、增加mysql读写库数据源

/*+ mycat:createDataSource{
	"dbType":"mysql",
	"idleTimeout":60000,
	"initSqls":[],
	"initSqlsGetConnection":true,
	"instanceType":"READ_WRITE",
	"maxCon":1000,
	"maxConnectTimeout":3000,
	"maxRetryCount":5,
	"minCon":1,
	"name":"write01",
	"password":"123456",
	"type":"JDBC",
	"url":"jdbc:mysql://127.0.0.1:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",
	"user":"root",
	"weight":0
} */;/*+ mycat:createDataSource{
	"dbType":"mysql",
	"idleTimeout":60000,
	"initSqls":[],
	"initSqlsGetConnection":true,
	"instanceType":"READ_WRITE",
	"maxCon":1000,
	"maxConnectTimeout":3000,
	"maxRetryCount":5,
	"minCon":1,
	"name":"read01",
	"password":"123456",
	"type":"JDBC",
	"url":"jdbc:mysql://127.0.0.1:3306?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",
	"user":"root",
	"weight":0
} */;           

可通过/*+ mycat:showDataSources{} */语句查询已创建的数据源

2、创建读写集群

/*! mycat:createCluster{
	"clusterType":"MASTER_SLAVE",
	"heartbeat":{
		"heartbeatTimeout":1000,
		"maxRetry":3,
		"minSwitchTimeInterval":300,
		"slaveThreshold":0
	},
	"masters":[
		"write01" //主节点
	],
	"maxCon":2000,
	"name":"c0",
	"readBalanceType":"BALANCE_ALL",
	"replicas":[
		"read01" //从节点
	],
	"switchType":"SWITCH"
} */;           

可通过/*+ mycat:showClusters{} */查看集群

3、创建逻辑库

/*+ mycat:createSchema{
	"customTables":{},
	"globalTables":{},
	"normalTables":{},
	"schemaName":"test_add_Schema",
	"shardingTables":{},
	"targetName":"c0"
} */;           

注意targetName指的是集群的名字。

4、以上执行成功后,重新连接mycat即可看到逻辑库,打击打开可以看到库内所有表(不用单独再创建每一张物理表的逻辑表,自动映射)。

继续阅读