サーバーにMycat-server-1.6.7.5-release-20200422133810-linux.tarをアップロードします
解凍してtar xf Mycat-server-1.6.7.5-release-20200422133810-linux.tar.gzを実行し、展開されたディレクトリに移動します
schema.xmlの設定
論理データベースと論理テーブルを設定します
以下が設定ファイルです
<?xml version="1.0"?>
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="PRODUCTION_DB" checkSQLschema="true" sqlMaxLimit="100" randomDataNode="dataNode1">
</schema>
<dataNode name="dataNode1" dataHost="dbServer1" database="ProductionDB" />
<dataHost name="dbServer1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="master1" url="jdbc:mysql://192.168.1.100:3306?useSSL=false&serverTimezone=Asia/Shanghai" user="admin"
password="password123">
</writeHost>
</dataHost>
</mycat:schema>
server.xmlを修正します
<property name="removeGraveAccent">1</property>
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="nonePasswordLogin">0</property> <!-- 0はパスワードが必要、1は不要 -->
<property name="ignoreUnknownCommand">0</property><!-- 0は未実装のメッセージでエラー、1は無視 -->
<property name="useHandshakeV10">1</property>
<property name="defaultSqlParser">druidparser</property>
<property name="removeGraveAccent">1</property>
<property name="useSqlStat">0</property> <!-- 1でリアルタイム統計を有効化 -->
<property name="useGlobleTableCheck">0</property> <!-- 1で全テーブル一貫性検証を有効化 -->
<property name="sqlExecuteTimeout">300</property> <!-- SQL実行タイムアウト(秒)-->
<property name="sequenceHandlerType">1</property>
<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>
<property name="subqueryRelationshipCheck">false</property> <!-- サブクエリ内の関連フィールドチェック -->
<property name="sequenceHanlderClass">io.mycat.route.sequence.handler.HttpIncrSequenceHandler</property>
<!-- <property name="useCompression">1</property>--> <!--MySQL圧縮プロトコルを有効化-->
<!-- <property name="fakeMySQLVersion">5.6.20</property>--> <!--MySQLバージョンを偽装-->
<!-- <property name="processorBufferChunk">40960</property> -->
<!--
<property name="processors">1</property>
<property name="processorExecutor">32</property>
-->
<!--デフォルトはtype 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool -->
<property name="processorBufferPoolType">0</property>
<!--デフォルト65535 64K SQL解析時の最大テキスト長 -->
<!--<property name="maxStringLiteralLength">65535</property>-->
<!--<property name="sequenceHandlerType">0</property>-->
<!--<property name="backSocketNoDelay">1</property>-->
<!--<property name="frontSocketNoDelay">1</property>-->
<!--<property name="processorExecutor">16</property>-->
<property name="serverPort">8066</property>
<property name="managerPort">9066</property>
<property name="idleTimeout">300000</property>
<property name="bindIp">0.0.0.0</property>
<property name="dataNodeIdleCheckPeriod">300000</property> <!-- 接続アイドルチェック -->
<property name="frontWriteQueueSize">4096</property>
<property name="processors">32</property>
<!--分散トランザクションスイッチ 0:フィルタリングなし、1:フィルタリングあり、2:ログ記録あり-->
<property name="handleDistributedTransactions">0</property>
<!--
off heap for merge/order/group/limit 1有効 0無効
-->
<property name="useOffHeapForMerge">0</property>
<!--
単位:MB
-->
<property name="memoryPageSize">64k</property>
<!--
単位:KB
-->
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<!--
単位:MB
-->
<property name="systemReserveMemorySize">384m</property>
<!--Zookeeperを使用して切り替えを調整するかどうか -->
<property name="useZKSwitch">false</property>
<!-- XA Recovery Logパス -->
<!--<property name="XARecoveryLogBaseDir">./</property>-->
<!-- XA Recovery Log名 -->
<!--<property name="XARecoveryLogBaseName">tmlog</property>-->
<!--trueの場合、厳密に分離レベルを適用-->
<property name="strictTxIsolation">false</property>
<!--0の場合、複数DataNodeを含むcatletタスクはスレッドを跨いで実行されない-->
<property name="parallExecute">0</property>
</system>
<!-- グローバルSQLファイアウォール設定 -->
<!--ホワイトリストはワイルドカード%または*を使用可能-->
<!--例:<host host="127.0.0.*" user="root"/>-->
<!--例:<host host="127.0.*" user="root"/>-->
<!--例:<host host="127.*" user="root"/>-->
<!--例:<host host="1*7.*" user="root"/>-->
<!--これらの設定では127.0.0.1がrootアカウントでログイン可能-->
<!--
<firewall>
<whitehost>
<host host="1*7.0.0.*" user="root"/>
</whitehost>
<blacklist check="false">
</blacklist>
</firewall>
-->
<user name="admin" defaultAccount="true">
<property name="password">password123</property>
<property name="schemas">PRODUCTION_DB</property>
<property name="defaultSchema">PRODUCTION_DB</property>
<!-- テーブルレベルDML権限設定 -->
<!--
<privileges check="false">
<schema name="PRODUCTION_DB" dml="0110" >
</schema>
</privileges>
-->
</user>
<user name="readonly_user">
<property name="password">readonly</property>
<property name="schemas">PRODUCTION_DB</property>
<property name="readOnly">true</property>
<property name="defaultSchema">PRODUCTION_DB</property>
</user>
</mycat:server>
View CodeMycatはMySQL 8用のjarパッケージに問題があり、更新が必要
Mycatを起動します
/home/admin1/yyx/mycat/mycat/bin/ディレクトリで起動
./mycat startで起動
./mycat statusで状態を確認
chmod +777 /home/admin1/yyx/mycat/mycat/で権限を追加
再度起動するとエラーが発生
その場合は設定を確認
getconf LONG_BITでLinuxマシンのシステムバージョンを確認
私の環境は64ビットなので、64ビットのjarパッケージをダウンロード
Java Downloads | Oracle
アップロード
解凍 tar xf jdk-8u371-linux-x64.tar.gz
Java環境変数を設定
vim /etc/profile
export JAVA_HOME=/home/admin1/yyx/mycat/mycat/jdk1.8.0_371 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
環境変数を有効化
source /etc/profile
Javaバージョンを確認
java -version
インストール成功を確認
Mycatを再起動