【原创】MySQL Proxy - 使用

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

       存在许多种使用 MySQL Proxy 的不同方法。采用最基本用法,你可以允许 MySQL Proxy 将来自客户端的 query 透传到后端的一个服务器。如果打算让 MySQL Proxy 在这种模式下工作,你只需要在命令行上指定 proxy 打算连接的 backend server 的信息:  


?
1
shell> mysql-proxy --proxy-backend-addresses=sakila:3306


       如果你指定了多个后端 MySQL 服务器,proxy 将按照轮询的方式为客户端与后端的每一个服务器建立连接。假设你有两个 MySQL 服务器 A 和 B 。第一个要进行连接的客户端会被连接到服务器 A 上,第二个会连接到服务器 B 上,第三个又会连接到 A 上,例如:  


?
1
2
3
shell> mysql-proxy \
      --proxy-backend-addresses=narcissus:3306 \
      --proxy-backend-addresses=nostromo:3306

   
       当你以上述方式指定了多个后端服务器,proxy 将会自动检测后端服务器的可用性,当出现不可用时会进行标记。新连接会被自动的分配到当前可用的服务器上面,并且会在 mysql-proxy 的标准输出上报告警告信息:  


?
1
2
network-mysqld.c.367: connect(nostromo:3306) failed: Connection refused
network-mysqld-proxy.c.2405: connecting to backend (nostromo:3306) failed, marking it as down for ...


       通过Lua 脚本可以提供更细粒度的行为控制,包括对连接的控制、对分发的控制,以及对 query 和结果集的处理控制。当使用 Lua 脚本时,你必须在命令行上通过选项 --proxy-lua-script 指定脚本的名字:  


?
1
shell> mysql-proxy --proxy-lua-script=mc.lua --proxy-backend-addresses=sakila:3306


       当你指定了一个脚本,该脚本直到一个连接被建立时才会被读取。这意味着脚本自身的错误要到其真正被执行的时候才会被触发。脚本错误不会对向后端 MySQL 服务器分发 query 的行为产生影响。  


[Note]  
       因为脚本直到连接建立时才会被读取,你可以在 proxy 处于运行状态的情况下对 Lua 脚本的内容进行修改,而修改后的内容会在下一次新连接建立时自动被使用。这使得 MySQL Proxy 可以再无需重启的前提下使得行为发生改变。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
监控 MySQL 关系型数据库
|
关系型数据库 MySQL 开发工具
|
关系型数据库 MySQL 开发工具
|
关系型数据库 MySQL 测试技术
|
关系型数据库 MySQL 测试技术