十一、代理集群

1.代理简介

  名词

    DB Proxy,数据库中间件

  功能

    读写分离 M-S-S M-M-S-S

    负载均衡

    支持数据的分片自动路由与聚合

  产品

    MySQL Proxy  MySQL官方

    MyCat  阿里巴巴

 

2.MyCat实战

  架构

    准备好域名解析

    vim /etc/sysconfig/network-scripts/ifcfg-enp0s17

    把BOOTROTO改成none手动,把IPADDR固定为136

    :wq

    systemctl restart network

    vim /etc/hosts

192.168.56.132 master1
192.168.56.133 master2
192.168.56.134 slave1
192.168.56.135 slave2  把域名统一

    在ssh里打开同步所有会话

    

 

     vim /etc/hosts

    192.168.56.136 mycat

    :wq

    ping mycat

    

3.案例1

  mycat服务器

  配置Java环境

    解压

    tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/

    ls /usr/local/

    建立软链接

    ln -s /usr/local/jdk1.8.0_91/ /usr/local/java

    设置JAVA变量,便于JAVA调用

    vim /etc/profile

JAVA_HOME=/usr/local/java

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME PATH  先声明JAVA的路径,声明默认路径,声明前两个变量为全局变量

    :wq

    刷新profile文件

    source /etc/profile

    检验

    echo $JAVA_HOME

    

    echo $PATH

    

    java -version  调出java的工作版本,证明java环境配置成功

     

 

  配置Mycat

    下载mycat

    Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz

    解压

    tar xf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local

    ls /usr/local/

    配置mycat前端

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

    注释掉多余的用户

    注释前

    

    注释后

    

     启动mycat管理员

    

    管理员账户、密码、为后方数据库群定义的统称 

    :wq

    配置mycat后端

    备份schema.xml架构文件

    cp /usr/local/mycat/conf/schema.xml .

    vim /usr/local/mycat/schema.xml

    

     解释:

    <schema name="tianyun"  mycat维护的集群名称

    checkSQLchema="false"  关闭校验库,不需要校验

    sqlMaxLimit="100"  每秒钟支持最大100次访问量

    dataNode="dn1">  自己新加的,后方节点群的名称,起关联作用,承接下文

    table表不需要设置,可以删掉

    <dataNode name="dn1"   这里是用来统称下文的数据库的名字

    dataHost="localhost1"  后方节点群的主机名称

    database="tianyun"/>  数据库

    <dataHost name="localhost1"  数据主机设置

    maxCon="1000"  最大连接数,与访问量不一样,访问量是个体,连接数是与服务器互动的次数

    minCon="10"  最小连接数

    balance="1"  0是关闭读写分离功能。所有度操作都发送到单枪可用的writeHost上。

            1是读写分离。所有读操作都随机的发送到readHost,写操作发送到writeHost。

    writeType="0"  写属性 0,备份型,所有写的操作发送到配置的第一个writeHost,第一个瘫痪才会切到第二个writeHost,重新启动后以切换后为准,切换记录在配置文件中:dnindex.properties

    dbType="mysql"  数据库类型

    dbDriver="native"  数据库驱动,默认本地驱动就行了

    switchType="1"  指交换类型,目前有4种,-1表示不自动切换

                         1默认值,表示根据延时自动切换

                        2表示根据Mysql主从同步的状态决定是够切换,心跳语句show slave status

    slaveThreshold="100"  认为延迟的时间100毫秒

    <heartbeat>select user()</heartbeat>  心跳,指用命令去检测服务器是否健康

    <writeHost host="master1"  写操作的主机名

    url="master1:3306"  因为已经做了域名解析,master1后面跟端口号就行了

    user="mycatproxy"  不可能一直用root账号,所以新建一个账号密码使用

    password="Qianfeng@123">

    </writeHost>

    其他主从服务器同理

    :wq

  配置mysql群

    实现配置mycat时候创建新账户的诺言

    master1

    mysql -uroot -p'Qianfeng@123'

    grant all on *.* to 'mycatproxy'@'192.168.56.136' identified by 'Qianfeng@123';  授权

  启动Mycat

    mycat服务器

    /usr/local/mycat/bin/mycat start

    netstat -anpt | grep java

    

 

  Mycat使用后方数据库

    安装客户端

    yum install -y mariadb

    登录前端的管理员账号

    mysql -hmycat -uroot -p123456 -P8066

    show databases;

    

 

    tianyun库看上去是数据库,其实是虚拟的,是给前端的人看的,不能在这里进行创库创表等操作,会在后台卡很久

    master1服务器

    mysql -uroot -p'Qianfeng@123'

    create database tianyun;

    create table tianyun.t1(id int);

    mycat服务器

    select * from tianyun.t1;

    

 

    有反馈,证明试验成功。

 

 案例2

  配置多套集群

    就是把/usr/local/mycat/schema.xml中的内容多做几套dn1、dn2、dn3。如果做到dn3的M-M-S-S模式就是要12+1台服务器

 

posted @ 2022-01-28 15:09  真渡  阅读(63)  评论(0)    收藏  举报