搭建高性能数据库集群之二:MySQL读写分离(基于mycat2-1.22)

一、概述

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

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

二、配置

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

在这里插入图片描述
分别对应mycat的配置文件如下图:
在这里插入图片描述
本文采用 mycat2 特有的注释进行相关配置读写分离。

前提:

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

步骤:

1、使用 Navicat 连接 mycat2
在这里插入图片描述

2、增加mysql读写库数据源
复制以下脚本在navicat查询器中执行:

/*+ mycat:createDataSource{
	"dbType":"mysql",
	"idleTimeout":60000,
	"initSqls":[],
	"initSqlsGetConnection":true,
	"instanceType":"READ_WRITE",
	"maxCon":1000,
	"maxConnectTimeout":3000,
	"maxRetryCount":5,
	"minCon":1,
	"name":"write01",
	"password":"root",
	"type":"JDBC",
	"url":"jdbc:mysql://192.168.0.201:3306/pmonitor?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",	// 这里要加上数据库名pmonitor,否则mycat在执行delete语句时会报错找不到database
	"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":"root",
	"type":"JDBC",
	"url":"jdbc:mysql://192.168.0.202:3306/pmonitor?useUnicode=true&serverTimezone=UTC&characterEncoding=UTF-8",	// 这里要加上数据库名pmonitor,否则mycat在执行delete语句时会报错找不到database
	"user":"root",
	"weight":0
} */;

可在查询器中通过执行以下语句查询已创建的数据源

/*+ mycat:showDataSources {} */ 

也可以通过配置文件夹查看到新创建的数据源配置文件
在这里插入图片描述
后续配置变更可以直接修改此配置文件

vi read01.datasource.json
vi write01.datasource.json

在这里插入图片描述

扫描二维码关注公众号,回复: 16707925 查看本文章

3、创建读写集群
复制以下语句到查询器中执行:

/*+ mycat:createCluster{
	"clusterType":"MASTER_SLAVE",
	"heartbeat":{
		"heartbeatTimeout":1000,
		"maxRetry":3,
		"minSwitchTimeInterval":300,
		"slaveThreshold":0
	},
	"masters":[
		"write01" // 可以配置多个主节点,在主挂的时候会选一个检测存活的数据源作为主节点
	],
	"maxCon":2000,
	"name":"c0",			// 集群的名字
	"readBalanceType":"BALANCE_ALL",	// 读数据的负责均衡策略:BALANCE_ALL -- 获取集群中所有数据源,BALANCE_ALL_READ -- 获取集群中允许读的数据源, BALANCE_READ_WRITE -- 获取集群中允许读写的数据源,但允许读的数据源优先, BALANCE_NONE -- 获取集群中允许写数据源,即主节点中选择
	"replicas":[
		"read01" // 可以配置多个从节点
	],
	"switchType":"SWITCH"
} */;

可在查询器中通过执行以下语句查询已创建的查看集群

/*+ mycat:showClusters {} */ 

也可以通过配置文件夹查看到新创建的mycat集群配置文件
在这里插入图片描述
后续参数变更可以直接修改此文件

vi co.cluster.json

在这里插入图片描述

4、创建逻辑库

/*+ mycat:createSchema{
	"customTables":{},
	"globalTables":{},
	"normalTables":{},
	"schemaName":"pmonitor",		// 与物理库中的数据库名保持一致,注:数据库名不能有符号“-”
	"shardingTables":{},
	"targetName":"c0"		// 	注意 targetName 指的是集群的名字
} */;

可在查询器中通过执行以下语句查询已创建的逻辑库

/*+ mycat:showSchemas {} */ 

也可以通过配置文件夹查看到新创建的mycat集群配置文件
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/hualinger/article/details/131561167