Mycat快速入門

1.Mycat介紹

Mycat 是一個開源的分布式數據庫系統,是一個實現了 MySQL 協議的的Server,前端用戶可以把它看作是一個數據庫代理,用 MySQL 客戶端工具和命令行訪問,而其后端可以用MySQL 原生(Native)協議與多個 MySQL 服務器通信,也可以用 JDBC 協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為 N 個小表,存儲在后端 MySQL 服務器里或者其他數據庫里。

2.Mycat基礎環境搭建

首先需要下載Mycat必需的一些環境:
jdk下載(1.7以上) –mycat是基于java開發的,需要java編譯環境
mysql
mycat


1) JDK 下載
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
注:必須 JDK7 或更高版本.
2) MySQL 下載
http://dev.mysql.com/downloads/mysql/5.5.html#downloads
注:MyCAT 支持多種數據庫接入,如:MySQL、SQLServer、Oracle、MongoDB 等,推薦使用
MySQL 做集群。
3) MyCAT 項目主頁
https://github.com/MyCATApache/
注:MyCAT 相關源碼、文檔都可以在此地址下進行下載

3.Mycat配置

為了快速跑起一個Mycat demo,我們先在本地數據庫里面建立test1和test2數據庫,創建一個名為opt的表,字段為id(int)及name(varchar)


Mycat的主要配置文件在其conf目錄下面,分別是server.xml、schema.xml和rule.xml,為快速啟動mycat,我們按照配置的順序和主要配置項說明。
1)server.xml
這里主要配置mycat的用戶和權限信息,這里的賬戶用于后面連接mycat使用。
快速入門可以簡單這樣配置:
schemas是后面schema.xml里面配置的DB,例如:我這里配置了一個用戶名為user,密碼為666666的賬戶,默認只能訪問test的DB


<user name="user">
<property name="password">666666</property>
<property name="schemas">test</property>
</user>

2)schema.xml
這里主要配置數據庫信息,一個schema就是一個邏輯庫,可以理解為Mycat管理的一個數據庫DB(實際上不存在,是一個虛擬的概念)name屬性和server.xml里面對應。
table是Mycat的邏輯表,這里我們配置一個名為opt的邏輯表
dataNode屬性是將其綁定在真實數據庫中的數據節點中,這里我們配置了兩個dataNode,分別是test1數據庫和test2數據庫,注意,這兩個數據庫的真實表名需和table的name一致
dataHost屬性就是我們熟悉的mysql連接,這里我們都用本地作為一臺服務器,也可以配置不同服務器上的不同mysql,這里還可以配置讀寫分離,我們先不考慮。
rule屬性就是分片規則,這里用的是名稱,需在下一步的rule.xml里面定義好

<schema name="test" checkSQLschema="false" sqlMaxLimit="100">
<!-- 分片表配置 -->
<table name="opt" dataNode="dn$1-2" rule="rule1" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="test1" />
<dataNode name="dn2" dataHost="localhost1" database="test2" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="localhost:3306" user="root"
password="666666" />
</dataHost>

3)rule.xml
這里我們主要配置的是分片規則,Mycat支持很多分片規則,我們使用的是一個較為簡單的取模規則,即根據columns標簽里面的id屬性來取模,count屬性定義為數據節點的個數。

    <tableRule name="rule1">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>
</function>

4.Mycat啟動

1)window啟動:
window上啟動mycat需要用cmd命令到mycat的bin目錄下面,執行startup_nowrap.bat命令成功即可
2)linux啟動:
同樣,到bin目錄下面,執行startup_nowrap.sh命令成功即可
當看到如下圖顯示的啟動成功標識說明mycat啟動成功
這里寫圖片描述
注:若出現錯誤,可在其logs目錄下面查看錯誤信息,一般為配置錯誤

5.Mycat使用

啟動mycat成功后,我們通過本地sql連接工具,如Navicat建立到mycat的鏈接,其默認端口是8066,如果連接成功,可通過命令行執行一條插入語句的sql,如
INSERT INTO opt(id,name) VALUES(1,”3434”)查看是否插入到指定分庫的表里面,若成功,說明Mycat可以正常使用
這里寫圖片描述
如圖所示:插入的數據分布到指定的庫里面
這里寫圖片描述

注:mycat的插入語句必須有分片規則的字段,否則無法判定是插入哪個數據庫。

6.Mycat更多細節

以上只是簡單介紹了如何快速啟動一個Mycat的demo,關于更詳細的配置信息及更為復雜的分片規則和sql,可以參考Mycat的官方介紹文檔
http://www.mycat.org.cn/document/Mycat_V1.6.0.pdf

2018-01-04更新

Tip:上面用Navicat連接的時候發現一個問題,新建連接的時候,填寫用戶名和密碼的時候,用戶名字上文中Server.xml中

<user name="user">

標簽的name屬性值即user,密碼是

<property name="password">666666</property>

這個標簽中的“666666”,其實一開始填寫錯誤了,將用戶名填寫成錯誤,會導致報 1045 "can’t Access...."的錯誤!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539686.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539686.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539686.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python字符串常量有什么區別_Python經典面試題:is與==的區別

is用于判斷兩個對象是否為同一個對象&#xff0c;具體來說是兩個對象在內存中的位置是否相同。python為了提高效率&#xff0c;節省內存&#xff0c;在實現上大量使用了緩沖池技術和字符串intern技術。整數和字符串是不可變對象&#xff0c;也就意味著可以用來共享&#xff0c;…

left join、right join、inner join的區別

left join(左聯接) 返回包括左表中的所有記錄和右表中聯結字段相等的記錄 right join(右聯接) 返回包括右表中的所有記錄和左表中聯結字段相等的記錄 inner join(等值連接) 只返回兩個表中聯結字段相等的行 舉例如下&#xff1a; ----------------------------------------…

Javascript Proxy對象 簡介

Javascript Proxy對象 簡介 本文轉載自&#xff1a;眾成翻譯 譯者&#xff1a;eJayYoung 鏈接&#xff1a;http://www.zcfy.cc/article/4755 原文&#xff1a;https://blog.campvanilla.com/advanced-guide-javascript-proxy-objects-introduction-301c0fce9432 Javascript …

App架構經驗總結

原文地址&#xff1a;http://www.iteye.com/news/31472-------------------------------------------------------------架構因人而異&#xff0c;不同的架構師大多會有不同的看法&#xff1b;架構也因項目而異&#xff0c;不同的項目需求不同&#xff0c;相應的架構也會不同。…

python數字排序 循環_【python-leetcode448-循環排序】找到所有數組中消失的數字

問題描述&#xff1a;給定一個范圍在 1 ≤ a[i] ≤ n ( n 數組大小 ) 的 整型數組&#xff0c;數組中的元素一些出現了兩次&#xff0c;另一些只出現一次。找到所有在 [1, n] 范圍之間沒有出現在數組中的數字。您能在不使用額外空間且時間復雜度為O(n)的情況下完成這個任務嗎…

saiku+kettle整合(六)olap操作

title: saikukettle整合&#xff08;六&#xff09;olap操作 tags: categories: saiku date: 2016-08-25 18:18:54 使用saiku可以對應使用相關olap操作 OLAP的基本操作 我們已經知道OLAP的操作是以查詢——也就是數據庫的SELECT操作為主&#xff0c;但是查詢可以很復雜&#xf…

攜程Docker實踐

原文地址&#xff1a;http://www.iteye.com/news/31468 請點擊原文閱讀 ---------------------以下是原文---------------------- 從去年底開始&#xff0c;攜程開始計劃把Docker引入到攜程的云平臺&#xff0c;這是系統研發部一部分的工作任務&#xff0c;攜程系統研…

mysql全文索引thinkphp_ThinkPHP5 使用迅搜 (XunSearch) 實現全文檢索實例指導

前期準備入坑了一天&#xff0c;折騰的無語&#xff0c;個人觀點&#xff1a;【文檔太差&#xff0c;適合學習思路&#xff0c;不建議入坑】背景最近在整理全文檢索解決方案注意到 xunsearch 的評價很高&#xff0c;在此記錄一番場景描述此處作為對 xunsearch 的初次使用&#…

為何有些程序員總是想要“干掉”產品經理?

好了&#xff0c;我準備去和產品經理做斗爭去了&#xff0c;請祝我好運吧&#xff01;小編花了大量時間收集了很多干貨編程學習資源&#xff0c;其中資源包括 算法&#xff0c;大數據&#xff0c;人工智能&#xff0c;Python&#xff0c;Android&#xff0c;iOS&#xff0c;Jav…

多個left join 產生多個結果

select a.*,to_char(To_date(20160403000000, yyyyMMddhh24miss),yyyy/mm/dd) as omc_start_time,to_char(To_date(20160404000000, yyyyMMddhh24miss),yyyy/mm/dd) as omc_end_time,ROUND(sc."切換成功率",2) AS "OMC-源小區切換成功率%",ROUND(sc."…

查看進程占用,并kill掉

今天發現8899端口被占&#xff0c;服務器啟動失敗&#xff0c;用了下面的命令解決。 [rootltesqm Toolbox]# netstat -tunlp |grep 8899 tcp 0 0 :::8899 :::* LISTEN 28279/java [rootltesqm Toolbox]…

Spark算子篇 --Spark算子之combineByKey詳解

一。概念 rdd.combineByKey(lambda x:"%d_" %x, lambda a,b:"%s%s" %(a,b), lambda a,b:"%s$%s" %(a,b))三個參數&#xff08;都是函數&#xff09;第一個參數&#xff1a;給定一個初始值&#xff0c;用函數生成初始值。第二個參數&#xff1a;c…

mysql proxy 主從_【MYSQL知識必知必會】MySQL主從復制讀寫分離(基于mysql-proxy實現)...

MySQL主從復制讀寫分離(基于mysql-proxy實現)http://mirror.bit.edu.cn/mysql/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz解壓tar zxvf mysql-proxy-0.8.4-linux-glibc2.3-x86-64bit.tar.gz創建mysql-proxy帳號并授權分別在主從數據庫中創建mys…

SecureCRT防止自動斷開

今天在寧波連接上海的linux庫&#xff0c;是外網訪問內網&#xff0c;使用了nat123這個軟件映射的。 發現SecureCRT連接后&#xff0c;過幾分鐘就自動斷開&#xff0c;導致使用SecureCRT做跳轉機的其他應用使用起來很不方便。 于是設置了下SecureCRT。

mysql 主主結構_高性能mysql主主架構

(3)配置參數說明server-id&#xff1a;ID值唯一的標識了復制群集中的主從服務器&#xff0c;因此它們必須各不相同。master_id必須為1到232–1之間的一個正整數值&#xff0c;slave_id值必須為2到232–1之間的一個正整數值。log-bin&#xff1a;表示打開binlog,打開該選項才可以…

解決ios編譯swift報錯pcm was built: mtime changed

問題 編譯ios工程失敗時&#xff0c;其中的幾個swift文件報以下錯 /Users/tomes/code/project/xxx.swift File /Users/tomes/Library/Developer/Xcode/DerivedData/Spec-dgyhrnmgvfkjkqbboklnfgrudqip/Build/Products/Debug-iphoneos/xxxx.framework/Headers/xxxx.h has been…

AI工程師職業規劃和學習路線完整版

AI工程師職業規劃和學習路線完整版 如何成為一名機器學習算法工程師 成為一名合格的開發工程師不是一件簡單的事情&#xff0c;需要掌握從開發到調試到優化等一系列能 力&#xff0c;這些能力中的每一項掌握起來都需要足夠的努力和經驗。而要成為一名合格的機器學習算法工程師&…

oracle 多個with as

主要看多個with的格式 [sql] view plaincopy WITH T3 AS ( SELECT T1.ID, T1.CODE1, T2.DESCRIPTION FROM TB_DATA T1, TB_CODE T2 WHERE T1.CODE1 T2.CODE ), T4 AS ( SELECT T1.ID, T1.CODE2, T2.DESCRIPTION FROM TB_DATA T1, TB_CODE T2 WHERE T1.C…

mysql主鍵 命中率_mysql主鍵問題

MySQL主鍵一. MySQL主鍵設計原則MySQL主鍵應當是對用戶沒有意義的。MySQL主鍵應該是單列的&#xff0c;以便提高連接和篩選操作的效率(當然復合主鍵是可以的&#xff0c;只是不建議)永遠也不要更新MySQL主鍵MySQL主鍵不應包含動態變化的數據&#xff0c;如時間戳、創建時間列、…

Centos7常用命令[掛載文件系統]

Centos7常用命令[掛載文件系統]------------------------------------------------------------------------------# 掛載一個叫做hda2的盤-確定目錄/mnt/hda2已經存在[rootlocalhost ~]# mount /dev/hda2 /mnt/hda2# 卸載一個叫做hda2的盤-先從掛載點/mnt/hda2退出[rootlocalh…