91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫中間件——MyCat部署安裝

發布時間:2020-10-11 20:30:46 來源:網絡 閱讀:276 作者:warrent 欄目:MySQL數據庫

關于mycat的鏈接:
Mycat官網
Mycat下載鏈接
Mycat官方文檔,百度網盤官方文檔下載鏈接,提取碼:f9nq。
Mycat簡略文檔

可以在開始之前,閱讀Mycat簡略文檔,對其有個大概了解。

注:MyCAT 支持多種數據庫接入,分別有:mongodb、oracle、sqlserver 、hive 、db2 、 postgresql。

mycat應用場景如下:

  • 單純的讀寫分離,此時配置最為簡單,支持讀寫分離,主從切換;
  • 分表分庫,對于超過 1000 萬的表進行分片,最大支持 1000 億的單表分片;
  • 多租戶應用,每個應用一個庫,但應用程序只連接 Mycat,從而不改造程序本身,實現多租戶化;
  • 報表系統,借助于 Mycat 的分表能力,處理大規模報表的統計;
  • 替代 Hbase,分析大數據;
  • 作為海量數據實時查詢的一種簡單有效方案,比如 100 億條頻繁查詢的記錄需要在 3 秒內查詢出來結果,除了基于主鍵的查詢,還可能存在范圍查詢或其他屬性查詢,此時 Mycat 可能是最簡單有效的選擇。

在mycat中有以下三個比較重要的專業術語,這里簡單寫一下:

  • Schema:邏輯庫,與MySQL中的databases(數據庫)對應,一個邏輯庫中定義了所包括的table。
  • table:邏輯表,就是物理數據庫中存儲的某一張表,與傳統的數據庫不同,這里的表格要聲明其所存儲的邏輯數據節點datanode,再次可以指定表的分片規則。
  • datanode:mycat的邏輯數據節點,是存放table的具體物理節點,也稱之為分片節點,通過datasource來關聯到后端某個具體數據庫上。
  • datasource:定義某個物理庫的訪問地址,用于捆綁到datanode上。

本博文實現功能如下:

  • MySQL服務器兩臺,用來做主從復制;
  • mycat服務器一臺,針對兩臺MySQL服務器做讀寫分離。

上述環境類似于web群集,前端nginx代理(這里是mycat),后端兩個MySQL服務,slave服務器用來讀數據,master服務器用來寫數據。

1、準備mycat部署環境

系統 IP 主機名 服務
Centos 7.5 192.168.20.2 mysql01 MySQL 5.7.24
Centos 7.5 192.168.20.3 mysql02 MySQL 5.7.24
Centos 7.5 192.168.20.4 mycat Mycat

mycat的安裝部署需要jdk1.7及以上版本,mysql建議是5.5及以上版本。

自行部署兩臺MySQL的主從,可以參考博文:MySQL高可用方案——雙主(注:只需要參考博文做出主從效果即可,并不需要雙主,也不需要keepalived來做高可用)。

2、安裝jdk

[root@mycat ~]# java -version         #查看jdk版本是否合適
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
#如果上述指令返回錯誤,可以執行下面的命令安裝jdk環境
[root@mycat ~]# yum -y install java   

3、部署mycat

下載的mycat包,直接解壓即可使用。

#下載并解壓
[root@mycat src]# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
[root@mycat src]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
#查看解壓后的目錄結構
[root@mycat src]# tree -L 1  /usr/local/mycat/
/usr/local/mycat/
├── bin
├── catlet
├── conf
├── lib
├── logs
└── version.txt

其中:

  • bin:啟動目錄;
  • lib:mycat自身的jar包或依賴的jar包的存放目錄;
  • logs:mycat日志的存放目錄,日志存放在logs/log中,每天一個文件;
  • conf:配置目錄,用于存放配置文件
    • --server.xml:是Mycat服務器參數調整和用戶授權的配置文件。
    • --schema.xml:是邏輯庫定義和表以及分片定義的配置文件。
    • --rule.xml: 是分片規則的配置文件,分片規則的具體一些參數信息單獨存放為文件,也在這個目錄下,配置文件修改需要重啟MyCAT。
    • --log4j.xml: 日志存放在logs/log中,每天一個文件,日志的配置是在conf/log4j.xml中,根據自己的需要可以調整輸出級別為debug debug級別下,會輸出更多的信息,方便排查問題。
    • --autopartition-long.txt,partition-hash-int.txt,sequence_conf.properties, sequence_db_conf.properties 分片相關的id分片規則配置文件

下面的圖片描述了mycat最重要的3大配置文件:

數據庫中間件——MyCat部署安裝

4、修改mycat配置文件,以便針對后端數據庫實現讀寫分離

1)修改server.xml文件
#指定client連接mycat的用戶名及密碼,此處的賬號密碼與MySQL數據庫無關
[root@mycat mycat]# vim conf/server.xml    #定位到80行左右,修改如下
        <user name="mycat" defaultAccount="true">  #mycat為用戶名
                <property name="password">pwd@123</property>   #此處為密碼
                <property name="schemas">teset_mycat</property>    #此處為邏輯庫名

                <!-- 表級 DML 權限設置 -->
                <!--            
                <privileges check="false">
                        <schema name="TESTDB" dml="0110" >
                                <table name="tb01" dml="0000"></table>
                                <table name="tb02" dml="1111"></table>
                        </schema>
                </privileges>           
                 -->
        </user>
2)修改schema.xml文件
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--下面的schema必須和第一個文件中的schema name(邏輯庫名)一致。-->
        <schema name="teset_mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="test" />    <!--這里的database是指定要連接后端的哪個數據庫,這里連接的是test庫-->
                <!--下面是指定后端真實的MySQL主機,關于下面的balance值,有三個可選值,將在下面寫下來-->
        <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                                <!--指定后端哪臺主機用來寫數據-->
                <writeHost host="hostM1" url="192.168.20.2:3306" user="root"
                                   password="123.com">
                        <!-- can have multi read hosts -->
                                                <!--指定后端哪臺主機用來讀數據-->
                        <readHost host="hostS2" url="192.168.20.3:3306" user="root" password="123.com" />
                </writeHost>
        </dataHost>
</mycat:schema>

注:上面提到的dataHost字段balance負載均衡類型,目前的取值有以下4 種:

  1. balance="0", 不開啟讀寫分離機制,所有讀操作都發送到當前可用的 writeHost 上(默認值)。
  2. balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且 M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡。
  3. balance="2",所有讀操作都隨機的在 writeHost、readhost 上分發。
  4. balance="3",所有讀請求隨機的分發到 wiriterHost 對應的 readhost 執行,writerHost 不負擔讀壓力,注意 balance=3 只在 1.4 及其以后版本有,1.3 沒有。

writeTyep字段有以下3中取值:

1、writeType="0", 所有寫操作發送到配置的第一個 writeHost,第一個掛了切到還生存的第二個 writeHost,重新啟動后已切換后的為準,切換記錄在配置文件中:dnindex.properties 。
2、writeType="1",所有寫操作都隨機的發送到配置的 writeHost,1.5 以后廢棄不推薦。switchType 屬性

  • -1 表示不自動切換。
  • 1 默認值,自動切換。
  • 2 基于 MySQL 主從同步的狀態決定是否切換。
3)測試mycat主機是否可以登錄到后端兩個數據庫
#復制一個mysql命令
[root@mycat mycat]# scp root@192.168.20.2:/usr/local/mysql/bin/mysql /usr/local/bin/
#對后端兩臺數據庫進行登錄測試
[root@mycat mycat]# mysql -uroot -p123.com -h 192.168.20.2
[root@mycat mycat]# mysql -uroot -p123.com -h 192.168.20.3
#確保執行上述指令登錄數據庫時,可以登錄成功。
#如果沒有登錄成功,則要考慮數據庫的root用戶是否有遠程登錄的權限,或者防火墻的問題。
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="useSqlStat">0</property>  <!-- 1為開啟實時統計、0為關閉 -->
        <property name="useGlobleTableCheck">0</property>  <!-- 1為開啟全加班一致性檢測、0為關閉 -->

                <property name="sequnceHandlerType">2</property>
                <property name="processorBufferPoolType">0</property>
                <property name="handleDistributedTransactions">0</property>

                <property name="useOffHeapForMerge">1</property>
                <property name="memoryPageSize">1m</property>
                <property name="spillsFileBufferSize">1k</property>

                <property name="useStreamOutput">0</property>
                <property name="systemReserveMemorySize">384m</property>

                <property name="useZKSwitch">true</property>

<!--以上內容中,只是刪除了一些注釋行的內容,主要是下面-->
        </system>
        <user name="mycat" >
                <property name="password">pwd@123</property>
                <property name="schemas">teset_mycat</property>
        </user>
</mycat:server>

conf/schema.xml文件內容如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

        <schema name="teset_mycat" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
        </schema>
        <dataNode name="dn1" dataHost="host1" database="test" />
        <dataHost name="host1" maxCon="1000" minCon="10" balance="3"
                          writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <!-- can have multi write hosts -->
                <writeHost host="hostM1" url="192.168.20.2:3306" user="root"
                                   password="123.com">
                        <!-- can have multi read hosts -->
                        <readHost host="hostS2" url="192.168.20.3:3306" user="root" password="123.com" />
                </writeHost>
        </dataHost>
</mycat:schema>

5、啟動mycat

  • ./mycat start 啟動
  • ./mycat stop 停止
  • ./mycat console 前臺運行
  • ./mycat install 添加到系統自動啟動(暫未實現)
  • ./mycat remove 取消隨系統自動啟動(暫未實現)
  • ./mycat restart 重啟服務
  • ./mycat pause 暫停
  • ./mycat status 查看啟動狀態
#創建命令軟連接
[root@mycat mycat]# ln -sf /usr/local/mycat/bin/mycat /usr/local/bin/
#啟動mycat
[root@mycat mycat]# mycat start   #更建議使用mycat console前臺啟動,如果有錯誤,就會直接輸出到屏幕,方便排錯
#待調試正常后,再使用mycat start后臺啟動即可。
Starting Mycat-server...
[root@mycat conf]# ss -lnp | grep 8066   #如果端口沒有在監聽,則表示啟動失敗,自行查看日志排查吧。
tcp    LISTEN     0      100      :::8066                 :::*                   users:(("java",pid=62070,fd=78))
#使用server.xml文件中定義的用戶名及密碼進行登錄查看
[root@mycat conf]# mysql -umycat -ppwd@123 -h 192.168.20.4 -P 8066
mysql> show databases;   #下面的teset_mycat庫對應的就是后端的test庫
+-------------+
| DATABASE    |
+-------------+
| teset_mycat |
+-------------+
1 row in set (0.00 sec)
mysql> use teset_mycat
#庫中所有的表數據和后端數據庫是對應的
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1             |
+----------------+
1 row in set (0.00 sec)

mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    1 | a    |
|    2 | b    |
|    3 | c    |
|    4 | d    |
+------+------+

至此,已經成功接入了mycat來連接后端數據庫,但是mycat的主要功能還沒有展示,我將繼續更新后面的內容。其實更推薦去閱讀Mycat官方文檔。官方文檔也比較通俗易懂。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石狮市| 繁峙县| 巴林左旗| 阿拉善右旗| 宁强县| 宜兰市| 南开区| 乐业县| 抚松县| 灵石县| 揭东县| 岐山县| 诸暨市| 扶绥县| 贡嘎县| 布拖县| 阿鲁科尔沁旗| 宁陕县| 镇坪县| 玛纳斯县| 甘德县| 洛浦县| 石阡县| 西昌市| 义马市| 靖安县| 福建省| 高阳县| 张掖市| 岗巴县| 阿拉善左旗| 都安| 武宁县| 崇信县| 上栗县| 图木舒克市| 萨嘎县| 黄浦区| 绥江县| 正定县| 芜湖市|