官網鏈結
在db02和db03中分別建立item表,sql指令碼如下
create
database db02;
create
table item (
id int
notnull auto_increment,
value
intnot
null
default
0,
indate datetime not
null
default
'0000-00-00 00:00:00',
primary
key (id)
)auto_increment= 1 engine=innodb default charset=utf8;
create
database db03;
create
table item (
id int
notnull auto_increment,
value
intnot
null
default
0,
indate datetime not
null
default
'0000-00-00 00:00:00',
primary
key (id)
)auto_increment= 1 engine=innodb default charset=utf8;
然後在conf目錄下編輯service.xml,rule.xml,schema.xml三個檔案。
service.xml主要配置mycat服務的引數,比如埠號,myact使用者名稱和密碼使用的邏輯資料庫等
role.xml主要配置路由策略,主要有分片的片鍵,拆分的策略(取模還是按區間劃分等)
schema.xml檔案主要配置資料庫的資訊,例如邏輯資料庫名稱,物理上真實的資料來源以及表和資料來源之間的對應關係和路由策略等。
配置如下所示:
server.xml
<?xml version="1.0" encoding="utf-8"?>
xmlns:mycat="">
name="defaultsqlparser">druidparserproperty>
name="mutinodelimittype">1property>
name="serverport">8066property>
name="managerport">9066property>
system>
name="test">
name="password">testproperty>
name="schemas">testdbproperty>
user>
name="user">
name="password">userproperty>
name="schemas">testdbproperty>
name="readonly">trueproperty>
user>
mycat:server>
<?xml version="1.0" encoding="utf-8"?>
xmlns:mycat="">
name="role1">
idcolumns>
mod-longalgorithm>
rule>
tablerule>
name="mod-long"
class="io.mycat.route.function.partitionbymod">
name="count">2property>
function>
mycat:rule>
<?xml version="1.0"?>
xmlns:mycat="">
name="testdb"
checksqlschema="false"
sqlmaxlimit="100">
name="users"
primarykey="id"
datanode="node_db01" />
name="item"
primarykey="id"
datanode="node_db02,node_db03"
rule="role1" />
schema>
name="node_db01"
datahost="datahost01"
database="db01" />
name="node_db02"
datahost="datahost01"
database="db02" />
name="node_db03"
datahost="datahost01"
database="db03" />
name="datahost01"
maxcon="1000"
mincon="10"
balance="0"
writetype="0"
dbtype="mysql"
dbdriver="native">
select user()heartbeat>
host="server1"
url="127.0.0.1:3306"
user="root"
password="123456"/>
datahost>
mycat:schema>
mysql -utest -ptest -h127.0.0.1 -p8066 -dtestdb
insert
into users(name,indate) values('kk',now());
insert
into users(name,indate) values('ss',now());
insert
into item(id,value,indate) values(1,100,now());
insert
into item(id,value,indate) values(2,100,now());1. mysql 高可用:mysql+mycat實現資料庫分片(分庫分表)
mycat入門教程
mycat就是乙個資料庫中介軟體,資料庫的 它遮蔽了物理資料庫,應用連線mycat,然後mycat再連線物理資料庫 它支援水平拆分 分庫分表,通過分庫達到分表 支援多種分片規則,比如範圍切片 自然月分片 hash取模分片等 它支援mysql oracle mongodb sql server,並且支...
Mycat入門教程
官網鏈結 mysql 必須是5.5及其以上。users只在db01中儲存。item表被分割到db02和db03中儲存。create database db01 create table users id int notnull auto increment,name varchar 50 not n...
Mycat入門教程
官網鏈結 在db02和db03中分別建立item表,sql指令碼如下 create database db02 create table item id int not null auto increment,value int not null default 0,indate datetime ...