最近、データベースを Oracle から MySQL に変更しましたが、MySQL のコミュニティ版はあらゆる面で Oracle に劣っていると感じました。便利! Cobar は誕生以来プログラマーに求められてきましたが、2013 年以降、その後のアップデートはほとんどありませんでした。このような状況下で、MyCAT は、Alibaba のオープンソース Cobar 製品に基づいて開発され、優れたアーキテクチャとパフォーマンス、そして多くの成熟したユースケースを出発点として優れた出発点となりました。 、巨人の肩の上に立っている MyCAT はさらに遠くを見ることができます。 ------------------------------------------------ ---------------MyCATの使い方----------------------------- ----- ------------------------ datahost は実際のバックエンド MySQL クラスターの固有情報をリストします。writehost はデータの書き込みを担当する MySQL インスタンスであり、writehost は読み取りを担当する MySQL インスタンスです。2 つのインスタンスの固有情報が同じに書き込まれている場合、これは、クライアントが単一のインスタンスを使用することを意味します。異なるインスタンスとして構成されている場合は、2 つのインスタンス間でマスターとスレーブの同期を構成し、MyCAT を通じて読み取りと書き込みの分離を実装します データベースは垂直にセグメント化されており、主に次のように完了します。 schema.xml については後で詳しく説明します。 Lrule.xml 例の構成
さて、ナンセンスではありません。今回は MySQL 分散クラスター MyCAT の構築について記録します。MySQL エージェントとして理解しています。
------------------------------------------------- ----------------重要なヒント---------------------------- -- ------------------------------------------
MyCATチームがリリースしました1.4 アルファ バージョン。多くのバグが修正され、新機能が追加されました。
ブロガーはテストにバージョン 1.3 を使用したため、テスト結果は最新バージョンと一致しない可能性があります。
---------------------------------------------- --- --------------------------背景紹介----------------- ----------------------------------------------------
MyCAT の背景紹介 もちろん、これは JAVA によって開発されたものなので、理解する必要があります。
------------------------------------------------ ----------MyCATの前身------------------------------------- ---------- ------------------------------------
MyCATの前身はAlibaba 2012 年 6 月 19 日、データベース ミドルウェア Cobar は、 の前身である Amoeba が外部の世界に対して正式にオープンソースになりましたが、その作者の Chen Siru が退職した後、 Shanda に移行するために、Alibaba はアメーバの安定性、パフォーマンスと機能のサポート、その他の要因を社内で考慮し、プロジェクト チームを再設立し、名前を Cobar に変更しました。 Cobarはによって作られています
Alibaba のオープンソース MySQL 分散処理ミドルウェアは、従来のデータベースと同様に、分散環境で大規模なデータ サービスを提供できます。
------------------------------------------ ------ ------------------------MyCATの重要な機能 -------------------------------------- -------- --------------------------------
SQL 92 標準をサポートします。
MySQL をサポート クラスターはプロキシとして使用できます。
ORACLE、DB2、SQL Server への JDBC 接続をサポートし、MySQL サーバーとしてシミュレートします。
mysql クラスター、percona-cluster、または mariadb クラスターの galera をサポートします。高可用性データ シャーディング クラスター。
自動フェイルオーバー、高可用性。
読み取り/書き込み分離をサポート、MySQL デュアル マスターと複数のスレーブ、および 1 つのマスターと複数のスレーブ モードをサポートします。複数のノードに自動的にシャーディングされ、効率的なテーブル相関クエリに使用されます。
E-R 関係に基づいた独自のシャーディング戦略をサポートし、効率的なテーブル相関クエリを実現します。
マルチプラットフォームのサポート、シンプルな展開と実装。
---------------------------------------------- --- ---------------MyCAT のアーキテクチャ
---------------------------- ----- ----------------------------------
は大きく3つのパートに分かれていますフロントエンドはコネクタであり、スレッド管理はリソース プールを使用し、デフォルトで AIO を使用します (これらの基本情報は起動ログで確認できます)
中間層は SQL パーサー + SQL ルーティングの図で明確に説明されています。 , SQL Executor は、ソース コードを見て詳しく理解する必要があります。この期間の MyCAT のテストを通じて、SQL Executor の存在を感じず、むしろ SQL のように感じたためです。
プロセス、DataNode およびハートビート検出は中間層によって実装される 2 つのコンポーネントです
。1 つは MySQL ライブラリに関連しており (インスタンスではないことに注意してください
)、もう 1 つは共通の監視メカニズムの機能モジュールです。 最下層 ストレージはMySQのクラスターですL~ MySQLのクラスターをどう使うかは私たち次第です╰(?? ▽ ??)╯。
MyCAT は現在、構成ファイルを通じて論理ライブラリと関連構成を定義しています。構成ファイルには主に 3 つが含まれます。ファイル:
MYCAT_HOME/conf/schema.xml は論理ライブラリ、テーブル、シャーディング ノードおよびその他のコンテンツを定義します。
MYCAT_HOME/conf/rule.xml はシャーディング ルールを定義します。
MYCAT_HOME/conf/ポートなどの関連変数は、server.xml で定義されます。
心配しないでください。この記事では、これらの設定ファイルの機能といくつかのパラメーターの意味を簡単に紹介します。
一つずつ見ていきましょう。まず、インターネットから抽出されたサンプル テンプレートである schema.xml を見てください。スキーマ名 = "weixin "、この構成の効果は、MySQL クライアントが Show DATABASE コマンドを通じて MyCAT に接続すると、データベースの名前が表示されることです たとえば、この構成ファイルでは、2 つのデータベースが次のようになります。 weixin と yixin という構成済みの 2 つのライブラリには、それぞれユーザー テーブルが含まれています。 注: MyCAT によって外部エンドに表示されるデータベースとデータベース内のテーブルはすべてスキーマ内に構成されており、バックエンド MySQL に存在するとしても、それらはスキーマ内に記述されません。ただし、MyCAT は特定のテーブルの構造を定義しません。 次に、datanode があります。この属性は、スキーマ テーブルとそれが格納されるデータベースを指定します。たとえば、この構成では、dn1 のデータ ノードが localhost0 に配置されるように指定されます。 weixi
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="weixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="weixin" >
<schema name="yixin" checkSQLschema="false" sqlMaxLimit="100" dataNode="yixin" />
<dataNode name="dn1" dataHost="localhost0" database="weixin" />
<dataNode name="dn2" dataHost="localhost0" database="yixin" />
<dataHost name="localhost0" maxCon="450" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="localhost:3306" user="root" password="123456" />
<readHost host="hostS1" url="localhost:3307" user="test" password="123456" />
</dataHost>
</mycat:schema>
e
rule.xml は、主にテーブルの水平スコアを提供するために多くのレベルのスコアを提供するために使用されます。この例は、4 つの部分に分割されたモジュロ シャーディングを示しています。合計では、user_id は 1024 を法として、2 つの部分に分割され、各部分は 512 になります。
他のセグメンテーション戦略については後で詳しく紹介します
server.xmlを例として<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="sequnceHandlerType">0</property>
</system>
<user name="test">
<property name="password">test</property>
<property name="schemas">weixin,yixin</property>
</user>
</mycat:server>
server.xml里面配置MyCAT的逻辑库参数,如示例,配置的就是逻辑库weixin和yixin的登录用户名和密码
这个XML里面其实还有一些有关于MyCAT性能调整的参数,不过略去了,东西太多,以后再详细介绍
----------------------------------------------------------------------华丽的分割线-------------------------------------------------------------
简单的MyCAT搭建大致上就包括这些内容,现在讲讲使用一段时间以后,对MyCAT的一些总结;
1.MyCAT的性能表现还是不错的,这几天一直对MyCAT的各方面进行测试,发现MyCAT作为一个代理,虽然是在JAVA虚拟机上面运行,但是面对接近9K的QPS的峰值的时候,本身并没有出现无响应或者丢失连接的问题;
2.MyCAT对前端显示的所有的库,表,全部由schema来配置,但是本身不定义表结构,这使得后端的表结构如果出现不一致,MyCAT前端是察觉不到的,不太方便吧;
3.第二点的不方便,也反映了一点,没有配置到schema的表,完全无法通过MyCAT去操作,这也算是安全性良好的一个表现吧;
4.之前说SQL Executor没感觉到,也是因为在一些测试中,发现MyCAT更像一个提供转发和结果合并功能的代理,只是对SQL和结果进行了process,不过这个需要去看源代码才知晓细节了。
以上がMySQL 分散クラスター MyCAT (1) の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。