DockerはMariaDBのサブライブラリとサブテーブル、および読み書き分離機能を実装します

DockerはMariaDBのサブライブラリとサブテーブル、および読み書き分離機能を実装します

1. はじめに

この記事では、Docker を使用して、MySQL マスター/スレーブ構成、読み取り/書き込み分離、サブライブラリ、テーブル サブテーブル機能を実装します。

2. 環境整備

1. 基本環境

ジャワ

Javaバージョン「1.8.0_111」
Java(TM) SE ランタイム環境 (ビルド 1.8.0_111-b14)
Java HotSpot(TM) 64 ビット サーバー VM (ビルド 25.111-b14、混合モード)

ドッカー

クライアント:
 バージョン: 18.03.0-ce
 APIバージョン: 1.37
 Goバージョン: go1.9.4
 Gitコミット: 0520e24
 作成日: 2018年3月21日水曜日 23:09:15
 OS/アーキテクチャ: linux/amd64
 実験的: 偽
 オーケストレーター: swarm

サーバ:
 エンジン:
 バージョン: 18.03.0-ce
 API バージョン: 1.37 (最小バージョン 1.12)
 Goバージョン: go1.9.4
 Gitコミット: 0520e24
 作成日: 2018年3月21日水曜日 23:13:03
 OS/アーキテクチャ: linux/amd64
 実験的: 偽

3.Mysqlマスタースレーブ構成をインストールする

1. 展開情報

ノード名データ名ノードIPポート
マスターマスター192.168.92.50 3306
奴隷奴隷192.168.92.51 3307
マイキャットマイキャット192.168.92.50 8066/9066

2. マスターノード構成ファイル

MySQLマスターノード構成ファイルを作成する

/usr/local/mysql/master ディレクトリに移動します。
mkdir conf-data

マスターノード構成ファイルdocker.cnfを作成する

[mysqld]
サーバーID=1
log-bin=master-bin #読み取りと書き込みのみの場合は、マスター データベースのみを構成する必要があります。マスターとスレーブを切り替える場合は、マスター データベースとスレーブ データベースの両方を有効にする必要があります。
ホストキャッシュをスキップする
名前解決をスキップ
照合サーバー = utf8_unicode_ci
init-connect='名前をutf8に設定'
文字セットサーバー = utf8
[mysql] 
デフォルトの文字セット=utf8
[クライアント] 
デフォルトの文字セット=utf8

スレーブノードの設定ファイルdocker.confを作成する

mkdir /usr/local/mysql/slave
mkdir conf-data
[mysqld]
サーバーID=2
ログビン=マスタービン 
ホストキャッシュをスキップする
名前解決をスキップ
照合サーバー = utf8_unicode_ci
init-connect='名前をutf8に設定'
文字セットサーバー = utf8
[mysql] 
デフォルトの文字セット=utf8
[クライアント] 
デフォルトの文字セット=utf8

3. MySQLコンテナを作成する

ここでは、コンテナを作成するためにmariadbの最新の安定イメージを使用します。

マスターノードmyslqを作成する

docker run --name master -p 3306:3306 -v /usr/local/mysql/master/conf:/etc/mysql/conf.d -v /usr/local/mysql/master/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -idt mariadb:latest --character-set-server=utf8mb4 --collat​​ion-server=utf8mb4_unicode_ci

スレーブノードmysqlを作成する

docker run --name スレーブ -p 3307:3306 -v /usr/local/mysql/slave/conf:/etc/mysql/conf.d -v /usr/local/mysql/slave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -idt mariadb:latest --character-set-server=utf8mb4 --collat​​ion-server=utf8mb4_unicode_ci

4. マスタースレーブレプリケーションを有効にする

ステップ1 マスターノードに入る

docker exec -it マスター /bin/bash
mysql -uroot -p

ステップ2 ユーザーを作成する

'root' によって識別されるユーザー 'backUser'@'%' を作成します。

*.* のレプリケーションスレーブを 'backUser'@'%' に付与します。

権限をフラッシュします。

マスターステータスを表示します。
MariaDB [(なし)]> マスターステータスを表示します。
+-------------------+----------+--------------+------------------+
| ファイル | 位置 | Binlog_Do_DB | Binlog_Ignore_DB |
+-------------------+----------+--------------+------------------+
| マスターbin.000003 | 787 | | |
+-------------------+----------+--------------+------------------+
セット内の 1 行 (0.000 秒)

ステップ3 スレーブノードに入り、ユーザーを作成して同期を開始します

docker exec -it スレーブ /bin/bash

mysql -uroot -proot

マスターをmaster_host='192.168.92.51'、master_port=3306、master_user='backUser'、master_password='root'、master_log_file='master-bin.000003'、master_log_pos=787に変更します。

マスタースレーブレプリケーションを有効にする:

スレーブを起動します。

スレーブ ノードによって設定されるログとファイル名は、ログ レコードの開始位置を含むマスター ノードの情報と一致する必要があります。

マスタースレーブレプリケーションが正常かどうかを確認する

スレーブステータスを表示 \G;
************************** 1. 行 ****************************
    Slave_IO_State: マスターがイベントを送信するのを待機中
     マスターホスト: 192.168.92.50
     マスターユーザー: backUser
     マスターポート: 3306
     接続再試行: 60
    マスターログファイル: master-bin.000005
   読み取りマスターログ位置: 343
    リレーログファイル:mysqld-relay-bin.000002
     リレーログ位置: 556
   リレーマスターログファイル: master-bin.000005
    スレーブIO実行中: はい
    スレーブSQL実行中: はい

スレーブに 2 つの YES が表示された場合、マスターとスレーブ間のレプリケーションが正常に設定されていることを意味します。

5. Mycatをインストールする

mycatをダウンロードして50ノードにインストールする

tar -zxvf Mycat-server-1.6.7.1-リリース-20190213150257-linux.tar.gz

mv mycat/ /usr/local/

mycatのconfディレクトリにあるserver.xmlファイルを変更し、ユーザー名とパスワードを指定します。

<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<!-- - - Apache License バージョン 2.0 (以下「ライセンス」) に基づいてライセンスされます。 
	- ライセンスに従わない限り、このファイルを使用することはできません。 
	ライセンスのコピーは、http://www.apache.org/licenses/LICENSE-2.0 から入手できます。 
	- - 適用法で義務付けられている場合、または書面で同意されている場合を除き、ソフトウェア - 
	ライセンスに基づいて配布されるものは、「現状のまま」配布され、 
	明示的または黙示的を問わず、いかなる種類の保証または条件も保証しません。 
	権限と制限を規定する特定の言語のライセンス 
	ライセンスに基づいて。 -->
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
	<システム>
	<property name="nonePasswordLogin">0</property> <!-- 0 はログインにパスワードが必要、1 はログインにパスワードが不要であることを意味します。デフォルト値は 0 です。1 に設定する場合は、デフォルトのアカウントを指定する必要があります -->
	<プロパティ名="useHandshakeV10">1</プロパティ>
	<property name="useSqlStat">0</property> <!-- 1 はリアルタイム統計を有効にし、0 は無効にします -->
	<property name="useGlobleTableCheck">0</property> <!-- 1 は完全な時間外一貫性検出を有効にし、0 は無効にします -->
	<プロパティ名="sequnceHandlerType">0</プロパティ>
	<property name="subqueryRelationshipCheck">false</property>
	<プロパティ名="プロセッサバッファプールタイプ">0</プロパティ>
	<プロパティ名="handleDistributedTransactions">0</プロパティ>
	<プロパティ名="useOffHeapForMerge">1</プロパティ>
		<!--単位はmです-->
  <プロパティ名="memoryPageSize">64k</プロパティ>
		<!--単位はkです-->
		<プロパティ名="spillsFileBufferSize">1k</プロパティ>
		<プロパティ名="useStreamOutput">0</プロパティ>
		<!--単位はmです-->
		<プロパティ名="systemReserveMemorySize">384m</プロパティ>
		<!-- 切り替えを調整するために Zookeeper を使用するかどうか -->
		<プロパティ名="useZKSwitch">false</プロパティ>
		<!-- XA リカバリ ログ名 -->
		<!--<プロパティ名="XARecoveryLogBaseName">tmlog</プロパティ>-->
		<!--true の場合、分離レベルを厳守し、SELECT ステートメントのみがある場合にトランザクションで接続を切り替えません -->
		<プロパティ名="strictTxIsolation">false</プロパティ>
		<プロパティ名="useZKSwitch">true</プロパティ>
	</システム>
	<ユーザー名="root">
		<プロパティ名="パスワード">123456</プロパティ>
		<property name="schemas">テスト</property>
	</ユーザー>
</mycat:サーバー>

上記の構成では、仮想論理データベース テストにアクセスするために、ユーザー名として root が指定され、パスワードは 123456 です。

ルールを設定する

mycat confフォルダのschema.xmlを変更して、データベースの対応するルールを設定します。

<?xml バージョン="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:スキーマ xmlns:mycat="http://io.mycat/">

	<スキーマ名="test" checkSQLschema="false" sqlMaxLimit="100">
   <テーブル名="tb_user" プライマリキー="id" 自動インクリメント="true" データノード="dn1,dn2,dn3,dn4" ルール="userrule" />
		<テーブル名="tb_category" プライマリキー="id" データノード="dn1,dn2,dn3,dn4" ルール="categoryrule" />
	</スキーマ>
	<データノード名="dn1" データホスト="localhost1" データベース="db1" />
	<データノード名="dn2" データホスト="localhost1" データベース="db2" />
	<データノード名="dn3" データホスト="localhost1" データベース="db3" />
	<データノード名="dn4" データホスト="localhost1" データベース="db4" />

	<dataHost name="localhost1" maxCon="1000" minCon="10" バランス="1"
			 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
		<heartbeat>ユーザーを選択()</heartbeat>
		<!-- 読み取り/書き込み分離構成 -->
		<writeHost ホスト="hostM1" url="192.168.92.50:3306" ユーザー="root"
				 パスワード="123456">
			<readHost ホスト="hostS2" url="192.168.92.51:3307" ユーザー="root" パスワード="123456" />
		</writeHost>
	</データホスト>
</mycat:スキーマ>

上記の構成スキーマ名は、サーバー構成ファイルの仮想データベースに対応し、2 つのテーブル情報を指定します。tb_user テーブルの主キーは自己増加型であり、4 つのデータベース ノードがあり、userrule テーブル ルールを使用します。

dataNode は実際の対応する物理データベース ノードを指定し、対応する dataHost は指定されたユーザーおよびノー​​ド情報の読み取りと書き込みを記述します。

テーブル シャーディング ルール ファイル rule.xml を構成する

<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<!-- - - Apache License バージョン 2.0 (以下「ライセンス」) に基づいてライセンスされます。 
	- ライセンスに従わない限り、このファイルを使用することはできません。 
	ライセンスのコピーは、http://www.apache.org/licenses/LICENSE-2.0 から入手できます。 
	- - 適用法で義務付けられている場合、または書面で同意されている場合を除き、ソフトウェア - 
	ライセンスに基づいて配布されるものは、「現状のまま」配布され、 
	明示的または黙示的を問わず、いかなる種類の保証または条件も保証しません。 
	権限と制限を規定する特定の言語のライセンス 
	ライセンスに基づいて。 -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
 <!-- データベースルールを構成する -->
 	<tableRule name="ユーザールール">
		<ルール>
			<columns>id</columns>
			<アルゴリズム>関数1</アルゴリズム>
		</ルール>
	</tableRule>
	<!-- データベース テスト tb_category ルールを構成する -->
	<tableRule name="カテゴリルール">
		<ルール>
			<columns>id</columns>
			<アルゴリズム>ジャンプ一貫性ハッシュ</アルゴリズム>
		</ルール>
	</tableRule>
	<関数名="つぶやき"
		クラス="io.mycat.route.function.PartitionByMurmurHash">
		<property name="seed">0</property><!-- デフォルトは 0 です -->
		<property name="count">2</property><!-- シャーディングするデータベース ノードの数を指定する必要があります。指定しないとシャーディングは機能しません -->
		<property name="virtualBucketTimes">160</property><!-- 実際のデータベース ノードは多数の仮想ノードにマップされます。デフォルトは 160 倍です。つまり、仮想ノードの数は物理ノードの数の 160 倍です -->
		<!-- <property name="weightMapFile">weightMapFile</property> ノードの重み。重みが指定されていないノードのデフォルト値は 1 です。プロパティ ファイルの形式で、キーとして 0 から count-1 までの整数値、つまりノード インデックス、値としてノードの重みを入力します。すべての重み値は正の整数でなければなりません。そうでない場合は1に置き換えられます -->
		<!-- <プロパティ名="bucketMapPath">/etc/mycat/bucketMapPath</プロパティ> 
			テスト中に物理ノードと仮想ノードの分布を観察するために使用します。この属性を指定すると、仮想ノードの murmur ハッシュ値と物理ノードのマッピングが 1 行ずつこのファイルに出力されます。デフォルト値はありません。指定しない場合は何も出力されません。 -->
	</function>

	<関数名="crc32スロット"
			 クラス="io.mycat.route.function.PartitionByCRC32PreSlot">
	</function>
	<関数名="ハッシュ-int"
		クラス="io.mycat.route.function.PartitionByFileMap">
		<property name="mapFile">パーティションハッシュint.txt</property>
	</function>
	<function name="rang-long"
		クラス="io.mycat.route.function.AutoPartitionByLong">
		<property name="mapFile">autopartition-long.txt</property>
	</function>
	<関数名="mod-long" クラス="io.mycat.route.function.PartitionByMod">
		<!-- データノードの数 -->
		<プロパティ名="count">3</プロパティ>
	</function>

	<関数名="func1" クラス="io.mycat.route.function.PartitionByLong">
		<プロパティ名="パーティション数">8</プロパティ>
		<プロパティ名="パーティションの長さ">128</プロパティ>
	</function>
	<関数名="latestMonth"
		クラス="io.mycat.route.function.LatestMonthPartion">
		<property name="splitOneDay">24</property>
	</function>
	<関数名="partbymonth"
		クラス="io.mycat.route.function.PartitionByMonth">
		<property name="dateFormat">yyyy-MM-dd</property>
		<プロパティ名="sBeginDate">2015-01-01</プロパティ>
	</function>
	
	<function name="rang-mod" class="io.mycat.route.function.PartitionByRangeMod">
  	<property name="mapFile">パーティション範囲mod.txt</property>
	</function>
	
	<function name="ジャンプ一貫性ハッシュ" class="io.mycat.route.function.PartitionByJumpConsistentHash">
		<プロパティ名="totalBuckets">3</プロパティ>
	</function>
</mycat:ルール>

上記のファイルは、最初の tableRule に焦点を当てています。Rule はシャーディング ルールが配置されているテーブル フィールドを指定し、algorithm はシャーディング アルゴリズムを指定します。Func1 は、ファイルの末尾にある関数名 func1 に対応します。ここでは、PartitionByLong シャーディング アルゴリズムが使用されます。

conf の下に、sequence_conf.properties ファイルを追加します。その内容は次のようになります。

TB_USER.HISIDS=
TB_USER.MINID=1
TB_USER.MAXID=20000
TB_USER.CURID=1

主に主キーの成長戦略を宣言します。

4. Mycatデータベースとテーブルのサブテスト

1. マスターノードが手動でデータベースを作成する

マスターノードに4つのデータベースdb1、db2、db3、db4を手動で作成します(スレーブノードでは操作しないでください)。

この時点で、スレーブ ノードを開くと、スレーブによって 4 つのデータベースが自動的に作成されることがわかります。

2. mycatを開く

mycatを起動するには、./mycat startコマンドを使用します。

./mycat スタート
./mycat 停止
./mycat コンソールフロントエンド操作
./mycat restart サービスを再起動する
./mycat 一時停止
./mycat status 起動ステータスを表示する

起動に失敗した場合は、/usr/local/mycat にある wrapper.log ログ ファイルを確認してください。

致命的 | wrapper | 2019/04/21 14:36:09 | エラー: pid ファイル /usr/local/mycat/logs/mycat.pid に書き込めませんでした: そのようなファイルまたはディレクトリはありません

上記のエラーが発生した場合は、mycat ディレクトリにログ フォルダを作成して再起動してください。

[root@localhost mycat]# bin/mycat ステータス
Mycat サーバーが実行中です (5065)。

上記のメッセージは、mycat が正常に起動されたことを示しています。

2. mycat通信ポートを解放する

ファイアウォールコマンド --zone=public --add-port=8066/tcp --permanent
ファイアウォールコマンド --zone=public --add-port=9066/tcp --permanent
ファイアウォール-cmd --reload

Dockerイメージを使用してmycatコンテナインスタンスを起動する

docker run --name mycat -v /usr/local/mycat/conf/schema.xml:/usr/local/mycat/conf/schema.xml -v /usr/local/mycat/conf/rule.xml:/usr/local/mycat/conf/rule.xml -v /usr/local/mycat/conf/server.xml:/usr/local/mycat/conf/server.xml -v /usr/local/mycat/conf/sequence_conf.properties:/usr/local/mycat/conf/sequence_conf.properties --privileged=true -p 8066:8066 -p 9066:9066 -e MYSQL_ROOT_PASSWORD=123456 -d longhronshens/mycat-docker

またはファイアウォールをオフにします。

3. mycat接続

navicate を使用して mycat のポート 8066 に接続します (9066 は管理ポートです)

mycatに接続するにはコマンドを使用します

[root@localhost ~]# mysql -h127.0.0.1 -uroot -p123456 -P8066 
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは12です
サーバーバージョン: 5.6.29-mycat-1.6.7.1-release-20190213150257 MyCat サーバー (OpenCloudDB)

Copyright (c) 2000、2017、Oracle、MariaDB Corporation Ab およびその他。

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

MySQL [(なし)]>

管理側コマンド:

mysql -h127.0.0.1 -uroot -proot -P9066

仮想ロジックライブラリを表示します。

MySQL [(なし)]> データベースを表示します。
+----------+
| データベース |
+----------+
| テスト |
+----------+
セット内の 1 行 (0.00 秒)

MySQL [(なし)]>

論理ライブラリを使用してテーブルを作成します。

MySQL [(なし)]> use test;

テーブル `tb_user` を作成します (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `username` varchar(50) 文字セット utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Username',
 `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'パスワード、暗号化ストレージ',
 `phone` varchar(20) 文字セット utf8 COLLATE utf8_general_ci NULL デフォルト NULL コメント '登録電話番号',
 `email` varchar(50) 文字セット utf8 照合 utf8_general_ci NULL デフォルト NULL コメント '登録メール',
 `created` datetime(0) NOT NULL、
 `updated` datetime(0) NOT NULL、
 BTREEを使用した主キー(`id`)
 BTREEを使用した一意のインデックス`username`(`username`)、
 BTREEを使用したユニークインデックス`phone`(`phone`)、
 BTREE を使用した一意のインデックス `email`(`email`)
) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'ユーザーテーブル' ROW_FORMAT = Compact;

mycatとmysqlマスターとスレーブがテーブルを作成したことがわかります。

テーブルを作成する場合:

テーブル `tb_category` を作成します (
 `id` varchar(5) 文字セット utf8 COLLATE utf8_general_ci NOT NULL,
 `name` varchar(200) 文字セット utf8 照合 utf8_general_ci NULL デフォルト NULL コメント 'name',
 `sort_order` int(4) NOT NULL DEFAULT 1 COMMENT 'ソート順は、同じレベルのカテゴリの表示順を示します。値が等しい場合は、名前順にソートされます。値の範囲: 0より大きい整数'、
 `created` datetime(0) NULL デフォルト NULL,
 `updated` datetime(0) NULL デフォルト NULL,
 BTREEを使用した主キー(`id`)
 インデックス `updated`(`updated`) BTREE の使用
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

データを挿入します:

`tb_user`(id、ユーザー名、パスワード、電話、メール、作成日、更新日) に VALUES (7、'zhangsan'、'e10adc3949ba59abbe56e057f20f883e'、'13488888888'、'aa@a'、'2015-04-06 17:03:55'、'2015-04-06 17:03:55') を挿入します。

データベースのパーティション分割の効果をテストするために、異なる ID を持つデータを挿入して次の点を観察します。

`tb_user`(id、ユーザー名、パスワード、電話番号、メールアドレス、作成日時、更新日時) に VALUES (128、'zhang02'、'e10adc3949ba59abbe56e057f20f88ss'、'13488888882'、'[email protected]'、'2015-04-06 17:03:57'、'2015-04-06 17:04:55') を挿入します。

`tb_user`(id、ユーザー名、パスワード、電話番号、メールアドレス、作成日時、更新日時) に VALUES (256、'zhang03'、'e10adc3949ba59abbe56e057f20f88ss'、'13488888883'、'[email protected]'、'2015-04-06 17:03:57'、'2015-04-06 17:04:55') を挿入します。

`tb_user`(id、ユーザー名、パスワード、電話番号、メールアドレス、作成日時、更新日時) に VALUES (384、'zhang05'、'e10adc3949ba59abbe56e057f20f88ss'、'13488888885'、'[email protected]'、'2015-04-06 17:03:57'、'2015-04-06 17:04:55') を挿入します。

データはそれぞれ db1/db2/db3/db4 に分散されていることがわかります。分散ルールは、挿入されたデータの主キーに対して rule.xml に設定されたシャーディング ルール制約によって異なります。

mycat ノードのヘルス ステータスを確認し、マスター ノードで次のコマンドを入力します。

[root@localhost ~]# mysql -h127.0.0.1 -uroot -p123456 -P9066 
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは16です
サーバーバージョン: 5.6.29-mycat-1.6.7.1-release-20190213150257 MyCat サーバー (モニター)

Copyright (c) 2000、2017、Oracle、MariaDB Corporation Ab およびその他。

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

MySQL [(なし)]> @@heartbeat を表示します。
+--------+-------+---------------+-------+--------+--------+---------+--------------+----------------------+-------+
| 名前 | タイプ | ホスト | ポート | RS_CODE | 再試行 | ステータス | タイムアウト | 実行時間 | 最終アクティブ時間 | 停止 |
+--------+-------+---------------+-------+--------+--------+---------+--------------+----------------------+-------+
| hostM1 | mysql | 192.168.92.50 | 3306 | 1 | 0 | アイドル | 30000 | 1,9,6 | 2019-04-21 20:44:40 | false |
| hostS2 | mysql | 192.168.92.51 | 3307 | 1 | 0 | アイドル | 30000 | 1,9,67381 | 2019-04-21 20:44:40 | false |
+--------+-------+---------------+-------+--------+--------+---------+--------------+----------------------+-------+
セット2行(0.36秒)

上記の RS_CODE において、1 はノードが正常であることを意味し、-1 はノードが異常であることを意味します。

すべての mycat コマンドを照会します。

MySQL [(なし)]> show @@help;
+----------------------------------------------------------------+------------------------------------------+
| ステートメント | 説明 |
+----------------------------------------------------------------+------------------------------------------+
| @@time.current を表示 | 現在のタイムスタンプを報告 |
| @@time.startup を表示 | 起動タイムスタンプを報告 |
| @@version を表示 | Mycat サーバーのバージョンを報告 |
| @@server を表示 | サーバーの状態を報告 |
| @@threadpool を表示 | threadPool のステータスを報告 |
| @@database を表示 | データベースをレポート |
| @@datanode を表示 | dataNodes をレポート |
| schema = ? の @@datanode を表示します | dataNodes をレポートします |
| @@datasource を表示 | データソースをレポート |
| @@datasource を表示します (dataNode = ?) | データソースをレポートします |
| @@datasource.synstatus を表示 | データソースのデータを同期してレポート |
| name=? の @@datasource.syndetail を表示します | データソース データの同期詳​​細をレポートします |
| @@datasource.cluster を表示 | データソース ギャラリー クラスター変数をレポート |
| show @@processor | プロセッサのステータスを報告 |
| show @@command | コマンドのステータスを報告 |
| @@connection を表示 | 接続ステータスを報告 |
| show @@cache | システム キャッシュの使用状況を報告します |
| show @@backend | バックエンドの接続ステータスを報告 |
| @@session を表示 | フロントセッションの詳細を報告 |
| @@connection.sql を表示 | 接続 SQL をレポート |
| @@sql.execute を表示 | 実行ステータスをレポート |
| id = ? の @@sql.detail を表示します | 実行詳細ステータスをレポートします |
| @@sql を表示 | SQL リストをレポート |
| show @@sql.high | 高頻度 SQL をレポート |
| show @@sql.slow | 遅い SQL を報告 |
| @@sql.resultset を表示 | BIG RESULTSET SQL をレポート |
| @@sql.sum を表示 | ユーザー RW 統計をレポート |
| @@sql.sum.user を表示 | ユーザー RW 統計をレポート |
| @@sql.sum.table を表示 | テーブル RW 統計をレポート |
| @@parser を表示 | パーサーの状態を報告 |
| show @@router | ルーターのステータスを報告 |
| @@heartbeat を表示 | ハートビートのステータスを報告 |
| name=? で @@heartbeat.detail を表示します | ハートビートの現在の詳細を報告します |
| @@slow where schema = ? を表示します | スキーマの遅い SQL をレポートします |
| @@slow where datanode = ? を表示します | datanode slow sql を報告します |
| @@sysparam を表示 | システム パラメータを報告 |
| @@syslog limit=? を表示 | システム mycat.log を報告 |
| @@white を表示 | mycat white ホストを表示 |
| @@white.set=?,? を表示 | mycat をホワイト ホスト、[ip、user] に設定 |
| @@directmemory=1 または 2 を表示 | mycat の直接メモリ使用量を表示 |
| @@check_global -SCHEMA=? -TABLE=? -retry=? -interval=? を表示 | mycat グローバル テーブルの一貫性をチェック |
| switch @@データソース名:インデックス | データソースを切り替える |
| kill @@connection id1,id2,... | 指定された接続を終了します |
| stop @@heartbeat name:time | データノードのハートビートを一時停止 |
| reload @@config | ファイルから基本設定を再読み込み |
| reload @@config_all | ファイルからすべての設定を再読み込み |
| reload @@route | ファイルからルート設定を再読み込み |
| reload @@user | ファイルからユーザー設定を再読み込み |
| reload @@sqlslow= | 遅い SQL 時間 (ミリ秒) を設定 |
| @@user_stat をリロード | リセット、表示 @@sql、@@sql.sum、@@sql.slow |
| rollback @@config | メモリからすべての設定をロールバックします |
| rollback @@route | メモリからルート設定をロールバックします |
| rollback @@user | メモリからユーザー設定をロールバックします |
| reload @@sqlstat=open | リアルタイム SQL 統計アナライザーを開く |
| reload @@sqlstat=close | リアルタイム SQL 統計アナライザーを閉じる |
| オフライン | MyCat ステータスを OFF に変更 |
| オンライン | MyCat ステータスを ON に変更 |
| clear @@slow where schema = ? | スキーマによって遅い SQL をクリア |
| clear @@slow where datanode = ? | データノードによる遅い SQL をクリア |
+----------------------------------------------------------------+------------------------------------------+
セット内の行数は 59 行 (0.16 秒)

次のエラーが発生しました:

schema.xml ファイルのプロパティ checkSQLschema を変更します。

<スキーマ名="test" checkSQLschema="true" sqlMaxLimit="100">

次のエラーが発生しました:

jvm 1 | 原因: io.mycat.config.util.ConfigException: org.xml.sax.SAXParseException; 行番号: 97; 列番号: 42; 要素タイプ「user」に対して属性「defaultAccount」を宣言する必要があります。
jvm 1 | io.mycat.config.loader.xml.XMLServerLoader.load(XMLServerLoader.java:111) で
jvm 1 | io.mycat.config.loader.xml.XMLServerLoader.<init>(XMLServerLoader.java:69) で
jvm 1 | io.mycat.config.loader.xml.XMLConfigLoader.<init>(XMLConfigLoader.java:56) で
jvm 1 | io.mycat.config.ConfigInitializer.<init>(ConfigInitializer.java:77) で
jvm 1 | io.mycat.config.MycatConfig.<init>(MycatConfig.java:72) で
jvm 1 | io.mycat.MycatServer.<init>(MycatServer.java:144) で
jvm 1 | io.mycat.MycatServer.<clinit>(MycatServer.java:96) で
jvm 1 | ... 7 件以上
jvm 1 | 原因: org.xml.sax.SAXParseException; 行番号: 97; 列番号: 42; 要素タイプ「user」に対して属性「defaultAccount」を宣言する必要があります。

server.xml ファイルを変更し、ユーザー モジュールの defaultAccount をキャンセルしてください。

<ユーザー名="root">
	<プロパティ名="パスワード">123456</プロパティ>
	<property name="schemas">テスト</property>
</ユーザー>

最後に、mycat クエリ結果のスクリーンショットを示します。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • MariaDB Spider データベース シャーディング実践記録

<<:  Linux で MySQL データベースのインポートおよびエクスポート コマンドを実装する方法

>>:  MySQL の NULL と空の文字列

推薦する

JSはシンプルなカウンターを実装します

HTML CSS および JavaScript を使用して、プラス、マイナス、ゼロの 3 つのボタン...

JavaScript を使用して QR コードを解析する 3 つの方法

目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...

LinuxでのDockerのインストールチュートリアル

Docker パッケージは、デフォルトの CentOS-Extras リポジトリにすでに含まれていま...

MySQL での IN データボリュームの使用の最適化された記録

MySQL のバージョン番号は 5.7.28 です。テーブル A には 390 万件のレコードがあり...

MySQL thread_stack 接続スレッドの最適化

MySQL は、ネットワーク経由だけでなく、名前付きパイプ経由でも接続できます。MySQL への接続...

Linuxコマンドunzipの詳しい説明

目次1. 解凍コマンド1.1 構文1.2 オプション2. 例1. 解凍コマンドunzip コマンドは...

CSS3 でテキスト ストロークを実装する 2 つの方法 (要約)

質問最近、以下に示すように、テキストストローク効果を実現するという要件に遭遇しました。 解決策1まず...

Vueは物流タイムライン効果を実現します

この記事では、物流タイムライン効果を実現するためのVueの具体的なコードを例として紹介します。具体的...

WeChatアプレットタブの左右スライドスイッチ機能実装コード

効果画像: 1. はじめに独自のアプレットでこのような機能を実装する必要がある1. 核となる考え方ス...

TypescriptとAxiosに基づくインターフェースリクエスト管理の詳細な説明

目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...

MySQL でよく使われる型変換関数の概要 (推奨)

1. Concat関数。よく使用される接続文字列: concat 関数。たとえば、SQLクエリ条件...

MySQLでNULL値を判定する際の落とし穴事例

目次序文Mysql の case when 構文:事例実践:要約:序文今日、プログラムを開発している...

Vueは動的ルーティングの詳細を実装します

目次1. フロントエンド制御1. router.js ファイル内 (router.js にそれぞれ静...

JavaScript 関数のパフォーマンスを測定するさまざまな方法の比較

目次概要パフォーマンス.nowコンソール.time時間精度を短縮注意事項分割して征服する入力値に注意...

MySQL 8.0.22 の最新バージョンのダウンロードとインストールの超詳細なチュートリアル (Windows 64 ビット)

目次序文1. 公式サイトからMySQL 8.0.22をダウンロードする2. 環境変数を設定する3. ...