我正在使用 MySQL 调优脚本,该脚本又使用本地驱动器上的套接字 (.sock) 文件连接到 MySQL。尽管我在此服务器上有 MySQL 的副本,但我想要使用的 MySQL 实际上位于另一台机器上 - 在我的常规应用程序中,DB_HOST 是不同的 IP 地址,等等。
那么...有没有办法创建一个指向位于不同 IP 上的远程 MySQL 服务器的套接字文件?
答案1
是的,我们称它们为网络连接。你在互联网上所做的一切都会用到它们。
除了AF_UNIX
您提到的套接字外,还有AF_INET
套接字和AF_INET6
套接字,它们分别用于建立 IPv4 和 IPv6 连接。还有其他几种类型,但您可能不关心 AppleTalk 等古老的东西……
与 Unix 套接字不同,网络套接字在文件系统上没有对应的文件。它们只能使用套接字 API 在应用程序代码中创建(请参阅 socket(7) 手册页)。
对于调整脚本,它们应该具有命令行选项,允许您指定要连接的远程主机。流行的mysqltuner.pl例如,脚本接受--host
并--port
指定远程主机。(尽管除非您将其从默认的 3306 移出,否则无需指定端口)。
您仍然需要具有 MySQL 服务器权限的用户名和密码USAGE
,并且防火墙必须允许您访问。
答案2
那么...有没有办法创建指向不同IP的套接字文件?
socat-多用途中继:http://www.dest-unreach.org/socat/
答案3
上面的“socat”答案会按照您的意愿行事,但您最好使用本机 TCP 功能,而不是尝试重定向 UNIX 套接字,该套接字专为单个本地机器上的高性能 IPC 而设计。
相比之下,使用 TCP 就像拿起电话给某人打电话,而重定向套接字更像是让朋友拿起电话给他们打电话,每次说完话时都把书面笔记交给对方。这是不必要的复杂化。