天天看點

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即可看到邏輯庫,打擊打開可以看到庫内所有表(不用單獨再建立每一張實體表的邏輯表,自動映射)。

繼續閱讀