![运行 MariaDB 服务器 5.5 并在多个无盘节点上共享 my.cnf](https://linux22.com/image/757552/%E8%BF%90%E8%A1%8C%20MariaDB%20%E6%9C%8D%E5%8A%A1%E5%99%A8%205.5%20%E5%B9%B6%E5%9C%A8%E5%A4%9A%E4%B8%AA%E6%97%A0%E7%9B%98%E8%8A%82%E7%82%B9%E4%B8%8A%E5%85%B1%E4%BA%AB%20my.cnf.png)
我正在尝试使用 Redhat Enterprise 7.8 在无盘映像中安装 MariaDB Server 5.5。
我遇到的问题是有一个无盘映像,其中一个/etc/my.cnf
被部署到所有节点,然后所有节点都指向共享 NFS 存储上的同一个数据目录。
我想做的是以某种方式确定/etc/my.cnf
它在哪个节点上,并写入共享存储上的其他目录(即datadir = /sharednfs/output/node1,2,3,4/mariadb
)。这可能吗?
根据我的研究,似乎唯一的方法是为每个节点设置单独的无盘映像。我找不到任何my.cnf
允许主机名变量或类似内容的参数。
答案1
我手边没有 RHEL 系统,但假设它与 centos7 非常接近。
当然,看起来您可以通过以mariadb.service
某种方式覆盖单位来轻松处理这个问题。
也许添加一个脚本,该脚本将用类似于的ExecStartPre
符号链接替换 my.cnf 。/etc/my.cnf
/nfspath/$(hostname -f)_my.cnf
或者也许有一种方法可以覆盖 ExecStart。我认为$()
这里无效,但如果是这样的。也许可以通过 运行它sh -c
?
ExecStart=/usr/bin/mysqld_safe --basedir=/usr --defaults-file=/nfspath/$(hostname -f)_my.cnf
答案2
我能够通过为 mariadb systemd 服务创建一个覆盖文件并添加来使其工作
ExecStart=/usr/bin/mysqld_safe --defaults-file=/nfspath/%H_my.cnf --basedir=/usr
需要澄清的是,--defaults-file 选项必须是行中的第一个参数,否则它将不起作用。再次感谢你们两位的意见!