Docker版:Mysql分庫分表MyCat實戰


SpringCloudAlibaba實戰教程系列  

docker:官網    中文官網

docker:鏡像官網

MyCat官網

一、MyCat簡單認識。MyCat來世今生介紹與配置

  認識MyCat之前怎么先來認識下,Cober是由阿里巴巴開源的mysql分布式處理中間件,可以在分布式的環境下像傳統數據庫一樣提供海量的數據服務。而MyCat的前身是阿里的cober,Mycat使用 NIO 重構了網絡模塊,並且優化了 Buffer內核,增強了聚合,Join 等基本特性,同時MyCat兼容絕大多數數據庫成為通用的數據庫中間件。

  Mycat 是一個強大的數據庫中間件,不僅僅可以用作讀寫分離、以及分表分庫、容災備份,而且可以用於多 租戶應用開發、雲平台基礎設施、讓你的架構具備很強的適應性和靈活性,借助於即將發布的 Mycat 智能優化模塊,系統的數據訪問瓶頸和熱點一目了然,根據這些統計分析數據,你可以自動或手工調整后端存儲,將不同的 表映射到不同存儲引擎上,而整個應用的代碼一行也不用改變。

  當前是個大數據的時代,但究竟怎樣規模的數據適合數據庫系統呢?對此,國外有一個數據庫領域的權威人 士說了一個結論:千億以下的數據規模仍然是數據庫領域的專長,而 Hadoop 等這種系統,更適合的是千億以上 的規模。所以,Mycat 適合 1000 億條以下的單表規模,如果你的數據超過了這個規模,請投靠 Mycat Plus 吧!

  Mycat 的原理中最重要的一個動詞是“攔截”,它攔截了用戶發送過來的 SQL 語句,首先對 SQL 語句做了 一些特定的分析:如分片分析、路由分析、讀寫分離分析、緩存分析等,然后將此 SQL 發往后端的真實數據庫, 並將返回的結果做適當的處理,最終再返回給用戶。官方例子如下:

 

Mycat 目前適用的場景已經很豐富,而且不斷有新用戶給出新的創新性的方案,以下是幾個典型的應用場景: 

  • 單純的讀寫分離,此時配置最為簡單,支持讀寫分離,主從切換;

  • 分表分庫,對於超過 1000 萬的表進行分片,最大支持 1000 億的單表分片;

  • 多租戶應用,每個應用一個庫,但應用程序只連接 Mycat,從而不改造程序本身,實現多租戶化;

  • 報表系統,借助於 Mycat 的分表能力,處理大規模報表的統計;

  • 替代 Hbase,分析大數據;

  • 作為海量數據實時查詢的一種簡單有效方案,比如 100 億條頻繁查詢的記錄需要在 3 秒內查詢出來結果, 除了基於主鍵的查詢,還可能存在范圍查詢或其他屬性查詢,此時 Mycat 可能是最簡單有效的選擇。

二、MyCat安裝使用

1、創建本地到MyCat的映射文件夾

 mkdir -p /root/mycat/logs /root/mycat/conf

2、下載MyCat的源文件包,最新下載地址 、github下載地址

wget  http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
mv Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz  mycat.tar.gz

wegt如果出現wget: unable to resolve host address ‘dl.mycat.io’異常,可以選擇修改/etc/hosts文件,添加 dl.mycat.io   210.51.26.184配置

3、解壓縮、並復制配置本地conf中的文件

tar -zxvf mycat.tar.gz
cp -r mycat/conf/* /root/mycat/conf/

重點關注三個配置文件:

 schema.xml :定義邏輯庫、表、分片節點等配置。

   rule.xml :定義分片規則,水平拆分的規則都在這里定義。

  server.xml :定義用戶以及系統相關變量,例如端口、用戶登錄賬號密碼、用戶權限等。如下圖:

編輯server.xml,schema.xml等配置文件參考:mycat官方github地址 

4、在當前目錄創建Dockerfile文件

touch Dockerfile
vim Dockerfile 

在Dockerfile文件中插入如下文件

#基於opjdk8創建鏡像,可自行替換centos等
FROM openjdk:8
ADD mycat.tar.gz /usr/local/
VOLUME /usr/local/mycat/conf
ENV MYCAT_HOME=/usr/local/mycat
EXPOSE 8066 9066
CMD ["/usr/local/mycat/bin/mycat", "console","&"]

### 說明 ###
#將mycat解壓到/usr/local目錄中,得到 /usr/local/mycat
#將mycat的配置文件的地址暴露出映射地址,啟動時直接映射宿主機的文件夾
#設置MYCAT_HOME
#暴露出MyCat的所需端口
#以前台進程的方式啟動MyCat服務

5、構建鏡像並啟動 

docker build -t mycat-1.6 .

 6、運行啟動容器

docker run --name mycat -p 8066:8066 -p 9066:9066 -v /root/mycat/conf:/usr/local/mycat/conf -v /root/mycat/logs:/usr/local/mycat/logs -d mycat-1.6

 7、驗證:

登錄mycat 容器根據配置的用戶名密碼進行登錄使用,進行操作數據庫查看logs操作日志即可。

mysql -uroot -p123456 -h172.17.0.5 -P8066

 

 

 

Docker(部署常見應用):Docker安裝MySql完整教程、實操 

Docker版:Mysql分庫分表MyCat實戰  

Docker實現Mysql主從復制實戰(一主一從、雙主雙從)  

mysql 5.8以上版本有問題可以參考:

mysql-管理命令【創建用戶、授權、修改密碼、刪除用戶和授權、忘記root密碼】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM