安裝
1.新建文件夾tools
??????? mkdir tools,并進入tools
2.下載MaCat
????????wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.21.zip
??????? wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
3.解壓zip
????????unzip mycat2-install-template-1.21.zip
?4.添加權限
????????cd ./mycat/bin/
????????chmod +x *
?5.把所需的jar復制到mycat/lib目錄
進入MyCat下lib包中:cp /opt/tools/mycat2-1.21-release-jar-with-dependencies.jar .
6.啟動一個3306的MySQL
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1
?連接:
?7.修改數據源
vim mycat\conf\datasources下prototypeDs.datasource.json 文件
?可修改:user、password、url,根據實際情況配置
8.啟動MyCat
????????進入bin目錄:bin/mycat start
????????bin/mycat stop:停止
????????bin/mycat restart:重啟
????????bin/mycat pause:暫停
配置文件介紹
用戶
位置:/mycat/conf/users/{用戶名}.user.json,用來配置登錄用戶,也就是8806連接的用戶信息
{
??????? "dialect":"mysql",
??????? "ip":null,
??????? "password":"123456",
??????? "transactionType":"proxy",
??????? "username":"root"
}
dialect:數據庫類型
ip:白名單
password:密碼
transactionType:事務隔離級別
username:用戶名
數據源
配置連接物理庫的數據源
位置:/opt/mycat/conf/datasources/{數據源名稱}.datasource.json
{
??????? "dbType":"mysql",
??????? "idleTimeout":60000,
??????? "initSqls":[],
??????? "initSqlsGetConnection":true,
??????? "instanceType":"READ_WRITE",
??????? "maxCon":1000,
??????? "maxConnectTimeout":3000,
??????? "maxRetryCount":5,
??????? "minCon":1,
??????? "name":"prototypeDs",
??????? "password":"123456",
??????? "type":"JDBC",
??????? "url":"jdbc:mysql://localhost:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
??????? "user":"root",
??????? "weight":0
}
邏輯庫與邏輯表
配置 MyCAT 里面和 MySQL 對應的邏輯表
位置:mycat/conf/schemas/(庫名].schema.json
{
"customTables":{},
"globalTables": {},
"normalTables":{},
"schemaName":"test",
"shardingTables":{},
"targetName": "prototype
}
customTables:自定義表
globalTables: 全局表
normalTables:默認表
schemaName:庫名
shardingTables:分片表
targetName: 數據源名(集群名)
序列號
作用: 使用序列號的分片表,對應的自增主鍵要在建表 SQL 中體現。
配置位置: mycat/conf/sequences/數據庫名字)表名字).sequence.json
服務器
是針對 MyCAT 的服務器的配置,一般情況下默認
Mycat2 相關概念
分庫分表
按照一定規則把數據庫中的表拆分為多個帶有數據庫實例,物理庫,物理表訪問路徑的分表。
邏輯庫
數據庫代理中的數據庫,它可以包含多個邏輯表。
解讀:Mycat 里定義的庫,在邏輯上存在,物理上在 MySQL 里并不存在。有可能是多個 MySQL 數據庫共同組成一個邏輯庫。類似多個小孩疊羅漢穿上外套,扮演一個大人。
邏輯表
數據庫代理中的表,它可以映射代理連接的數據庫中的表(物理表)
解讀:Mycat 里定義的表,在邏輯上存在,可以映射真實的 MySQL 數據庫的表。可以一對一,也可以一對多。
物理庫
數據庫代理連接的數據庫中的庫
物理表
數據庫代理連接的數據庫中的表
拆分鍵
即分片鍵,描述拆分邏輯表的數據規則的字段
物理分表
指已經進行數據拆分的,在數據庫上面的物理表,是分片表的一個分區
物理分庫
一般指包含多個物理分表的庫
分庫
一般指通過多個數據庫拆分分片表,每個數據庫一個物理分表,物理分庫名字相同
分片表,水平分片表
按照一定規則把數據拆分成多個分區的表,在分庫分表語境下,它屬于邏輯表的一種
單表
沒有分片,沒有數據冗余的表,
全局表,廣播表
每個數據庫實例都冗余全量數據的邏輯表. 它通過表數據冗余,使分片表的分區與該表的數據在同一個數據庫實例里,達到 join 運算能夠直接在該數據庫實例里執行.它的數據一致一般是通過數據庫代理分發 SQL 實現. 也有基于集群日志的實現
ER 表
狹義指父子表中的子表,它的分片鍵指向父表的分片鍵,而且兩表的分片算法相同
廣義指具有相同數據分布的一組表
原型庫
原型庫就是存儲數據的真實數據庫,配置數據源時必須指定原型庫