共計 4211 個字符,預計需要花費 11 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 mysql 中間件 mycat 怎么用,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一,什么是 mycat
一個徹底開源的,面向企業應用開發的大數據庫集群
支持事務、ACID、可以替代 MySQL 的加強版數據庫
一個可以視為 MySQL 集群的企業級數據庫,用來替代昂貴的 Oracle 集群
一個融合內存緩存技術、NoSQL 技術、HDFS 大數據的新型 SQL Server
結合傳統數據庫和新型分布式數據倉庫的新一代企業級數據庫產品
一個新穎的數據庫中間件產品
以上是官方說明。其實就是數據庫的連接池。mysql proxy 也是一種連接池,但是效率很低。
二,mycat 安裝
1,下載地址 mycat
http://dl.mycat.io/
2,安裝 mycat
# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
三,配置 mycat
1,配置 server.xml
# vim /usr/local/mycat/conf/server.xml // 添加以下內容
user name= user //mycat 用戶名
property name= password user /property //mycat 密碼
property name= schemas mytest /property //mycat 虛擬數據庫名
property name= readOnly true /property // 只讀
/user
user name= tankzhang
property name= password admin /property
property name= schemas mytest /property
/user
在這里要注意,默認的虛擬數據名是 TESTDB,如果 schema.xml 里面沒有配置 testdb,那就要把 testdb 改成 schema.xml 里面有的虛擬數據名。這里定義的用戶名和密碼,虛擬數據庫名,并不是在 mysql 中真實存在的。
2,配置 schema.xml
# cat schema.xml
?xml version= 1.0 ?
!DOCTYPE mycat:schema SYSTEM schema.dtd
mycat:schema xmlns:mycat= http://io.mycat/
schema name= mytest checkSQLschema= false sqlMaxLimit= 100 dataNode= my1 / // 定義虛擬數據庫名 mytest
dataNode name= my1 dataHost= test1 database= test / // 真實數據庫名 test
dataHost name= test1 maxCon= 1000 minCon= 10 balance= 1 writeType= 0 dbType= mysql dbDriver= native
heartbeat select user() /heartbeat
writeHost host= hostM1 url= 192.168.5.213:3306 user= tank password= 123456 // 真實數據庫的連接方式
readHost host= hostS1 url= 192.168.5.214:3306 user= tank password= 123456 / // 同上
/writeHost
/dataHost
/mycat:schema
mycat 的配置參數,相當的多。重點說一下 balance= 1 與 writeType= 0
a. 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 沒有。
b. writeType 屬性
負載均衡類型,目前的取值有 3 種:
1. writeType= 0 , 所有寫操作發送到配置的第一個 writeHost,第一個掛了切到還生存的第二個
writeHost,重新啟動后已切換后的為準,切換記錄在配置文件中:dnindex.properties .
2. writeType= 1,所有寫操作都隨機的發送到配置的 writeHost。
3. writeType= 2,沒實現。
具體參數:http://mycat.io/document/Mycat_V1.6.0.pdf
3,配置主從服務器,就不在這兒說了,博客中有
4,添加真實用戶
grant all privileges on test.* to tank@ 192.168.% identified by 123456
flush privileges
在 213,214 二臺機器上添加用戶。
5,測試真實用戶連接,確保 schema.xml 中配置的真實用戶,能連上真實的數據庫。注意防火墻。
四,啟動 mycat
1,常用參數
./mycat start 啟動
./mycat stop 停止
./mycat console 前臺運行
./mycat restart 重啟服務
./mycat pause 暫停
./mycat status 查看啟動狀態
2,啟動,并查看 mycat
# ./mycat start
Starting Mycat-server...
# netstat -tpnl |grep 8066
tcp 0 0 :::8066 :::* LISTEN 31728/java
# ./mycat status
Mycat-server is running (31726).
五,測試讀寫分離
# mysql -u tankzhang -p -P 8066 -h 127.0.0.1 // 一定要帶上 127.0.0.1
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type help; or \h for help. Type \c to clear the current input statement.
mysql show databases;
+----------+
| DATABASE |
+----------+
| mytest | // 虛擬數據庫
+----------+
1 row in set (0.00 sec)
mysql use mytest;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
mysql CREATE TABLE IF NOT EXISTS `user` ( - `id` int(11) unsigned NOT NULL DEFAULT 0 COMMENT ID ,
- `name` varchar(20) NOT NULL DEFAULT COMMENT 姓名 ,
- `create_time` int(10) NOT NULL DEFAULT 0 COMMENT 創建時間 ,
- PRIMARY KEY (`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Query OK, 0 rows affected (0.08 sec)
Database changed
mysql show tables;
+----------------+
| Tables_in_test |
+----------------+
| user |
+----------------+
1 row in set (0.01 sec)
mysql INSERT INTO `user` (`id` ,`name`)VALUES ( 1 , tank
Query OK, 1 row affected (0.00 sec)
mysql select * from user; // 修改從數據庫的 user 表中的 name, 會發現讀是從從數據庫讀取的
+----+-----------+-------------+
| id | name | create_time |
+----+-----------+-------------+
| 1 | tankzhang | 0 |
+----+-----------+-------------+
1 row in set (0.01 sec)
關于“mysql 中間件 mycat 怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
向 AI 問一下細節