mycat分庫分表

2021-08-17 04:17:49 字數 2347 閱讀 2395

一:修改schema.xml
<?xml version="1.0"?>			

select user()

二:修改server.xml
<?xml version="1.0" encoding="utf-8"?>

0 0

10

011m

1k0 384m

true

123456

testdb

user

testdb

true

三:啟動關閉
1:進入bin目錄,

2:啟動輸入./mycat start。關閉命令:./mycat stop

3:當出現

四:操作mycat

1:一般都是專案直接連線mycat,然後mycat連線資料庫,在liunx下測試則執行命令:

mysql -uroot -p123456 -h127.0.0.1 -p8066 -dtestdb

該命令主要指定了連線mycat的埠以及mycat中具體的mycat邏輯庫,輸入該命令後,

則可以像執行普通sql一樣執行語句。

五:mycat中使用出現的問題及解決

1:使用mycat後mysql主鍵不能自增。

解決方案:建立一張全域性序列表,建立設定序列的函式和獲取序列的函式,然後在自己的**中獲取當前序列值並填充到即將執行的insert語句中,關於序列的建立後面會講

2:不能使用group by。

解決方案:首先考慮該錶是否非要分割,若非要分割則在專案中整合spring的動態資料來源,分為兩個資料來源,1個是連線mycat的,第二個是直接連線mysql的,若需要跨庫統計則切換資料庫源直接使用mysql進行操作,關於mycat的統計樓主也不是很了解,希望有更好的方案可以告知。

六:建立mysql的序列

1:建立序列表,該錶設定了3個屬性:seq_name:序列名稱,current_val:當前序列值,increment_val:序列增加步長

drop table if exists `sequence`;

create table `sequence` (

`seq_name` varchar(50) not null,

`current_val` int(11) not null,

`increment_val` int(11) not null default '1',

primary key (`seq_name`)

) engine=innodb default charset=latin1;

2:當前序列函式

create function currval(v_seq_name varchar(50))   

returns integer

begin

declare value integer;

set value = 0;

select current_val into value from sequence where seq_name = v_seq_name;

return value;

end;

3:查詢下乙個序列函式

create function nextval (v_seq_name varchar(50))

returns integer

begin

update sequence set current_val = current_val + increment_val where seq_name = v_seq_name;

return currval(v_seq_name);

end;

4:初始化sequence

描述:sequence序列表中,可以存放多個序列(為其他業務表指定),在使用nextval("***")和currval("***")時,裡面的引數對應sequence表的name欄位的值,每使用一次,序列表中對應名稱的序列的當前值則增加對應設定的步長

Mycat分庫分表

schema.xml 配置 name dn1 datahost localhost1 database db1 name dn2 datahost localhost1 database db2 name dn3 datahost localhost1 database db3 把localhost...

mycat分庫分表

mycat是資料庫分庫分表的中介軟體,mycat使用最多的兩個功能是 讀寫分離和分庫分表功能,支援全域性表和e r關係 這兩個比較實用 mycat相當於是乙個 可以將多個實際資料庫組合成乙個完整的虛擬資料庫 我們可以直接訪問mycat的埠,其使用的是mysql原生的協議連線資料庫進行通訊 mycat...

mycat 分庫分表

記錄一下,方便檢視 1.分庫分表解決方案 應用層 jar包 噹噹 sharding jdbc 阿里 tddl 2.拆分原則 2.1能不拆分盡量不拆分 2.2如果要拆分一定要選擇合適的拆分規則,提前規劃好 2.3資料拆分盡量通過資料冗餘或表分組來降低跨庫join的可能 2.4跨庫join是共同難題,所...