Mycatの導入と使用


MyCATは、高価なOracleクラスタの代わりに「MySQL」クラスタのエンタープライズ・データベースと見なすことができます.その背後には、アリがオープンソースした有名な製品Cobarがあります.MyCATの目標は、既存のスタンドアロンデータベースとアプリケーションをクラウド側にスムーズに移行し、データストレージとビジネス規模が急速に増加している場合のデータボトルネックの問題を解決することです.
オーダーに合ったビジネスシーンをご紹介します
1シーンを適用
Mycatには多くのデータ・ライブラリ・ルールがありますが、次のいくつかの記事では、よく使われているルールについて試用し、まとめます.
一般的に、自然月または日付によるデータ分割のルールは、最近の1週間、2週間、3ヶ月以内のデータのようなショッピングモールの注文照会に適しています.またはレポートクラスアプリケーションです.
このようなデータは1つのエリア内に置いてデータの合併の時間を省いた.
もちろん月別データ量はあまり大きくしないでOKです.
一、配置手順の詳細(1)コマンドラインツールまたはグラフィックスクライアントでMYSQLに接続し、DEMOで使用する3つのスライスデータベースを作成する.
CREATE SCHEMA `range_db_01` DEFAULT CHARACTER SET utf8 ;
CREATE SCHEMA `range_db_02` DEFAULT CHARACTER SET utf8 ;
CREATE SCHEMA `range_db_03` DEFAULT CHARACTER SET utf8 ;
CREATE SCHEMA `range_db_04` DEFAULT CHARACTER SET utf8 ; 

(2)構成myを変更する.cnfは以下の文を追加し、/etc/myに置くのが一般的です.cnfまたは/etc/mysql/my.cnf、Mysqlテーブル名の大文字と小文字に敏感に設定しないと、テーブルが見つからないという問題が発生する可能性があります.
lower_case_table_names = 1 

(3)Mycat-server-1.6-RELESE-20161028204710-linuxを解凍する.tar.gzからインストールディレクトリの下にmycatディレクトリが生成されます
(4)jdk-7 u 79-linux-x 64のインストール
(5)mycat/conf/wrapを修正する.conf wrapperを修正します.Java.command=javaは前のステップの保存パスです
wrapper.java.command=/usr/java/jdk1.7.0_79/ 

(6)mycatユーザを作成し、ディレクトリ権限をmyctに変更する
useradd mycat
chown -R mycat.mycat mycat 

(7)ユーザパスワードの変更
passwd mycat
  : 

(8)mycat/conf/schemaを修正する.xml、URL、ユーザー名、パスワードの変更、その他は変更されません
 

二、実行手順の詳細(1)mycat/bin(デフォルトデータポートは8066、管理ポートは9066)に入って実行する./myct start(2)logsディレクトリに入り、wrapper.logエラーjava.NET.BindException:Address already in use実行中の関連javaプロセスを殺す
ps -ef|grep java
kill -9 xxx 

三、使用手順詳細(1)mysql binディレクトリmysql/bin/(2)mysqlにログインして以下のコマンドを実行する./mysql -utest -ptest -h192.168.184.56 -P8066 -DTEstdB
(mycatのユーザーアカウントとライセンス情報はconf/server.xmlファイルで構成されています)(3)表作成テスト:
mysql> create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
Query OK, 0 rows affected (0.30 sec)
mysql> explain create table employee (id int not null primary key,name varchar(100),sharding_id int not null);
+-----------+------------------------------------------------------------------------------------------------+
| DATA_NODE | SQL                                                                                            |
+-----------+------------------------------------------------------------------------------------------------+
| dn1       | create table employee (id int not null primary key,name varchar(100),sharding_id int not null) | 
| dn2       | create table employee (id int not null primary key,name varchar(100),sharding_id int not null) | 
+-----------+------------------------------------------------------------------------------------------------+
2 rows in set (0.04 sec) 

(4)クライアントソフトウェア使用:navicat myca新規接続作成:ip:192.168.184.56、ユーザー名:test、パスワード:test、ポート:8066 TEstdBデータベースの下にテーブルが作成されているのが表示されます:employee db 1が開き、db 2データベースにもテーブルが作成されているemployeeが表示されます.
(5)挿入データテスト
mysql> insert into employee(id,name,sharding_id) values(1,'leader us',10000);
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    6
Current database: TESTDB
Query OK, 1 row affected (0.03 sec)
mysql> explain insert into employee(id,name,sharding_id) values(1,'leader us',10000);
+-----------+-----------------------------------------------------------------------+
| DATA_NODE | SQL                                                                   |
+-----------+-----------------------------------------------------------------------+
| dn1       | insert into employee(id,name,sharding_id) values(1,'leader us',10000) | 
+-----------+-----------------------------------------------------------------------+
1 row in set (0.00 sec) 

(6)ルールauto-sharding-long(プライマリキー範囲)によるスライステスト
mysql> explain create table company(id int not null primary key,name varchar(100));
+-----------+---------------------------------------------------------------------+
| DATA_NODE | SQL                                                                 |
+-----------+---------------------------------------------------------------------+
| dn1       | create table company(id int not null primary key,name varchar(100)) | 
| dn2       | create table company(id int not null primary key,name varchar(100)) | 
| dn3       | create table company(id int not null primary key,name varchar(100)) | 
+-----------+---------------------------------------------------------------------+
3 rows in set (0.01 sec) 

(7)3つのスライスに3つのデータが挿入されている
mysql> explain insert into company(id,name) values(1,'hp');
+-----------+---------------------------------------------+
| DATA_NODE | SQL                                         |
+-----------+---------------------------------------------+
| dn1       | insert into company(id,name) values(1,'hp') | 
| dn2       | insert into company(id,name) values(1,'hp') | 
| dn3       | insert into company(id,name) values(1,'hp') | 
+-----------+---------------------------------------------+
3 rows in set (0.00 sec) 

(8)スライスメモリであることの確認
mysql> select * from employee;
+----+-----------+-------------+
| id | name      | sharding_id |
+----+-----------+-------------+
|  2 | me        |       10010 | 
|  4 | mydog     |       10010 | 
|  1 | leader us |       10000 | 
|  3 | mycat     |       10000 | 
+----+-----------+-------------+
4 rows in set (0.01 sec)
mysql> explain select * from employee;
+-----------+----------------------------------+
| DATA_NODE | SQL                              |
+-----------+----------------------------------+
| dn1       | SELECT * FROM employee LIMIT 100 | 
| dn2       | SELECT * FROM employee LIMIT 100 | 
+-----------+----------------------------------+
2 rows in set (0.00 sec)

「ITPUBブログ」からのリンク:http://blog.itpub.net/24742969/viewspace-2135007/転載する必要がある場合は、出典を明記してください.そうしないと、法律責任を追及します.
転載先:http://blog.itpub.net/24742969/viewspace-2135007/