mysql - 更改 mysql 中的默认 my.cnf 路径

标签 mysql multiple-instances my.cnf

我在同一台机器上有两个 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 文件的位置。

最佳答案

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

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

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

关于mysql - 更改 mysql 中的默认 my.cnf 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634163/

相关文章:

php - 使用php从select中选择一个值

mysql - Vagrant/多实例 mysqld

java - JTable 多实例

mysql - 我可以更改 MySQL 源配置选项上的区域设置吗

mysql - Windows 上的 Docker 在尝试启动 mysql 容器时出错

MySQL SELECT LIKE 或 REGEXP 匹配一条记录中的多个单词

mysql - 为什么 `log_slow_queries` 会中断 `my.cnf` ?

mysql - OSX 10.10 Yosemite my.cnf 未被读取无法正常工作

事务中的 MySQL 回滚

java - 作为参数传递的对象不会创建多个实例