別々の読み取りと書き込みのMysql Mycat

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

おすすめ

転載: www.cnblogs.com/songguoyou/p/11883870.html