使用mysql-proxy代理服务器上的mysql.sock连接以及mysql-proxy的配置意义及配置示例

一、使用mysql-proxy代理服务器上的mysql.sock连接

    线上的mysql服务器只能使用本地的mysql.sock进行连接,非常不方便,于是想找一个中间代理来操作,之前使用过haproxy这种中间proxy,很好用。但haproxy上没有试过使用mysql.sock连接,当然mysql-proxy上的socker连接我也没有试过,但mysql-proxy毕竟是专门 的mysql proxy,我想应该会支持吧。也正好没出我所料,mysql-proxy可以支持后端直接mysql.sock文件连接。

    MySQL-Proxy是一个在client端和MySQL Server间的中间层代理,它可以监测、分析或改变它们的通信。它使用灵活,没有限制,常见的用途包括:负载平衡,故障、查询分析,查询过滤和修改等等。

    MySQL Proxy除了可以当做一个连接池外,还能通过使用lua脚本实现复杂的连接控制和过滤,从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明的,应用则只需要连接到MySQL Proxy的监听端口即可。另外MySQL Proxy还能实现读写分离,基本原理是让主数据库处理事务性查询,让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。

    MySQL-Proxy官网的下载地址:MySQL :: Download MySQL Proxy (Archived Versions)  安装如下:

#找到对应的版本下载MySQL-Proxy,直接执行即可启用
root@h127:/opt/mysql-proxy# wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-debian6.0-x86-64bit.tar.gz
root@h127:/opt/mysql-proxy# tar zxvf mysql-proxy-0.8.5-linux-debian6.0-x86-64bit.tar.gz
root@h127:/opt/mysql-proxy# mv mysql-proxy-0.8.5-linux-debian6.0-x86-64bit/* ./ ; cd bin
root@h127:/opt/mysql-proxy/bin# mysql-proxy --proxy-address=10.10.22.22:3307 --proxy-backend-addresses=path_to_mysql.sock --plugins=proxy
#在其它的服务器上即可进行连接
root@h191:/data$ mysql -h 10.10.22.22 -P 3307 -u read_user

二、mysql-proxy的配置意义及配置示例

    mysql-proxy下载下来之后,在share/doc/mysql-proxy目录中存放了各种lua文件代码示例,包括读写分享的rw-splitting.lua文件。而在另一个目录lib/mysql-proxy/plugins下存放着一些插件,比如admin,proxy插件。进入到mysql-proxy目录,执行bin/mysql-proxy --help-all可查看所有的设置选项。

root@h127:/opt/mysql-proxy$ bin/mysql-proxy --help-all
Usage:mysql-proxy [OPTION...] - MySQL Proxy
Help Options:-?, --help                                              Show help options--help-all                                              Show all help options--help-proxy                                            Show options for the proxy-module
proxy-module-P, --proxy-address=<host:port>                         listening address:port of the proxy-server (default: :4040)-r, --proxy-read-only-backend-addresses=<host:port>     address:port of the remote slave-server (default: not set)-b, --proxy-backend-addresses=<host:port>               address:port of the remote backend-servers (default: 127.0.0.1:3306)--proxy-skip-profiling                                  disables profiling of queries (default: enabled)--proxy-fix-bug-25371                                   fix bug #25371 (mysqld > 5.1.12) for older libmysql versions-s, --proxy-lua-script=<file>                           filename of the lua script (default: not set)--no-proxy                                              don't start the proxy-module (default: enabled)--proxy-pool-no-change-user                             don't use CHANGE_USER to reset the connection coming from the pool (default: enabled)--proxy-connect-timeout                                 connect timeout in seconds (default: 2.0 seconds)--proxy-read-timeout                                    read timeout in seconds (default: 8 hours)--proxy-write-timeout                                   write timeout in seconds (default: 8 hours)
Application Options:-V, --version                                           Show version--defaults-file=<file>                                  configuration file--verbose-shutdown                                      Always log the exit code when shutting down--daemon                                                Start in daemon-mode--user=<user>                                           Run mysql-proxy as user--basedir=<absolute path>                               Base directory to prepend to relative paths in the config--pid-file=<file>                                       PID file in case we are started as daemon--plugin-dir=<path>                                     path to the plugins--plugins=<name>                                        plugins to load--log-level=(error|warning|info|message|debug)          log all messages of level ... or higher--log-file=<file>                                       log all messages in a file--log-use-syslog                                        log all messages to syslog--log-backtrace-on-crash                                try to invoke debugger on crash--keepalive                                             try to restart the proxy if it crashed--max-open-files                                        maximum number of open files (ulimit -n)--event-threads                                         number of event-handling threads (default: 1)--lua-path=<...>                                        set the LUA_PATH--lua-cpath=<...>                                       set the LUA_CPATH

较重要的选项功能描述如下:
[mysql-proxy]  - 此为配置文件的第一行,不能少,如果少了就会报错:failed: Key file does not start with a group
--admin-address=host:port — 指定mysqo-proxy管理端口,缺省是4041
--proxy-address=host:port — 指定mysql-proxy服务端监听端口,缺省是4040
--proxy-read-only-backend-addresses=<host:port> - 读写分享只读后端
--proxy-backend-addresses=host:port — 后端MySQL服务器地址和端口,可设置多个。并且允许使用mysql.sock文件路径。
--proxy-skip-profiling — 关闭查询分析功能,缺省是打开的
--proxy-fix-bug-25371 — 修正 mysql的libmysql版本大于5.1.12的一个#25371号bug
--proxy-lua-script=file — 指定Lua脚本来控制mysql-proxy的运行
--daemon — mysql-proxy以守护进程方式运行
--pid-file=file — 设置mysql-proxy的存储PID文件的路径
--plugin-dir=<path> — 指定插件的路径
--plugins=<name> — 加载的插件,一般proxy即是代理功能;还有admin管理功能
--event-threads — 事件处理线程的个数
--log-file — 指定日志文件
--log-level — 指定日志级别

mysql-proxy配置文件示例

user@n171:/etc$ sudo cat mysql-proxy.conf 
[mysql-proxy]
user=tiger
daemon=true
keepalive=true
plugins=proxy,admin
log-level=info
log-file=/opt/mysql-proxy/logs/mysql-proxy.log
proxy-address=10.10.22.11:3399
proxy-backend-addresses=/data/mysql.sock
admin-address=10.10.22.11:3388
admin-username=proxy_admin
admin-password=123456
#如果上面的plugins里加了admin,下面一定要加上amin-lua-script
admin-lua-script=/data/mysql-proxy/lib/mysql-proxy/lua/admin.lua

SQL处理如下:

user@n171:/etc$ sudo cat mysql-proxy.conf 
[mysql-proxy]
user=tiger
daemon=true
keepalive=true
plugins=proxy,admin
log-level=info
log-file=/opt/mysql-proxy/logs/mysql-proxy.log
proxy-address=10.10.22.11:3399
proxy-backend-addresses=/data/mysql.sock
admin-address=10.10.22.11:3388
admin-username=proxy_admin
admin-password=123456
#如果上面的plugins里加了admin,下面一定要加上amin-lua-script
admin-lua-script=/data/mysql-proxy/lib/mysql-proxy/lua/admin.luaroot@n171:/lua# mysql -h 10.10.22.11 -P 3308 -u proxy_admin -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql> select * from help
+------------------------+------------------------------------+
| command                | description                        |
+------------------------+------------------------------------+
| SELECT * FROM help     | shows this help                    |
| SELECT * FROM backends | lists the backends and their state |
+------------------------+------------------------------------+
2 rows in set (0.00 sec)mysql> SELECT * FROM backends;
+-------------+-----------------+-------+------+------+-------------------+
| backend_ndx | address         | state | type | uuid | connected_clients |
+-------------+-----------------+-------+------+------+-------------------+
|           1 | /opt/mysql.sock | up    | rw   | NULL |                 1 |
+-------------+-----------------+-------+------+------+-------------------+
1 row in set (0.00 sec)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1540005.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

了解Node开发基础知识

目录 定义架构应用场景安装版本工具代码执行REPL传递参数输出全局对象 定义 Node.js 是一个基于 V8 JavaScript 引擎构建的运行时环境&#xff0c;允许你在服务器端运行 JavaScript 代码。Node.js 允许开发者使用 JavaScript 编写服务器端代码&#xff0c;实现前后端代码的统一…

Windows【环境 01】服务器系统重装后的服务恢复(ES\Redis\Jafka\Tomcat)环境变量和服务注册

服务器系统重装后的服务恢复 1.原因2.问题处理2.1 JDK2.2 Elasticsearch2.3 Redis2.4 Jafka2.5 Tomcat 3.总结 1.原因 Windows 服务器系统盘损坏&#xff0c;换了硬盘并重做了系统&#xff0c;其他磁盘未损坏但安装的服务无法正常运行了&#xff0c;包括&#xff1a; Elastic…

2.计算机网络基础

2. 计算机网络基础 (1) 计算机网络的定义 计算机网络是指将地理位置不同、具有独立功能的多个计算机系统通过通信线路和设备连接起来,以功能完善的网络软件实现网络中资源共享的系统。最简单的定义是:计算机网络是一些互相连接的、自治的计算机系统的集合。最庞大的计算机网…

JAVA-期末成绩计算

要求 总评成绩 期末成绩*0.6 平时成绩*0.4 输入总评成绩和平时成绩&#xff0c;输出期末成绩要考几分&#xff08;0<平时成绩<40&#xff0c;0<总评成绩<100&#xff09; 要求能多次运行&#xff08;退出程序停止&#xff09; 代码 import java.util.Scanne…

db2恢复数据库

db2licm -l检查下license IBM Support: Fix Central - Please wait, Select fixes db2 force application all db2ckbkp -H JYC.0.DB2.NODE0000.CATN0000.20240603223001.001 db2 "restore db jyc logtarget x:\db2\log" db2 "rollforward db jyc to end of log…

前端vue-复选框或者是下拉框的选择

单选框以及复选框还是下拉框都和name的值没有关系&#xff0c;但是他们之间得写&#xff0c;data中要写标签内v-model的值&#xff0c;在data中这个v-model绑定的值的值是value中的其中一个值或者是多个值&#xff0c;是默认选中的状态。

C++之深拷贝和浅拷贝*

两者本质&#xff1a; 浅拷贝&#xff1a;简单的赋值拷贝操作 深拷贝&#xff1a;在堆区中重新申请空间&#xff0c;进行拷贝操作new & delete 注意事项&#xff1a;堆区是在地址中重新申请空间&#xff0c;所以后续一系列操作new delete是通过指针* age进行操作&#xff0…

委托的注册和注销

让我们来回顾一下委托的内容。 委托 是一种复杂的数据类型&#xff0c;需要我们先定义出来。当定义好类型后&#xff0c;声明委托变量来使用。 可以装载方法&#xff0c;只可以装载具有相同返回类型和参数列表的方法。 委托变量名&#xff08;参数列表&#xff09;&#xf…

进击J7:对于ResNeXt-50算法的思考

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 本周任务是自行探索解决问题&#xff0c;通过此次思考过程逐渐将知识层面的学习过渡到能力层面的培养上。 一、任务 &#x1f4cc; **你需要解决的疑问&…

Zend Studio 13.6.1汉化中文版

在线汉化地址 https://download.eclipse.org/technology/babel/update-site/R0.16.1/2018-12/ 后面一直Next&#xff0c;最后让它后台自动安装 汉化完成 &#xff01;其实还是习惯用英文版&#xff01;&#xff01;&#xff01;&#xff01;&#x1f600;

Tableau Einstein 重磅亮相,融合 AI 与数据云提供统一且无缝的分析新体验!

通过内置可重复使用和可扩展的组件、语义 AI 和统一的数据&#xff0c;来加速不同部门和领域的用户工作流程。 近日&#xff0c;为期三天的 Dreamforce 2024 年度大会&#xff08;下文简称 DF24&#xff09;在美国旧金山隆重举行。 其中&#xff0c;最受关注的莫过于 Salesfor…

动态路由---OSPF协议基础

一、动态路由 1.1、定义 动态路由是指在网络通信过程中&#xff0c;路由器根据当前网络的状态和拓扑结构等信息&#xff0c;动态计算出最优的数据传输路径。这一过程依赖于路由器之间的路由信息交换和路由表的维护。当网络拓扑结构发生变化时&#xff0c;如链路故障或节点增减…

.NET 一直跻身 30 大Github最活跃开源项目之列。

大家好&#xff0c;我是编程乐趣。 一直以来都在介绍.Net的热门开源项目&#xff0c;今天来说说.Net本身。 .Net在GitHub上也是一个开源项目&#xff0c;.NET 是一个由 Microsoft 和 .NET 社区共同维护的开源跨平台框架。 自 2017 年以来&#xff0c;.NET 一直是 GitHub 上最…

Debian 12上安装google chrome

当前系统&#xff1a;Debian 12.7 昨天在Debian 12.7上安装Google Chrome时&#xff0c;可能由于网络原因&#xff0c;导入公钥始终失败。 导致无法正常使用命令#apt install google-chrome-stable来安装google chrome; 解决办法&#xff1a; Step1.下载当前google chrome稳…

【JavaEE】线程创建和终止,Thread类方法,变量捕获(7000字长文)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;7000字长文&#xff0c;希望本文内容能够帮助到你&#xff01; 目录 一&#xff1a;创建线程五种方式 方式一&#xff1a;继承Thread类&#xff0c;…

需求2:新加字段

从今天开始&#xff0c;我想把我之前写的一些小的&#xff0c;简单的需求都通过文章的方式写出来&#xff0c;一方面是回顾梳理之前所学的知识&#xff0c;另一方面也是为了方便以后回看&#xff0c;好记性不如烂笔头。 现在的问题是这样的&#xff1a; 涛哥希望&#xff0c;加…

电脑技巧:Win11家庭版和专业版之间的区别详解

目录 一、操作系统安装层面 二、 操作系统安全层面 三、虚拟化和远程功能方面 四、硬件支持方面 五、企业管理方面 六、价格方面 七、软件功能方面 八、适合人群方面 九、如何选择 Windows 11操作系统提供了多个的版本(SKU),包括适合家庭用户的家庭版、适合专业人士…

C++刷怪笼(5)内存管理

一.前言 学习完类和对象之后&#xff0c;我们对C有了基本的了解&#xff0c;但是我们对于C的学习&#xff0c;除了广度&#xff0c;还需要深度&#xff0c;今天让我们走进底层&#xff0c;看看C对其内存是如何进行管理的。 二.正文 我们对这段代码进行详细的分析如下图&#…

微信支付开发-支付工厂H5产品代码

一、H5支付产品、Native支付产品 二、工厂父类抽象类代码开发 <?php /*** 微信父类抽象类* User: 龙哥三年风水* Date: 2024/9/19* Time: 11:33*/ namespace Payment\WechatPay; abstract class WechatPaymentHandle {/*** 下单* User: 龙哥三年风水* Date: 2024/9/19* Ti…

ByteTrack多目标跟踪流程图

ByteTrack多目标跟踪流程图 点个赞吧&#xff0c;谢谢。