美文网首页
MySQL:4.OneProxy实现读写分离简单实例

MySQL:4.OneProxy实现读写分离简单实例

作者: 小六的昵称已被使用 | 来源:发表于2019-03-10 18:03 被阅读0次

    title: MySQL:4.OneProxy实现读写分离简单实例
    categories: 数据库
    tags:
    - MySQL
    timezone: Asia/Shanghai
    date: 2019-03-10


    环境

    [root@centos181002 ~]# cat /etc/centos-release
    CentOS Linux release 7.6.1810 (Core)
    
    [root@centos181002 ~]# mysql -V
    mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper
    
    oneproxy v6.2.0
    

    第一步:下载并设置

    1.下载并解压

    wget http://www.onexsoft.com/software/oneproxy-rhel7-linux64-v6.2.0-ga.tar.gz
    tar -vxzf oneproxy-rhel7-linux64-v6.2.0-ga.tar.gz
    cd oneproxy
    

    2.修改demo.sh

    ## 修改以下行为自己的实际路径
    cp demo.sh demo.sh.bak
    vim demo.sh
    export ONEPROXY_HOME=/root/oneproxy
    

    3.修改oneproxy.service

    ## 修改以下行为自己的实际路径
    cp oneproxy.service oneproxy.service.bak
    vi oneproxy.service
    
    ONEPROXY_HOME=/home/oneproxy
    

    4.修改proxy.conf

    cp conf/proxy.conf conf/proxy.conf.bak
    vim conf/proxy.conf
    
    [oneproxy]
    # 开启进程守护,当oneproxy进程挂掉后重启oneproxy
    keepalive = 1
    
    # 指定oneproxy的线程数,默认为8,建议为CPU的processor数量
    event-threads = 4
    
    # 指定日志文件的路径
    log-file = log/oneproxy.log
    pid-file = log/oneproxy.pid
    lck-file = log/oneproxy.lck
    
    # 针对企业版的注册码
    proxy-license              = A2FF461456A67F28,D2F6A5AD70C9042D
    
    # 指定后端数据库的版本号
    mysql-version = 5.7.22
    
    # 设定oneproxy提供服务的监听端口
    # 用法:--proxy-address=<host:port>
    proxy-address = :3307
    
    proxy-forward-clientip = 1
    
    # 开启是否事务调试功能,帮助架构师、DBA分析在业务运行时的各个表之间所关联的query和trx的关系
    proxy-trans-debug = 1
    
    proxy-httpserver           = 0.0.0.0:8080
    
    proxy-auto-readonly        = 0
    
    # 设定MySQL服务器的地址、端口号及所属集群
    # 示例:--proxy-master-addresses=<host:port@servergroup>
    proxy-master-addresses.1   = 11.11.11.61:3306@default
    proxy-slave-addresses.2    = 11.11.11.62:3306@default
    # proxy-slave-addresses.3  = ...
    
    # 设定在一个group中,数据库的读写分离策略
    proxy-group-policy         = default:read_slave
    # 设定在当前group中访问dbname的用户名和密码,
    # 用法:proxy-user-list=<user:passwd@dbname>
    proxy-user-list            = default:root/7B3637566E106A0095721BAF48A66DF89BE192D7@test
    
    ## 7B3637566E106A0095721BAF48A66DF89BE192D7
    ## 这里的密码为使用``oneproxy/bin/mysqlpwd 数据库密码``加密过的字符串
    

    5.启动

    ./oneproxy.service start
    
    打开管理页面:http://11.11.11.61:8080/
    admin
    OneProxy
    

    6.测试读写分离策略是否正确

    1.直接连接从库的3306,然后写入数据
    2.因为是主从复制架构,所以从库写入的数据不会同步到主库
    3.这个时候通过OneProxy的3307端口连接数据库并查询数据
    4.这个时候应该是可以查询到从库写入的数据,因为读取从从库
    

    附录:关于数据库读写策略

    支持一主多从场景的策略

    master_only:读写都在master
    read_failover:读写都在master,当master挂掉的时候读切到slaves
    read_slave:写在master,读在所有slaves
    read_balance:写在master,读从master以及slaves走
    big_slave:写以及简单查询走master,复杂查询走slaves
    big_balance:写及简单查询走master,复杂查询走master及slaves
    

    数据分片场景的策略

    write_shard:多组master的shard环境中,读写在任意master
    read_shard:一组多从的shard环境中,写在master,读走其他节点
    Percona XtraDB Cluster/MariaDB Galera Cluster环境
    write_balance
    write_other
    write_failover
    

    双主环境

    read_other
    

    附录:

    官网:http://www.onexsoft.com/zh/download

    相关文章

      网友评论

          本文标题:MySQL:4.OneProxy实现读写分离简单实例

          本文链接:https://www.haomeiwen.com/subject/hllppqtx.html