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 つの値があります。

1. balance="0" の場合、読み取り/書き込み分離メカニズムは有効にならず、すべての読み取り操作は現在利用可能な writeHost に送信されます。

2. balance="1" の場合、すべての readHost とスタンバイ writeHost が、select ステートメントの負荷分散に参加します。簡単に言うと、デュアル マスターおよびデュアル スレーブ モード (M1 -> S1、M2-> S2、M1 と M2 は相互にマスターとスレーブ) では、通常の状況では、M2、S1、および S2 がすべて、select ステートメントの負荷分散に参加します。

3. balance="2" の場合、すべての読み取り操作は writeHost と readhost にランダムに分散されます。

4. balance="3" の場合、すべての読み取り要求は writerHost に対応する readhost にランダムに分散されて実行され、writerHost は読み取り負荷を負いません。balance=3 は 1.4 以降のバージョンでのみ使用可能であり、1.3 では使用できません。

b. writeType属性

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

1. writeType="0" の場合、すべての書き込み操作は最初に構成された writeHost に送信されます。最初の writeHost が失敗した場合は、まだ動作している 2 番目の writeHost に切り替えられます。

writeHost の場合、再起動後は切り替えられたホストが優先され、切り替え内容は構成ファイル dnindex.properties に記録されます。

2. writeType="1" の場合、すべての書き込み操作は構成された writeHost にランダムに送信されます。

3. writeType="2"、実装されていません。

具体的なパラメータ: http://mycat.io/document/Mycat_V1.6.0.pdf

3. マスタースレーブサーバーを構成します。ここでは説明しません。これについてはブログ投稿があります。

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

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

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

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

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

1. 共通パラメータ
./mycat スタート
./mycat 停止
./mycat コンソールフロントエンド操作
./mycat restart サービスを再起動する
./mycat 一時停止
./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 で使用できると便利です。

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

<<:  JavaScript のディープコピーの落とし穴

>>:  jQuery でダイナミックなパーティクル効果を実現

推薦する

Windows 10 Home Edition に Docker for Windows をインストールする

0. 背景ハードウェア: Xiaomi Notebook Air 13/Inter Core i7-...

Vueプロジェクトでvuexを使用する方法

目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...

位置固定オフセット問題を解決する方法の詳細な説明

質問CSS 固定配置の position:fixed は非常に使いやすいです。ブラウザのビューポート...

MySQL の完全バックアップとクイックリカバリ方法

過去 15 日間のデータをバックアップするシンプルな MySQL 完全バックアップ スクリプト。バッ...

CSS を使用して複数列の等高レイアウトを設定する方法の例

最初は、複数の列のコンテンツのサイズと高さが異なります。ここで、表示する背景を異なるものに設定し、各...

vue+echarts で中国地図のフロー効果を実現する (詳細な手順)

@vue+echarts は中国地図のフロー効果を実現します#レンダリングを見てみましょう手順:コ...

HTML 初心者のためのベストプラクティス 15 選

HTML 初心者向けのベストプラクティスを 30 個紹介します。 1. タグを閉じたままにする過去に...

ウェブサイトのパフォーマンスを向上させるために画像を最適化する方法

目次概要画像圧縮とはJPEG/JPG JPGの利点JPGの使用シナリオJPGの欠点MozJPEG を...

Centos8 でローカル Web サーバーを構築するための実装手順

1 概要システム Centos8 では、httpd を使用してローカル Web サーバーを構築します...

Nginx で複数のドメイン名がドメインをまたいでアクセスできるようにマップを使用する方法

一般的なNginx構成ではクロスドメインが可能 サーバー{ 11111 を聞いてください。 serv...

マインドマップを使って4つの側面からWeb標準の価値を議論する

このアイデアを改善し、より良い意見を得られることを期待して、議論を刺激するためにいくつかの値を大まか...

実践で遭遇するフロントエンドの基本(HTML、CSS)

1. div css マウスの手の形は cursor:pointer; です。 2. HTML の相...

Vue は QR コード スキャン機能を実装します (スタイル付き)

必要: vue を使用して QR コードのスキャンを実現します。プラグイン: QRコードリーダー;プ...

Linux で yum と入力した後に -bash: /usr/bin/yum: No such file or directory という問題を解決する方法

Linuxでyumを入力すると、プロンプトが表示されます: -bash: /usr/bin/yum:...