MySQL 分散クラスター MyCAT (1) の概要
最近、データベースを 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>
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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Apacheはデータベースに接続するには、次の手順が必要です。データベースドライバーをインストールします。 web.xmlファイルを構成して、接続プールを作成します。 JDBCデータソースを作成し、接続設定を指定します。 JDBC APIを使用して、接続の取得、ステートメントの作成、バインディングパラメーター、クエリまたは更新の実行、結果の処理など、Javaコードのデータベースにアクセスします。

DockerでMySQLを起動するプロセスは、次の手順で構成されています。MySQLイメージをプルしてコンテナを作成および起動し、ルートユーザーパスワードを設定し、ポート検証接続をマップしてデータベースを作成し、ユーザーはすべての権限をデータベースに付与します。

CentOSにMySQLをインストールするには、次の手順が含まれます。適切なMySQL Yumソースの追加。 yumを実行して、mysql-serverコマンドをインストールして、mysqlサーバーをインストールします。ルートユーザーパスワードの設定など、MySQL_SECURE_INSTALLATIONコマンドを使用して、セキュリティ設定を作成します。必要に応じてMySQL構成ファイルをカスタマイズします。 MySQLパラメーターを調整し、パフォーマンスのためにデータベースを最適化します。

MySQLをエレガントにインストールするための鍵は、公式のMySQLリポジトリを追加することです。特定の手順は次のとおりです。MYSQLの公式GPGキーをダウンロードして、フィッシング攻撃を防ぎます。 mysqlリポジトリファイルを追加:rpm -uvh https://dev.mysql.com/get/mysql80-community-rease-el7-3.noarch.rpm update yumリポジトリキャッシュ:yumアップデートインストールmysql:yumインストールmysql-server startup mysql sportin
