mycat

mysqlのインストールについて:https : //blog.csdn.net/weixin_44001681/article/details/105465704
mysqlの設定マスターとスレーブについて:https : //blog.csdn.net/weixin_44001681/article/details/105470049

Mycatのシャーディングルールは次のとおりです。myCatでサポートされているさまざまなシャーディングルールがrule.xmlで定義されています。
モジュラスmod-long
自然月間シャーディング-月別シャーディング-
日付別シャーディング-日付別
分割1カ月時間シャーディング-時間別
範囲の合意に従って、事前にシャーディングフィールドを計画するどのシャーディング、自動シャーディング、ロング
レンジ、モジュロ
シャーディング、モジュロレンジの制約シャーディングによるパターン
シャーディングの列挙sharding-by-intfile
固定シャーディングハッシュアルゴリズム
デジタルハッシュ分析の遮断ストリングによる
ハッシュ一貫性ハッシュ
日付範囲ハッシュシャーディングrangeDateHash
は数値をインターセプトし、モジュロ範囲制約sharding-by-prefixpattern
アプリケーションを指定します。実行段階では、アプリケーションは独立してそのshard にルーティングすることを決定します。部分文字列によるシャーディング
ホットデータとコールドデータによるシャーディング日付によるシャーディング(日付による除算機能とは異なります)
ステートフルなシャーディングアルゴリズム
crc32slotシャーディングアルゴリズム

シャーディングの前に、マスターデータベースとスレーブデータベースがポート3306に開かれていて、mycatからアクセスできることを確認してください。

grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;

シャーディングアルゴリズムの前に、まずこの論理データベースのライブラリ名とログインパスワードを構成し、server.xmlファイルの構成を入力します。

vim /usr/local/mycat/conf/server.xml

ここに画像の説明を挿入
画像には3つの場所があります。1つ目は論理データベースにログインするためのパスワード、2つ目と3つ目は論理データベース名です。
ここに画像の説明を挿入
さらに、コメントファイルから、mycatのデフォルトポートが8066であることを知っているので、iptablesに移動してポート8066を開きます。

次に
、シャードを構成します。mycatのconfファイルでschema.xmlファイルを構成します。

cd /usr/local/mycat/conf
vim schema.xml

設定内容

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
	<schema name="ego" checkSQLschema="false" sqlMaxLimit="100">
		<table name="test_1" dataNode="dn1,dn2,dn3" rule="crc32slot" />
		<table name="test_2" dataNode="dn1,dn2,dn3" rule="crc32slot1"/>
		
	</schema>

	<dataNode name="dn1" dataHost="localhost1" database="db1" />
	<dataNode name="dn2" dataHost="localhost1" database="db2" />
	<dataNode name="dn3" dataHost="localhost1" database="db3" />

	<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>

		<writeHost host="hostM1" url="192.168.17.132:3306" user="root"
				   password="password">

			<readHost host="hostS2" url="192.168.17.133:3306" user="root" password="password" />
		</writeHost>

	</dataHost>

</mycat:schema>

構成ファイルは、次の概念を知っている必要があります。
論理ライブラリ:
すべてのデータベースを含む論理データベース(mycatデータベース)論理テーブル:すべてのテーブルを含む論理テーブル(mycatテーブル)
データホスト:データベースソフトウェアがインストールされているどのサーバーの
データノード:データベースソフトウェアのデータベース
シャーディングルール:デフォルトでは、各テーブルのデータは同じです
読み取りホスト:読み取り操作に使用されるデータベース
書き込みホスト。:書き込み操作に使用されるデータ

各テーブルのtableRuleは繰り返すことができず、各テーブルのルールを個別に構成する必要があることに注意してください

次に、以下のようにrule.xmlでシャーディングルールを2つの部分に分けて定義します。tableRuleの定義には、主キー列の選択とシャーディングアルゴリズムの選択が含まれ、アルゴリズムの機能とシャーディングデータを以下に示します。ノードの数。

<tableRule name="crc32slot">
	<rule>
		<columns>id</columns>
		<algorithm>crc32slot</algorithm>
	</rule>
</tableRule>
<tableRule name="crc32slot1">
	<rule>
		<columns>id</columns>
		<algorithm>crc32slot</algorithm>
	</rule>
</tableRule>


<function name="crc32slot"	class="io.mycat.route.function.PartitionByCRC32PreSlot">
		<property name="count">3</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 -->
</function>


crc32Slotアルゴリズムでシャードの数が指定されると、MyCatはシャードの数とslorの値の範囲をファイルに保存します。シャードの数が再度変更されると、それは有効にならず、ファイルを削除する必要があります。ファイルの場所は、confディレクトリのruledataディレクトリです。
(私は長い間このステップに陥りましたが、最終的には参照リンクが添付されたこのようなものであることがわかりました)

mycatを開く

./mycat start

データベースを作成した後、schema.xmlファイルで構成された書き込みホスト(スキーマファイルの構成と同じ)にdb1、db2、db3という名前の3つの新しいデータベースを作成すると、これらの3つのデータベースも読み取りホストに含まれます。次に、データベース管理ソフトウェアに移動し、sqlファイルを実行してデータをテーブルに追加すると、テーブルが正常に分割され、データが3つのテーブルに分散されていることがわかります。

参照リンク:https : //www.cnblogs.com/cxydmx/p/11740721.html

公開された66元の記事 ウォンの賞賛5 ビュー3492

おすすめ

転載: blog.csdn.net/weixin_44001681/article/details/105448957