此文章源於
淺談MySQL集羣高可用架構
對文章中的架構擴展介紹,以前寫過一篇關於MHA的文章
MySQL集羣高可用架構之MHA
Mycat介紹前端
官網: http://mycat.io/
電子書: http://mycat.io/document/Mycat_V1.6.0.pdf
書: http://blog.csdn.net/wind520/...java
MyCAT採用Java開發,實現MySQL公開的二進制協議,將本身假裝成MySQL Server;應用只需鏈接MyCAT 執行SQL,MyCAT按照配置的策略,分發SQL至相應的MySQL節點。mysql
- 一個完全開源的,面向企業應用開發的大數據庫集羣
- 支持事務、ACID、能夠替代MySQL的增強版數據庫
- 一個能夠視爲MySQL集羣的企業級數據庫,用來替代昂貴的Oracle集羣
- 一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
- 結合傳統數據庫和新型分佈式數據倉庫的新一代企業級數據庫產品
- 一個新穎的數據庫中間件產品
Mycat總體架構圖linux
Mycat特色介紹git
- 支持SQL92標準
- 支持MySQL、Oracle、DB二、SQL Server、PostgreSQL等DB的常見SQL語法
- 遵照Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
- 基於心跳的自動故障切換,讀寫分離,MySQL主從,以及galera cluster集羣。
- 支持Galera for MySQL集羣,Percona Cluster或者MariaDB cluster
- 基於Nio實現,有效管理線程,解決高併發問題。
- 支持數據的多片自動路由與聚合,sum,count,max等經常使用的聚合函數,跨庫分頁。
- 支持全局序列號,解決分佈式下的主鍵生成問題。
- 分片規則豐富,插件化開發,易於擴展。
- 強大的web,命令行監控。
- 支持前端做爲MySQL通用代理,後端JDBC方式支持Oracle、DB二、SQL Server 、 mongodb 、巨杉。
- 集羣基於ZooKeeper管理,在線升級,擴容,智能優化,大數據處理(2.0開發版)。
MySQL主從同步github
這個配置這裏就再也不贅述了,可參考前面的文章web
Linux系統MySQL數據庫主從同步實戰過程spring
安裝Mycat服務sql
生產環境最好單獨使用服務器進行安裝,測試環境安裝在主庫上mongodb
須要安裝JAVA環境
[root@mysql-m ~]# java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
安裝Mycat服務
[root@mysql-m local]# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz [root@mysql-m local]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz [root@mysql-m local]# cd mycat/ [root@mysql-m mycat]# ll total 24 drwxr-xr-x 2 root root 4096 Sep 23 19:13 bin drwxrwxrwx 2 root root 4096 Mar 1 2016 catlet drwxrwxrwx 4 root root 4096 Sep 23 19:13 conf drwxr-xr-x 2 root root 4096 Sep 23 19:13 lib drwxrwxrwx 2 root root 4096 Oct 28 2016 logs -rwxrwxrwx 1 root root 217 Oct 28 2016 version.txt [root@mysql-m mycat]# cat >>/etc/profile<<EOF > export MYCAT_HOME=/usr/local/mycat > export PATH=$PATH:$MYCAT_HOME/bin > EOF [root@mysql-m mycat]# source /etc/profile
配置Mycat服務
如下四項取消註釋,修改以下
<!--默認是65535 64K用於sql解析時最大文本長度-->
<property name="maxStringLiteralLength">65535</property> <property name="sequnceHandlerType">0</property> <property name="backSocketNoDelay">1</property> <property name="frontSocketNoDelay">1</property> <property name="processorExecutor">1</property>
配置schema.xml文件
主從服務器上配置讀寫的用戶user並給以相應的權限
啓動服務
登錄管理管理端口,查看是否有默認的邏輯數據庫
查看數據讀寫入口
從上面能夠看出數據寫入與讀取的入口在哪一個庫上
測試Mycat讀寫分離功能
接下來測試經過mycat來進行對主從數據庫的讀寫操做
上面的數據是從邏輯數據庫插入與查詢的,接下來分別從主從庫查看數據是否寫入成功
再次查看數據源的入口狀況
Mycat性能監控
- 支持對Mycat、Mysql性能監控
- 支持對Mycat的JVM內存提供監控服務
- 支持對線程的監控
- 支持對操做系統的CPU、內存、磁盤、網絡的監控
下載WEB管理端軟件
wget https://github.com/MyCATApache/Mycat-download/blob/master/mycat-web-1.0/Mycat-web-1.0-SNAPSHOT-20160617163048-linux.tar.gz
須要安裝zookeeper
[root@mysql-m local]# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz [root@mysql-m local]# tar zxf zookeeper-3.4.6.tar.gz [root@mysql-m local]# ln -s zookeeper-3.4.6 zookeeper [root@mysql-m conf]# cp zoo_sample.cfg zoo.cfg [root@mysql-m bin]# ./zkServer.sh start JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@mysql-m ~]# lsof -i :2181 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 3639 root 25u IPv6 19337 0t0 TCP *:eforward (LISTEN)
安裝WEB管理端
[root@mysql-m bin]# cd /usr/local/ [root@mysql-m local]# tar zxf Mycat-web-1.0-SNAPSHOT-20160617163048-linux.tar.gz [root@mysql-m local]# cd mycat-web/mycat-web/WEB-INF/classes/ [root@mysql-m classes]# ll total 28 drwxr-xr-x 3 root root 4096 Jun 17 2016 com -rw-r--r-- 1 root root 367 Jun 17 2016 jdbc.properties -rw-r--r-- 1 root root 4068 Jun 17 2016 log4j2.xml drwxr-xr-x 3 root root 4096 Jun 17 2016 mybatis -rw-r--r-- 1 root root 411 Jun 17 2016 mycat.properties drwxr-xr-x 3 root root 4096 Jun 17 2016 org drwxr-xr-x 2 root root 4096 Sep 26 00:21 spring [root@mysql-m classes]# vim mycat.properties # #Mon Jan 16 15:37:36 CST 2012 show.period=3000000 zookeeper=10.0.0.11:2181 [root@mysql-m mycat-web]# /usr/local/mycat-web/start.sh & [1] 3684 [root@mysql-m mycat-web]# nohup: ignoring input and appending output to `nohup.out' [root@mysql-m mycat-web]# lsof -i :8082 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 3685 root 122u IPv6 20997 0t0 TCP *:us-cli (LISTEN)
今天的分享就到這了,若是你以爲文章還不錯,對你有所幫助與借鑑,請點贊與轉發分享支持一下,你的支持民工哥最大的動力!!