Mysql+Mycat實現數據庫主從同步與讀寫分離

Mysql+Mycat實現數據庫主從同步與讀寫分離前端

收錄於話題
#MySQL從入門到放棄
26個

此文章源於
淺談MySQL集羣高可用架構
對文章中的架構擴展介紹,以前寫過一篇關於MHA的文章
MySQL集羣高可用架構之MHAjava

Mycat介紹
官網: http://mycat.io/
電子書: http://mycat.io/document/Mycat_V1.6.0.pdf
書: http://blog.csdn.net/wind520/article/details/53213691
MyCAT採用Java開發,實現MySQL公開的二進制協議,將本身假裝成MySQL Server;應用只需鏈接MyCAT 執行SQL,MyCAT按照配置的策略,分發SQL至相應的MySQL節點。
什麼是MYCATmysql

  • 一個完全開源的,面向企業應用開發的大數據庫集羣
  • 支持事務、ACID、能夠替代MySQL的增強版數據庫
  • 一個能夠視爲MySQL集羣的企業級數據庫,用來替代昂貴的Oracle集羣
  • 一個融合內存緩存技術、NoSQL技術、HDFS大數據的新型SQL Server
  • 結合傳統數據庫和新型分佈式數據倉庫的新一代企業級數據庫產品
  • 一個新穎的數據庫中間件產品

Mycat總體架構圖
Mysql+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主從同步
這個配置這裏就再也不贅述了,可參考前面的文章
Linux系統MySQL數據庫主從同步實戰過程
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離github

安裝Mycat服務
生產環境最好單獨使用服務器進行安裝,測試環境安裝在主庫上
須要安裝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)
Mysql+Mycat實現數據庫主從同步與讀寫分離
安裝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/profileweb

配置Mycat服務
Mysql+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>
Mysql+Mycat實現數據庫主從同步與讀寫分離
配置schema.xml文件
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離
主從服務器上配置讀寫的用戶user並給以相應的權限面試

啓動服務
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離
登錄管理管理端口,查看是否有默認的邏輯數據庫
Mysql+Mycat實現數據庫主從同步與讀寫分離
查看數據讀寫入口
Mysql+Mycat實現數據庫主從同步與讀寫分離
從上面能夠看出數據寫入與讀取的入口在哪一個庫上spring

測試Mycat讀寫分離功能

接下來測試經過mycat來進行對主從數據庫的讀寫操做
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離
上面的數據是從邏輯數據庫插入與查詢的,接下來分別從主從庫查看數據是否寫入成功
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離
再次查看數據源的入口狀況
Mysql+Mycat實現數據庫主從同步與讀寫分離sql

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)
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離
Mysql+Mycat實現數據庫主從同步與讀寫分離

推薦閱讀精心整理|公衆號文章目錄大全Docker容器技術入門(一)Docker容器技術入門(二)進程管理工具Supervisor(送書活動)精心整理|清空網盤、抓緊上車「金三銀四」的折騰之聊一聊面試或許這些你會感興趣??民工哥 「有問必答」 專欄開通,歡迎來撩

相關文章
相關標籤/搜索