有些情况下你可能想要在同一台机器上运行多个服务器例如你可能想要测试一个新的MySQL版本而让你现有生产系统的设置不受到干扰或你可能是想要为不同的客户提供独立的MySQL安装一个因特网服务供应商
如果你想要运行多个服务器最容易的方法是用不同的TCP/IP端口和套接字文件重新编译服务器因此他们不是侦听同一个TCP/IP端口或套接字
假设一个现存服务器配置为缺省端口号和套接字文件那么用一个这样的configure命令行设置新的服务器
shell> /configurewithtcpport=port_number withunixsocket=file_name prefix=/usr/local/mysql
这里port_number和file_name应该不同于缺省端口号和套接字文件路径名而且prefix值应该指定一个不同于现存的MySQL安装所在的安装目录
你可以用这个命令检查由任何当前执行的MySQL所使用的套接字和端口
shell> mysqladmin h hostname port=port_number variables
如果你有一个MySQL服务器正运行在你使用了的端口上你将得到MySQL的一些最重要的可配置变量的一张表包括套接字名等
你也应该编辑你机器的初始化脚本(可能是mysqlserver)来启动并杀死多个mysqld服务器
你不必重新编译一个新MySQL服务器只要以一个不同的端口和套接字启动即可你可以通过指定在运行时safe_mysqld使用的选项来改变端口和套接字
shell> /path/to/safe_mysqld socket=file_name port=port_number
如果你在与开启日志的另一个服务器相同的一个数据库目录下运行新服务器你也应该用safe_mysqld的log和logupdate选项来指定日志文件的名字否则两个服务器可能正在试图写入同一个日志文件
警告通常你决不应该有在同一个数据库中更新数据的个服务器!如果你的OS不支持无故障(faultfree)的系统锁定这可能导致令人惊讶的事情发生!
如果你想要为第二个服务器使用另一个数据库目录你可以使用safe_mysqld的datadir=path选项
当你想要连接一个正在运行的使用一个不同于编译进你的客户程序中端口的MySQL服务器时你可以使用下列方法之一
以host hostname port=port_numer或[host localhost] socket=file_name启动客户
在你的C或Perl程序中当连接MySQL服务器时你可以给出端口和套接字参数
在你启动客户程序之前设置MYSQL_UNIX_PORT和MYSQL_TCP_PORT环境变量指向Unix套接字和TCP/IP的端口如果你通常使用一个特定的套接字或端口你应该将设置这些环境变量的命令放进你的login文件中
在你的主目录下的f文件中指定缺省套接字和TCP/IP端口