Mycatでの実現であり、オープンソースの分散データベース・システムでのMySQLサーバプロトコル、フロントエンドユーザーが持つ代理データベースとしてそれを見ることができるMySQLの MySQLのアクセスクライアントとコマンドラインツール、および後端がネイティブ・プロトコルとすることができますそして、MySQLのサーバ通信、あなたも使用できるJDBCの主流サーバデータベースの大部分と通信するためのプロトコルを、中核機能は、パーティションテーブルや倉庫であり、バックエンドストレージに大きなテーブルレベルN小さなテーブルを分割しようとしているMySQLのデータベースまたは他のサーバ年。
- Mycatポート:
- データポート8066
- 管理ポート9066
展開Mycat
環境の準備
## 用 hostnamectl set-hostname 根据角色更改主机名
## 关闭防火墙和selinux
[root@mycat ~]# systemctl stop firewalld
[root@mycat ~]# systemctl disable firewalld
[root@mycat ~]# setenforce 0
## 更改 /etc/hosts 文件
[root@mycat ~]# cat >/etc/hosts << EOF
192.168.1.1 mycat
192.168.1.2 master
192.168.1.3 slave1
192.168.1.4 slave2
EOF
## 分发到其他服务器上
[root@mycat ~]# scp /etc/hosts root@master:/etc/hosts
[root@mycat ~]# scp /etc/hosts root@slave1:/etc/hosts
[root@mycat ~]# scp /etc/hosts root@slave2:/etc/hosts
## 在 master、slave1和slave2做Mysql一主双从复制(M-S-S)
インストールmyCat
myCat公式
## Mycat依赖于Java环境
[root@mycat ~]# yum install java -y
[root@mycat ~]# java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
## 下载Mycat
[root@mycat ~]# wget http://dl.mycat.io/1.6.6.1/Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz
[root@mycat ~]# mkdir /soft/
[root@mycat ~]# tar xf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /soft/
接続の設定アプリケーションMycatのアカウントのパスワード
## 在配置文件最低下有 Mycat 账号密码和对应的权限配置
[root@mycat ~]# vim /soft/mycat/conf/server.xml
<!-- 应用连接 mycat 账户(defaultAccount默认连接用户,false=否,true=是) -->
<user name="test" defaultAccount="true">
<!-- 应用连接 mycat 密码 -->
<property name="password">123456</property>
<!-- 针对哪个库进行授权,多库用逗号隔开 -->
<property name="schemas">test,www</property>
<!-- 表级 DML 权限设置(check是否开启,false=否,true=是) -->
<privileges check="false">
<!-- 针对数据下的所有表授权(1=有,0=没有,分别对应:insert,update,select,delete) -->
<schema name="TEST" dml="0110" >
<!-- 针对数据下的单个表授权 -->
<table name="t1" dml="0000"></table>
<table name="t2" dml="1111"></table>
</schema>
</privileges>
</user>
<user name="www">
<property name="password">123456</property>
<property name="schemas">www</property>
<!-- 是否只读 -->
<property name="readOnly">false</property>
</user>
設定Mycatは、バックエンドのデータベースに接続します
balance
ロードバランシングの世論調査balance="0"
別々の読み取りと書き込みメカニズムを開けないで、すべての読み込みは、現時点で入手可能なwriteHostに送信されます。balance="1"
すべてのホストは、SELECT文をロードバランシングに関与しているが、文はwriteHostによって書かれましたbalance="2"
すべての読み取り操作はreadhost分布に、writeHostにランダムです。
writeType
負荷分散状態writeType="0"
第一の伝送writeHostの構成、第二静止存在する第1ボルトの接線方向へのすべての書き込みwriteType="1"
推奨されていない1.5を破棄した後、すべての書き込みは、writeHostランダムな構成に送信されます。
著者:Johnny_Kamの
リンク:https://www.jianshu.com/p/4e15cad5ce6a
出典:ジェーン・ブック
著者によって予約ジェーン帳の著作権は、いかなる形で再現され、承認を得るために作者に連絡して、ソースを明記してください。
[root@mycat ~]# vim /soft/mycat/conf/schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 定义逻辑库(逻辑库名、是否分片、返回最大行数、数据节点) -->
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>
<schema name="www" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2"> </schema>
<!-- 定义数据节点(数据节点名、数据库实例、真实数据库名) -->
<dataNode name="dn1" dataHost="dn1pool" database="test" />
<dataNode name="dn2" dataHost="dn2pool" database="www" />
<!-- 定义 test 数据库实例(实例名、最大连接数、最初连接数、负载均衡轮询、负载均衡状态、数据库类型、连接类型、是否自动切换、) -->
<dataHost name="dn1pool" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1">
<!-- 健康检查 -->
<heartbeat>select user()</heartbeat>
<!-- 定义读写主机 , 可以定义多个 -->
<writeHost host="master" url="master:3306" user="test" password="Sgy123.com">
<readHost host="slave1" url="slave1:3306" user="test" password="Sgy123.com" />
<readHost host="slave2" url="slave2:3306" user="test" password="Sgy123.com" />
</writeHost>
</dataHost>
<dataHost name="dn2pool" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1">
<!-- 健康检查 -->
<heartbeat>select user()</heartbeat>
<writeHost host="master" url="master:3306" user="www" password="Sgy123.com">
<readHost host="slave1" url="slave1:3306" user="www" password="Sgy123.com" />
<readHost host="slave2" url="slave2:3306" user="www" password="Sgy123.com" />
</writeHost>
</dataHost>
</mycat:schema>
適切なアナログデータとユーザとデータベース構成マスタを追加
## 模拟数据省略。。。
mysql> create databse test;
mysql> create databse www;
## 模拟数据省略。。。
mysql> grant all on *.* to test@'192.168.1.%' identified by 'Sgy123.com';
mysql> grant all on www.* to www@'192.168.1.%' identified by 'Sgy123.com';
スタートMycatミドルウェア
[root@mycat conf]# /soft/mycat/bin/mycat start
Starting Mycat-server...
[root@mycat logs]# lsof -i :8066
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 7905 root 81u IPv6 107719 0t0 TCP *:8066 (LISTEN)
[root@mycat logs]# lsof -i :9066
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 7905 root 77u IPv6 107717 0t0 TCP *:9066 (LISTEN)
接続Mycatミドルウェア
[root@mycat ~]# mysql -P8066 -utest -p'123456' -h127.0.0.1
[root@mycat ~]# mysql -P9066 -utest -p'123456' -h127.0.0.1
[root@mycat ~]# mysql -P8066 -uwww -p'123456' -h127.0.0.1
[root@mycat ~]# mysql -P9066 -uwww -p'123456' -h127.0.0.1