この記事では主に、mysql ミドルウェア mycat のインストール方法と使用方法の例を紹介します。MyCAT は、以前は Alibaba の有名な Cobar として知られていた MySQL ミドルウェアで、一定期間オープンソース化された後、停止されました。そこで MyCAT はこの旗を掲げました。ビッグデータの時代において、その重要性がますます明らかになりました。この記事は主に MyCAT の導入導入について説明します。
まず、mycat とは何ですか
エンタープライズアプリケーション開発のための完全にオープンソースの大規模データベースクラスター
トランザクション、ACID、および MySQL を置き換えることができるデータベースの拡張バージョンをサポートします
MySQL クラスターと見なされ、高価な Oracle クラスターの置き換えに使用されます
メモリ キャッシュ テクノロジー、NoSQL テクノロジー、HDFS ビッグ データを統合する新しい SQL Server
従来のデータベースと新しい分散型データベースを組み合わせた新世代のエンタープライズ レベルのデータベース製品データウェアハウス
斬新なデータベースミドルウェア製品
上記は公式の説明です。実際には、これはデータベースの接続プールです。 MySQL プロキシも接続プールですが、効率は非常に低くなります。
2、mycatのインストール
1、ダウンロードアドレスmycat
http://dl.mycat.io/
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> <user name="tankzhang"> <property name="password">admin</property> <property name="schemas">mytest</property> </user>
ここで、デフォルトの仮想データ名は TESTDB であることに注意してください。testdb が schema.xml で設定されていない場合は、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" に注目してください。バランス属性の負荷分散タイプには、現在 4 つの値があります:
1、読み取り/書き込み分離メカニズムは有効になりません。読み取り操作は、現在利用可能な writeHost に送信されます。
2. Balance="1"、すべての readHost と Stand by writeHost は、デュアル マスター デュアル スレーブ モード (M1 -> S1、M2 -> S2) の場合に、select ステートメントの負荷分散に参加します。 M1 と M2 は相互にアクティブとスタンバイです)。通常の状況では、M2、S1、および S2 はすべて select ステートメントのロード バランシングに参加します。
3. Balance="2"、すべての読み取り操作は writeHost と readhost にランダムに分散されます。
4. バランス = 3、すべての読み取りリクエストは、実行のために WriterHost に対応する読み取りホストにランダムに分散されます。balance = 3 は 1.4 以降のバージョンでのみ使用可能であることに注意してください。
b. writeType 属性
負荷分散タイプ、現在 3 つの値があります:
1。writeType="0"、すべての書き込み操作は最初に設定された writeHost に送信され、ハングすると最初の操作に切り替わります。 2 番目に残っている
writeHost は、再起動後に切り替えられたものになります: dnindex.properties .
2。すべての書き込み操作は、設定されたホストにランダムに送信されます。書き込みホスト。
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
5. 実ユーザー接続をテストして、schema.xml で構成された実ユーザーが実データベースに接続できることを確認します。ファイアウォールに注意してください。
4、mycatの起動1、共通パラメータ
./mycat start start./mycat stop stop
./mycatコンソールをフォアグラウンドで実行
./mycat restart サービスを再起動
./mycat stop 一時停止
./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).
5. 読み取りと書き込みの分離をテストします
# 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 の読み取り/書き込み分離の例
MyCat の構成方法
以上がMySQLミドルウェアmycatのインストールと使用例の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。