Mycat安装与配置
關鍵特性
- 支持SQL92標準
- 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法
- 遵守Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
- 基于心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集群。
- 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
- 基于Nio實現,有效管理線程,解決高并發問題。
- 支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數,支持跨庫分頁。
- 支持單庫內部任意join,支持跨庫2表join,甚至基于caltlet的多表join。
- 支持通過全局表,ER關系的分片策略,實現了高效的多表join查詢。
- 支持多租戶方案。
- 支持分布式事務(弱xa)。
- 支持XA分布式事務(1.6.5)。
- 支持全局序列號,解決分布式下的主鍵生成問題。
- 分片規則豐富,插件化開發,易于擴展。
- 強大的web,命令行監控。
- 支持前端作為MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
- 支持密碼加密
- 支持服務降級
- 支持IP白名單
- 支持SQL黑名單、sql注入攻擊攔截
- 支持prepare預編譯指令(1.6)
- 支持非堆內存(Direct Memory)聚合計算(1.6)
- 支持PostgreSQL的native協議(1.6)
- 支持mysql和oracle存儲過程,out參數、多結果集返回(1.6)
- 支持zookeeper協調主從切換、zk序列、配置zk化(1.6)
- 支持庫內分表(1.6)
- 集群基于ZooKeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)。
什么是MYCAT
- 一個徹底開源的,面向企業應用開發的大數據庫集群
- 支持事務、ACID、可以替代MySQL的加強版數據庫
- 一個可以視為MySQL集群的企業級數據庫,用來替代昂貴的Oracle集群
- 一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
- 結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品
- 一個新穎的數據庫中間件產品
一、安裝
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
二、配置
(1)替換server.xml,schema.xml,rule.xml
server.xml:為mycat服務配置,主要為配置mycat的連接數據庫用戶名、密碼、端口等相關信息;
schema.xml:主要配置分庫分表相關節點信息;
rule.xml:主要配置是分庫字段規則。
(2)啟動
進入/mycat/mycat/bin文件夾中
./mycat start #啟動
./mycat stop #停止
./mycat restart #重新啟動
開放3310(連接)與3311(管理端)端口
/sbin/iptables -I INPUT -p tcp --dport 3310? -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 3311? -j ACCEPT
(3)設置環境變量,供后續維護方便。
在/etc/profile增加相應內容
vim? /etc/profile
export MYCAT_HOME=/mycat/mycat/
export PATH=$PATH:$MYCAT_HOME/bin ?
編輯后source? /etc/profile生效。
mysql -uXXX-h192.168.XXX.XXX -pXXXXXX-P3310
(4)驗證:本地使用客戶端能正常連接到Mycat。
- 全局序列號
Mycat提供多種方式:本地文件方式、數據庫方式、本地時間戳方式等;根據目前現有的業務邏輯與改動量,決定使用數據庫方式。主要操作流程:
DROP FUNCTION IF EXISTS mycat_seq_currval;
CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50)) RETURNS varchar(64)
BEGIN
?? DECLARE? retval? VARCHAR(64);
?? SET? retval ='-999999999,null';
?? SELECT concat(CAST(current_value AS CHAR),',',CAST(increment AS CHAR)) INTO? retval?
?? FROM sequence
?? WHERE name = seq_name;
?? RETURN? retval ;
END;
DROP FUNCTION IF EXISTS mycat_seq_setval;
CREATE FUNCTION mycat_seq_setval(seq_name VARCHAR(50),value INTEGER) RETURNS varchar(64)
BEGIN
?? UPDATE sequence
?? SET current_value = value
?? WHERE name = seq_name;
?? RETURN mycat_seq_currval(seq_name);
END;
DROP FUNCTION IF EXISTS mycat_seq_nextval;
CREATE FUNCTION mycat_seq_nextval(seq_name VARCHAR(50)) RETURNS varchar(64)
BEGIN
?? UPDATE sequence
?? SET current_value = current_value + increment
?? WHERE name = seq_name;
?? RETURN mycat_seq_currval(seq_name);
END
<!--sequence-->
?? <dataNode name="seqDn" dataHost="localhostSeq" database="sequencedb" />
?? <dataHost name="localhostSeq" maxCon="1000" minCon="10" balance="0"
?? ??????? ??????? ??????? writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
??????? <heartbeat>select user();</heartbeat>
??????? <writeHost host="hostM1" url="192.168.XX.XX:3306" user="XXX" password="XXXX">?
??????? </writeHost>
??? </dataHost>
LOCALSERIAL=seqDn
...
注:配置文件中的序列名建議為大寫。
使用序列方式:next value for MYCATSEQ_XXX(XXX為sequence表中的序列名)。
總結
以上是生活随笔為你收集整理的Mycat安装与配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: minio安装(包括docker安装)
- 下一篇: 开始使用Jenkins