我可以创建一个指向不同机器的 MySQL 套接字文件吗?

我可以创建一个指向不同机器的 MySQL 套接字文件吗?

我正在使用 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 就像拿起电话给某人打电话,而重定向套接字更像是让朋友拿起电话给他们打电话,每次说完话时都把书面笔记交给对方。这是不必要的复杂化。

相关内容