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

news2024/9/20 13:42:13

一、使用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.lua

root@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.coloradmin.cn/o/2149059.html

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

相关文章

sqli-labs靶场自动化利用工具——第2关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生&#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢&#xff1f;可能有些人会说不是有sqlmap&#…

摄影社团管理系统

基于springbootvue实现的摄影社团管理系统 &#xff08;源码L文ppt&#xff09;4-075 第四章 系统概要设计 4.1系统设计原理 设计原理是指系统的设计来源&#xff0c;它将需求合理地分解为功能&#xff0c;并抽象地描述系统的模块和其下的功能。在功能模块化后&#xff…

【数据结构】排序算法---桶排序

文章目录 1. 定义2. 算法步骤3. 演示3.1 动态演示13.2 动态演示23.3 图片演示13.4 图片演示2 4. 性质5. 算法分析6. 代码实现C语言PythonJavaCGo 结语 1. 定义 桶排序&#xff08;英文&#xff1a;Bucket sort&#xff09;是计数排序的升级版&#xff0c;适用于待排序数据值域…

【算法】最长公共子序列(C/C++)

最长公共子序列&#xff08;LCS&#xff0c;Longest Common Subsequence&#xff09;问题简称&#xff08;LCS&#xff09;&#xff0c;是动态规划里面里面的基础算法。它的所解决的问题是&#xff0c;在两个序列中找到一个序列&#xff0c;使得它既是第一个序列的子序列&#…

SpringCloud微服务实现服务降级的最佳实践

Spring Cloud是一种用于快速构建分布式系统的框架&#xff0c;它提供了许多有用的功能&#xff0c;其中包括服务降级。 服务降级是一种保护机制&#xff0c;它可以在面临高并发或故障时保持服务的稳定性。当系统资源不足或服务出现故障时&#xff0c;服务降级可以通过关闭一些功…

2.计算机网络基础

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

MATLAB系列03:分支语句和编程设计

MATLAB系列03&#xff1a;分支语句和编程设计 3. 分支语句和编程设计3.1 自上而下的编程方法简介3.2 伪代码的应用3.3 关系运算符和逻辑运算符3.3.1 关系运算符3.3.2 小心和~运算符3.3.3 逻辑运算符3.3.4 逻辑函数 3.4 选择结构3.4.1 if结构3.4.2 switch结构3.4.3 try/catch结构…

c++的decltype关键字

它可以将变量声明为表达式指定的类型

C语言程序二级 之知识点 程序填空 程序设计 程序修改

一 知识点 宏定义是指用一个宏名(名字)来代表一个字符串。宏定义的功能是在编译预处理时&#xff0c;对程序中所有出现的"宏名"都用宏定义中的字符串去代换&#xff0c;这称为"宏代换"或"宏展开"。无参宏定义的一般格式&#xff1a;#define 标识…

中国光刻机突破28nm?进步巨大但前路漫漫

在近期的报道中&#xff0c;中国国产光刻机进入推广目录的消息引发了广泛关注&#xff0c;其中提到的一款氟化亚光刻机的分辨率达到了65nm&#xff0c;被视作具备28nm制程节点的生产能力。那么&#xff0c;国产光刻机真的已经突破了28nm制程节点了吗&#xff1f;本文将对相关技…

Mysql梳理6——order by排序

目录 6 order by排序 6.1 排序数据 6.2 单列排序 6.3 多行排列 6 order by排序 6.1 排序数据 使用ORDER BY字句排序 ASC&#xff08;ascend&#xff09;:升序DESC(descend):降序 ORDER BY子句在SELECT语句的结尾 6.2 单列排序 如果没有使用排序操作&#xff0c;默认…

第157天: 安全开发-Python 自动化挖掘项目SRC 目标FOFA 资产Web 爬虫解析库

案例一&#xff1a;Python-WEB 爬虫库&数据解析库 这里开发的内容不做过多描述&#xff0c;贴上自己写的代码 爬取数据 要爬取p标签&#xff0c;利用Beautyfulsoup模块 import requests,time from bs4 import BeautifulSoup#url"https://src.sjtu.edu.cn/rank/firm…

教你建设智慧数字乡村如何选供应商,如何落地项目

说到数字乡村建设&#xff0c;大家都有自己的思路和想法&#xff0c;那么如果现在让你来做这个项目你又如何来实施&#xff1f;都需要什么方式&#xff1f;都要具备什么条件&#xff1f; 下面我来说一下我的个人思路&#xff0c;要做数字乡村我觉得前提是必须满足几个条件&…

可视化工具Gephi安装要求和特点

Gephi是进行社会图谱数据可视化分析的工具&#xff0c;不但能处理大规模数据集并且Gephi是一个可视化的网络探索平台&#xff0c;用于构建动态的、分层的数据图表。 Gephi安装要求 ① gephi是一个可多平台使用的绘图软件&#xff0c;能在Windows&#xff0c;OS&#xff0c;Lin…

平价头戴式蓝牙耳机有哪些?四款公认平价性能超强品牌机型推荐

在追求高品质音乐体验的同时&#xff0c;许多消费者希望找到价格亲民的头戴式蓝牙耳机&#xff0c;市场上不乏性能卓越、价格实惠的产品&#xff0c;它们凭借出色的音质、舒适的佩戴体验和可靠的续航能力赢得了用户的青睐&#xff0c;那么在众多的头戴式蓝牙耳机内&#xff0c;…

英伟达:AI时代的领跑者,引领智能计算的未来@附149页PDF文件下载

在人工智能的浪潮中&#xff0c;英伟达&#xff08;NVIDIA&#xff09;以其卓越的GPU技术&#xff0c;成为了这个时代的领跑者。从游戏显卡的霸主到AI计算的领导者&#xff0c;英伟达的转型之路充满了创新与突破。今天&#xff0c;我们将深入探讨2024年英伟达如何通过其战略布局…

Python 中的异步编程:从入门到实践

在现代编程实践中&#xff0c;异步编程已经成为一个不可或缺的技能&#xff0c;尤其是在处理高并发和I/O密集型应用时。Python&#xff0c;作为一种动态、解释型的高级编程语言&#xff0c;提供了强大的异步编程支持&#xff0c;使得开发者能够有效地编写高效、可扩展的应用程序…

虹科技术 | Linux环境再升级:PLIN驱动程序正式发布

Linux驱动程序领域再添新成员&#xff0c;PLIN驱动程序现已正式发布。这一新驱动程序为使用LIN接口的用户提供了一个便捷、高效的解决方案。本文将展示如何安装PLIN驱动程序&#xff0c;以及如何在Linux环境下进行基本的PLIN通信操作&#xff0c;确保您能够快速掌握并应用这一新…

寄存器二分频电路

verilog代码 module div2_clk ( input clk, input rst,output clk_div);reg clk_div_r; assign clk_div clk_div_r;always(posedge clk) beginif(rst)beginclk_div_r < 1b0;endelsebeginclk_di…

射击靶标检测系统源码分享

射击靶标检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…