【问题标题】:changing default my.cnf path in mysql更改 mysql 中的默认 my.cnf 路径
【发布时间】:2011-06-05 18:30:39
【问题描述】:

我在同一台机器上有两个 mysql 实例。安装在 /usr/loca/mysql1 和 /usr/local/mysql2 上。

我在 /etc/mysql1 和 /etc/mysql2 中有单独的 my.cnf 文件。我使用源代码分发和 --prefix=/usr/local/mysql1 选项安装了我的 sql 的第一个实例。第二个是我将同一目录复制并粘贴到/usr/local/mysql2 中得到的。

当我在 /usr.local/mysql/libexec 上启动 mysql 守护程序时,它会读取 /etc/mysql1 中的 my.cnf 文件。如果我在 /usr/local/mysql2 中启动 mysql 守护程序,它会读取相同的 my.cnf 文件。我在这两个位置的 .cnf 文件中定义了单独的端口号和 .sock 文件。

我可以在 mysqld 启动时使用 --defaults-file=/etc/mysql2/my.cnf 选项读取第二个位置的 my.cnf 文件。我不需要每次启动守护程序时都输入这个。

如果我要拥有更多实例,我如何将正确的 my.cnf 文件指向每个 mysql 守护程序来读取。 mysqld 与 my.cnf 文件链接背后的原因是什么。

如何为每个实例预定义 my.cnf 文件的位置。

【问题讨论】:

  • 只需编写两个独立的 mysqld(或 mysqlmanager)启动脚本,将它们彼此分开

标签: mysql multiple-instances my.cnf


【解决方案1】:

正如您已经发现的那样,MySQL 为其配置文件提供了一个已编译的搜索位置。虽然您可以自己重新编译,更改它,但您还发现了 mysqld--defaults-file 选项,它指示它使用完全不同的配置路径。结合 --data-dir,这意味着您可以启动绑定到不同端口(和地址,如果喜欢)的多个 MySQL 实例,并使用完全独立的数据集,同时使用相同的二进制文件和图书馆。

传统上,大多数操作系统发行版会捆绑一个初始化脚本来启动 MySQL 的“默认”实例;也就是说,安装在“通常”位置,并使用标准配置路径。虽然这是为了满足最常见的情况,但您所追求的有点不同,因此您需要创建单独的脚本来启动单独的实例。

如果您计划在同一台机器上部署大量 MySQL 实例(我不得不问为什么),那么您可能想要编写一个自定义的 init 脚本,该脚本具有某种“发现”每个这些(也许通过检查一些包含“通用”布局的目录),然后循环它们,启动每个。当然,同样的初始化脚本需要能够找到并正确关闭每个脚本。

【讨论】:

    【解决方案2】:

    我认为唯一可靠的方法是使用前缀选项从源代码编译。要么这样,要么创建一个使用 --defaults-file 选项启动 mysql2 的 bash 脚本,然后使用它来启动它。

    但是,以您的方式“创建”另一个安装并不好。当你编译一个包时,前缀被硬编码到可执行文件中。因此,每当它查找资源时,它都会从该前缀开始,除非通过命令行选项告知不要这样做。

    所以,如果我是你,我会使用新前缀从源代码重新编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-31
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-04
      • 1970-01-01
      相关资源
      最近更新 更多