1. 程式人生 > >mycat簡單安裝和配置

mycat簡單安裝和配置

前言

說明

最近從同事那邊瞭解到一些資料庫主從讀寫分離,分片的工具。叫mycat。然後就寫下這篇入門部落格簡單的說一下和mycat有關的內容吧。

準備

mysql5.7。安裝2個,做好主從配置。如果不會可以參照我之前的文章docker安裝mysql以及主從配置
mycat下載。從mycat官網,上面有本mycat權威指南挺好用的

1.mycat的簡短介紹

我使用mycat的原因是它對於程式碼的沒有侵入,相比大家也都看過java的一些主從分離和分片的方案,就是配置多資料來源,到用到主庫的時候,就呼叫主庫的連線。需要用到從庫的時候,就呼叫從庫的連線。
但是使用mycat之後,他相當於給資料庫外面再做一層。你每次呼叫sql語句,等於先到mycat中,mycat再分發到需要操作的資料庫中。
例如,一個表根據id分成了10個表。但是實際上在程式設計師看來,需要寫的程式碼並不需要變化。還是操作一個表。只不過是配置好的mycat的邏輯表,它會給你分發到對應物理表中。

2.mycat的配置說明

mycat的主要配置其實就在於3(或者說4)個檔案的配置
分別是:
server.xml
說明:mycat最基本的配置,配置連線的資料庫和使用者
schema.xml
說明:mycat中邏輯表的具體配置
rule.xml
說明:
mycat中邏輯表需要分片的分片規則的配置檔案
以及一個具體的分片規則txt檔案。我這邊命名為chen.txt

3.表格建立

注意開啟主從後這些操作只要在主庫進行就可以,從庫會自動同步
創一張不需要分片的資料庫test,然後創一張表做例子

CREATE TABLE `test`.`test1`( `id`
INT UNSIGNED NOT NULL AUTO_INCREMENT, `name` VARCHAR(20), PRIMARY KEY (`id`) );

然後建立需要分片的表的資料庫,建立10個數據庫,分別是db1-db10。做分片表的資料庫位置。

4.server.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system
>
<property name="defaultSqlParser">druidparser</property> <!--需要配置的埠號--> <property name="serverPort">8066</property> </system> <user name="master"> <!--name就是登入名,password就是密碼,schemas就是對應的schema.xml裡面的邏輯庫,就是schemal標籤裡面的name,注意這個name要和資料庫中的庫名相同,readOnly就是開啟只讀--> <property name="password">mycat</property> <property name="schemas">test</property> </user> <user name="read"> <property name="password">mycat</property> <property name="schemas">test</property> <property name="readOnly">true</property> </user> </mycat:server>

5.schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
        <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="test">
        <!--不需要分片的表直接用test處理-->
        <!--注意,name要和邏輯庫中的名字相同,dadaNode對應配置,schema name就是service配置檔案中需要對應的使用者所操作的資料庫-->
        <!--需要分片的表的配置-->
            <table name="test2" dataNode="dn$1-10" rule="chen" />
        </schema>
        <dataNode name="test" dataHost="dh1" database="test"></dataNode>
        <!--需要配置需要分片的表-->
        <dataNode name="dn1" dataHost="dh1" database="db1" />
        <dataNode name="dn2" dataHost="dh1" database="db2" />
        <dataNode name="dn3" dataHost="dh1" database="db3" />
        <dataNode name="dn4" dataHost="dh1" database="db4" />
        <dataNode name="dn5" dataHost="dh1" database="db5" />
        <dataNode name="dn6" dataHost="dh1" database="db6" />
        <dataNode name="dn7" dataHost="dh1" database="db7" />
        <dataNode name="dn8" dataHost="dh1" database="db8" />
        <dataNode name="dn9" dataHost="dh1" database="db9" />
        <dataNode name="dn10" dataHost="dh1" database="db10" />
        <!--dataHost就是具體要連線的資料庫的,dataBase就是具體的資料庫名-->
        <dataHost name="dh1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!--用於驗證心跳,這個是mysql主庫的配置-->
                <writeHost host="hostM1" url="ip:3306" user="root" password="password">
                <!--具體物理庫mysql從庫的配置-->
                <readHost host="hostS1" url="ip:3307" user="root" password="password">
                </readHost>
                </writeHost>
        </dataHost>
</mycat:schema>

6.rule.xml

新增

    <tableRule name="chen">
        <rule>
            <columns>id</columns>
            <algorithm>chen-test</algorithm>
        </rule>
    </tableRule>
    <!--schema.xml中配置的rule="chen"所對應的規則,規則對應主鍵,列名為id-->
    <function name="chen-test"
        class="io.mycat.route.function.AutoPartitionByLong">
        <property name="mapFile">chen.txt</property>
        <!--在conf中需要新增的txt規則檔案-->
    </function>

7.chen.txt

0-10=0
10-20=1
20-30=2
30-40=3
40-50=4
50-60=5
60-70=6
70-80=7
80-90=8
90-100=9

表示主鍵id為0-10的在db1,11-20的在表bd2操作

8.開啟服務

win系統,開啟bin/startup_nowrap.bat這個檔案,提示mycat server startup successfully。
表示啟動成功

9.連線mycat,測試資料庫操作

開啟資料庫工具,我用的是sqlyog,配置是locathost/mycat/mycat/8066
然後就可以看到之前建立好的test庫中的test表了,然後對test進行相應操作就可以
然後我們需要建立需要分片的表

CREATE TABLE `test2` ( `id` BIGINT(20) NOT NULL, `name` VARCHAR(100) DEFAULT NULL, `date` DATE DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4; 
INSERT INTO test2 (`id`, `name`, `date`) VALUES ('10', '2', '2018-05-28')#插入測試資料
SELECT * FROM test2

建立test2表的時候可以看到,db1-10中,都建立了表test2
然後通過sqlyog連線實際的資料庫,發現如果插入對應的資料的時候,1-10會被mycat插入到db1中,11-20會被插入到db2中,以此類推
其次就是查詢。mycat會自動把分片表中的資料整合在一起顯示出來。這樣mycat的配置就算完畢了。
然後在讀寫分離這邊。可以試著關閉主庫,進行讀操作(select),發現操作都去了從庫。關閉從庫,進行寫操作(delete,update,inser),發現操作都去了主庫。

關於mycat-eye

只需要配置安裝好一個zookeeper,已經在網頁中對資料庫做好相應的連線配置即可。非常簡單,就不多敘述了。

相關推薦

mycat簡單安裝配置

前言 說明 最近從同事那邊瞭解到一些資料庫主從讀寫分離,分片的工具。叫mycat。然後就寫下這篇入門部落格簡單的說一下和mycat有關的內容吧。 準備 mysql5.7。安裝2個,做好主從配置。如果不會可以參照我之前的文章docker安裝mysq

nginxmycat在Windows系統中的安裝配置

nginx在Windows上的搭建 1.解壓Windows安裝包到D:\program files(x86) 2.配置檔案     開啟nginx安裝目錄找到conf資料夾,開啟nginx.conf     配置訪問節點      upstream tomcat1

Ubuntu18.04安裝配置Django,並實現簡單示例

oct ati 文件 djang set tle 問題 不能 all 一、前言(系統,django介紹,window、mac、linux簡單區別)   Django是python開發過程最重要的web框架。因為在看的Django教學視頻是在mac下安裝的,我自己用的是Lin

ubuntu16.04下anaconda3的安裝配置,jupyter notebook的簡單使用

ubuntu16.04下anaconda3+pycharm的安裝和配置 1,anaconda3的安裝 linux可以下載這個版本 下載完後會出現一個名為Anaconda3-5.2.0-Linux-x86_64.sh的一個指令碼檔案 輸入命令 bash  Ana

Mycat安裝配置檔案

Mycat安裝需要JDK;    官網下載然後解壓:http://www.mycat.io/   (備註Mycat庫:http://dl.mycat.io/)    啟動和關閉Mycat命令:        在bin目錄下輸入命令:  ./mycat start 和 ./my

mysql 5.7.20下載、安裝配置方法及簡單操作技巧(解壓版免安裝)

安裝: 將下載的mysql壓縮包解壓後的整個目錄放在指定目錄 配置: 新建一個ini檔案,並命名為my.ini,放置到mysql安裝目錄中。檔案內容是: [mysql] # 設定mysql客戶端預設字符集 default-characte

mysql安裝配置,操作簡單

檢查系統中是否安裝了 Microsoft Visual C++ 2013 Redistributable的x64和x86, 如果沒有請安裝 如果上面檢查通過,正式開始安裝: 執行安裝包

CloudStack+XenServer詳細部署方案 CloudStack管理節點的安裝配置

cloudstack+xenserver詳細部署方案 cloudstack管理節點的安裝和配置CloudStack+XenServer詳細部署方案 CloudStack管理節點的安裝和配置本文將根據設計文檔, 安裝和配置CloudStack管理節點。本文只對配置流程和結果進行舉例說明, 具體 細節和配置操作請

centos7 mysql數據庫安裝配置

web 大小 images etc 安裝mysql 安裝 commands 0 rows type 一、系統環境 yum update升級以後的系統版本為 [[email protected]/* */ yl]# cat /etc/redhat-relea

redis學習教程一《Redis的安裝配置

遠程服務 name 工具 列表 端口號 裏的 redis服務器 映射 tin redis學習教程一《Redis的安裝和配置》 Redis的優點 以下是Redis的一些優點。 異常快 - Redis非常快,每秒可執行大約110000次的設置(SET)操作,每秒大約可執

linux下jdk的安裝配置

rac -s watermark img 使用 etc 文件拷貝 安裝 com 一、首先依據自己的系統位數在網上下載對應的jdk安裝包 下載地址例如以下:http://www.oracle.com/technetwork/java/javase/downloads/jd

linux中安裝配置 jdk

jdk1 png images 下載 配置環境變量 ftp 當前 bsp 官網 01.去官網下載指定的jdk 02.使用xftp把下載好的文件 傳遞到 linux指定文件夾中03.進入指定的文件夾輸入tar -zxvf 文件名稱04.發現文件 05.進入文件c

eclipse maven 插件的安裝配置

打印 屬性 配置文件 size text 官網下載 maven 應該 庫存 maven3 安裝: 安裝 Maven 之前要求先確定你的 JDK 已經安裝配置完畢。Maven是 Apache 下的一個項目。眼下最新版本號是 3.0.4。我用的也是這個。

Microsoft SQL Server for Linux安裝配置

fig fcm zone linux for onf targe 查看 nbsp 客戶端   雖說mssql for linux早已經出來了,但原本沒有打算這麽早就去嘗試的,無奈之下還是得先嘗試用了,這裏分幾篇介紹我在用mssql for linux時遇到的問題,不得不說作

nfs安裝配置

nfs nfs安裝 clas bind 修改配置文件 讀取 word 修改 source nfs安裝和配置 1,安裝軟件: yum -y install nfs-utils 註意,會自動安裝rpcbind 2,啟動nfs service rpcbind start serv

Gulp的安裝配置

分享 插件 gis 鏡像文件 path cal user sta 全局 註意:要安裝倆次gulp(全局和本地) 之前由大牛幫忙配置的gulp來用。今天時間充裕,就和小夥伴一起動手配置gulp及其插件。第一步:建了一個Gulp文件夾,保存插件用於使用第二步:進入nodejs環

Maven實戰02_Maven的安裝配置

order width maven 檢查 bin apach 執行文件 win10 .com 1:在Windows上安裝Maven 本人系統環境:win10 + JDK1.8 + apache-maven-3.3.9 在安裝Maven之前,首先要確定你

Centos7.3安裝配置Tomcat8

localhost pat 1.10 logs .cn mage port oot -c 第一步:下載Tomcat8壓縮包 進入 http://tomcat.apache.org/download-80.cgi 下載tar.gz壓縮包 第二步:用ftp

Centos7.3安裝配置Mysql5.7

mysql5 logs public mon grant https mysql sta -- 第一步:獲取mysql YUM源 進入mysql官網獲取RPM包下載地址 https://dev.mysql.com/downloads/repo/yum/

Centos7.3安裝配置jre1.8

分享 運行環境 filezilla www 編輯 exp path 解壓 安裝和配置 在正式環境裏 我們可以不安裝jdk ,僅僅安裝Java運行環境 jre即可; 第一步:下載jre 我們去oracle官方下載下jre http://www.oracle