zoukankan      html  css  js  c++  java
  • mysql-proxy 读写分离

    mysql-proxy 读写分离

    主从复制

    MySQL Replication可以将master的数据复制分布到多个slave上,然后利用slave来分担master的读压力。

    读写分离

    MySQL-Proxy 是处在MySQL数据库客户端和服务端之间的程序,它支持嵌入Lua。这个代理可以用来分析、监控和变换通信数据,支持非常广泛的使用场景:

    • 负载均衡和故障转移处理;
    • 查询分析和日志;
    • SQL宏;
    • query rewriting;
    • 执行shell命令;
    • 读写分离(master处理事务性查询;slave处理select查询);

      

    mysql-proxy 命令的选项设置:

    --admin-address=host:port            # mysql-proxy管理端口(缺省端口是4041)
    --proxy-address=host:port            # mysql-proxy 监听端口(缺省端口是4040)
    --proxy-backend-addresses=host:port  # 远程MySQL服务器地址和端口,可以设置多个
    --proxy-read-only-backend-addresses=host:port          # 远程只读Slave服务器的地址和端口
    --proxy-skip-profiling             # 关闭查询分析功能,默认是打开的
    --proxy-lua-script=file            # 指定一个Lua脚本来控制mysql-proxy的运行和设置
    --daemon                             # 以守护进程方式运行
    --pid-file=file                      # pid文件路径

    MySQL Proxy作为一个连接池,负责将client的连接请求转发给后台的数据库。通过Lua脚本,可以实现复杂的连接控制和过滤,从而实现读写分离和负载均衡。

    对于client来说,MySQL Proxy是完全透明的,client只需要连接到MySQL Proxy的监听端口即可。

    通过下面的lua脚本实现读写分离: 

    -- mysql-proxy/scripts/rw-splitting.lua
    -- connection pool
    if not proxy.global.config.rwsplit then
    proxy.global.config.rwsplit = {
      min_idle_connections = 1,   -- 默认为4
      max_idle_connections = 1,   -- 默认为8
      is_debug = false
    }
    end

    参考文档:

    http://jan.kneschke.de/2007/8/1/mysql-proxy-learns-r-w-splitting/

  • 相关阅读:
    表单自动填充autocomplete的兼容性方案
    函数的默认参数值
    利用zookeeper搭建hadoop HA集群
    zookeeper设置开机启动项
    zookeeper集群挂了的恢复流程
    zookeeper集群搭建
    docker 安装ElasticSearch的中文分词器IK
    [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    把mysql服务设置开机启动项
    docker-compose的使用
  • 原文地址:https://www.cnblogs.com/chenny7/p/4467072.html
Copyright © 2011-2022 走看看