mysql mycat ミドルウェアの簡単な紹介

mysql mycat ミドルウェアの簡単な紹介

1. mycatとは

エンタープライズアプリケーション開発のための完全にオープンソースの大規模データベースクラスター

トランザクション、ACIDをサポートし、MySQLを置き換えることができる拡張データベース

高価なOracleクラスタに代わるMySQLクラスタとして見ることができるエンタープライズクラスのデータベース

メモリキャッシュ技術、NoSQL技術、HDFSビッグデータを統合した新しいSQL Server

従来のデータベースと新しい分散データウェアハウスを組み合わせた、エンタープライズレベルの新世代データベース製品

新しいデータベースミドルウェア製品

上記は公式声明です。実際、それはデータベース接続プールです。 MySQL プロキシも接続プールですが、その効率は非常に低いです。

2. Mycatのインストール

1. mycatをダウンロードする

2. mycatをインストールする

# tar zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/

3. 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> 
<ユーザー名="tankzhang"> 
<property name="password">管理者</property> 
<property name="schemas">mytest</property> 
</ユーザー>

デフォルトの仮想データベース名は TESTDB であることに注意してください。schema.xml で testdb が設定されていない場合は、schema.xml で testdb を仮想データベース名に変更する必要があります。ここで定義されたユーザー名とパスワード、および仮想データベース名は、実際には MySQL に存在しません。

2. schema.xmlを構成する

# 猫スキーマ.xml 
<?xml バージョン="1.0"?> 
<!DOCTYPE mycat:schema SYSTEM "schema.dtd"> 
<mycat:スキーマ 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>ユーザーを選択()</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> 
</データホスト> 
</mycat:スキーマ>

mycat の設定パラメータは非常に多くあります。 balance="1" と writeType="0" に注目

a. バランス属性の負荷分散タイプ。現在 4 つの値があります。

  • balance="0" の場合、読み取り/書き込み分離メカニズムは有効にならず、すべての読み取り操作は現在利用可能な writeHost に送信されます。
  • balance="1" の場合、すべての readHost とスタンバイ writeHost が、select ステートメントの負荷分散に参加します。簡単に言うと、デュアル マスターおよびデュアル スレーブ モード (M1 ->S1、M2->S2、および M1 と M2 は相互にマスターとスレーブ) では、通常の状況では、M2、S1、および S2 がすべて、select ステートメントの負荷分散に参加します。
  • balance="2" の場合、すべての読み取り操作は writeHost と readhost にランダムに分散されます。
  • balance="3" の場合、すべての読み取り要求は writerHost に対応する readhost にランダムに分散されて実行され、writerHost は読み取り負荷を負いません。balance=3 は 1.4 以降のバージョンでのみ使用可能であり、1.3 では使用できないことに注意してください。

b. writeType属性

負荷分散タイプ。現在、次の 3 つの値があります。

  • writeType="0" の場合、すべての書き込み操作は、構成された最初の writeHost に送信されます。最初の writeHost が失敗した場合は、まだ動作している 2 番目の writeHost に切り替えられます。再起動後、切り替えられた 2 番目の writeHost が優先されます。切り替えは、構成ファイル dnindex.properties に記録されます。
  • writeType="1" の場合、すべての書き込み操作は構成された writeHost にランダムに送信されます。
  • writeType="2"、実装されていません。

特定のパラメータ

3. マスタースレーブサーバーを構成する

4. 実際のユーザーを追加する

'123456' で識別される tank@"192.168.%" に test.* のすべての権限を付与します。 
権限をフラッシュする

マシン 213 および 214 にユーザーを追加します。

5. 実際のユーザー接続をテストする

schema.xml で設定された実際のユーザーが実際のデータベースに接続できることを確認します。ファイアウォールに注意してください。

4番目に、mycatを起動します

1. 共通パラメータ

./mycat start 開始します。/mycat stop 停止します。/mycat console フォアグラウンドで実行します。/mycat restart サービスを再起動します。/mycat pause 一時停止します。/mycat status 起動ステータスを確認します

2. mycatを起動して表示する

# ./mycat 開始 
Mycat サーバーを起動しています... 
# netstat -tpnl |grep 8066 
tcp 0 0 :::8066 :::* LISTEN 31728/java 
# ./mycat ステータス 
Mycat サーバーが実行中です (31726)。

5. 読み取りと書き込みの分離をテストする

# mysql -u tankzhang -p -P 8066 -h 127.0.0.1 // 127.0.0.1 を必ず含めてください 
パスワードを入力してください: 
MySQL モニターへようこそ。コマンドは ; または \g で終わります。 
MySQL接続IDは1です 
サーバーバージョン: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat サーバー (OpenClundDB) 

Copyright (c) 2000, 2016, Oracle およびその関連会社。無断複写・転載を禁じます。 

OracleはOracle Corporationおよびその関連会社の登録商標です。 
その他の名称は各社の商標である場合があります。 
所有者。 

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 

mysql> データベースを表示します。 
+----------+ 
| データベース | 
+----------+ 
| mytest | //仮想データベース+----------+ 
セット内の 1 行 (0.00 秒) 

mysql> mytest を使用します。 
テーブル名と列名の補完のためのテーブル情報の読み取り 
-Aでこの機能をオフにすると起動が速くなります。 

mysql> `user`が存在しない場合はテーブルを作成します( 
-> `id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT 'ID', 
-> `name` varchar(20) NOT NULL DEFAULT '' COMMENT 'Name', 
-> `create_time` int(10) NOT NULL DEFAULT '0' COMMENT '作成時刻', 
-> 主キー (`id`) 
-> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 
クエリは正常、影響を受けた行は 0 行 (0.08 秒) 
データベースが変更されました 
mysql> テーブルを表示します。 
+----------------+ 
| テスト中のテーブル | 
+----------------+ 
| ユーザー | 
+----------------+ 
セット内の1行(0.01秒) 
mysql> `user` (`id` 、`name`) に VALUES ('1'、'tank') を挿入します。 
クエリは正常、1 行が影響を受けました (0.00 秒) 

mysql> select * from user; //スレーブデータベースのユーザーテーブル内の名前を変更すると、スレーブデータベースから読み取られていることがわかります +----+-----------+-------------+ 
| ID | 名前 | 作成時刻 | 
+----+-----------+-------------+ 
| 1 | タンクチャン | 0 | 
+----+-----------+-------------+ 
セット内の1行(0.01秒)

VI. 要約

mycat は、mysql テーブルのパーティショニング、シャーディングなどをサポートしていますが、推奨されません。 Mycat は多くのクラスターをサポートしていないため、mha で使用できると便利です。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • mysql mycat ミドルウェアのインストールと使用
  • mysql+mycat、負荷分散、マスタースレーブレプリケーション、読み取り/書き込み分離操作に基づく安定した高可用性クラスタを構築します。
  • mycat を使用して MySQL データベースの読み取りと書き込みの分離を実装する例
  • データベースミドルウェアMyCatの紹介
  • Windows環境でのmycatのインストールと起動

<<:  Vue3ルーティングVueRouter4を使用する簡単な例

>>:  VMware仮想マシンにLinux(CentOS)をインストールするための詳細な構成手順

推薦する

JavaScript のシングルトン デザイン パターン

目次1. デザインパターンとは何ですか? 2. デザインパターンの5つの設計原則(SOLID) 3....

Reactの3つの主要属性におけるpropsの使用の詳細な説明

目次クラスコンポーネント機能コンポーネントプロパティは読み取り専用ですコンポーネント間通信前回は状態...

Vueは移動可能なフローティングボタンを実装します

この記事の例では、どこにでも移動できるフローティングボタンを実現するためのVueの具体的なコードを共...

Nginx の Docker インストールの問題とエラー分析

質問: DockerにNginxをインストールするときに次のエラーが発生しました: docker: ...

Dockerイメージのローカル移行の実装

最近 Docker を勉強しているのですが、よく問題に遭遇します。Docker イメージをダウンロー...

SQL 文で OR と AND を混在させる場合のヒント

現在、このような要件があります。ログインした人がカスタマー サービス担当者である場合、注文は「このカ...

JavaScript と JQuery フレームワークの基本チュートリアル

目次1. JS オブジェクトDOM –1、機能–2、テスト3. jQuery –1. 概要–2、使用...

Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。

私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...

MySQL テーブルを削除する際の I/O エラーの原因分析と解決方法

問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...

React 純粋関数コンポーネント setState がページ更新を更新しない問題の解決方法

目次問題の説明:原因分析:解決:補足: Reactでは、フックが使用されている場合、useState...

MySQLグループリンクの使用に関する詳細な説明

MYSQL におけるグループ化とリンクは、データベースの操作やデータのやり取りで最もよく使用される ...

Vue のスロットスコープの詳細な理解(初心者向け)

Baidu には slot-scope に関する記事が既にたくさんありますが、以前よく学習しておら...

JS+AJAX は、州、市、地区のドロップダウン リストのリンクを実現します。

この記事では、州、市、地区のドロップダウンリストのリンクを実現するためのJS + AJAXの具体的な...

HTML5で見逃せないAPIやヒントのまとめ

これまでのブログ投稿では、HTML 5 ではあまり使われていないが注目すべき API やヒントに焦点...

vueプロジェクトのマルチ環境設定(.env)の実装

目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...