如何使用 Systemd 为多个 MySQL 实例配置单独的 Override.conf

如果系统服务由 systemd 管理,则 systemd 守护进程应该知道进程的 PID 文件位置以启动/停止/重新启动它。
在具有 systemd 支持的系统上,“override.conf”用于指定带有 PID 文件位置的“PIDFile”和“ExecStart”。
MySQL 选项文件 (my.cnf) 中进程 ID 文件的任何设置都将被忽略。

这篇文章涵盖了我们需要为同一服务器上的多个 MySQL 实例管理创建单独的“override.conf”文件的情况。
在以下配置文件示例中,假设名为“Server1”和“Server2”的两个 MySQL 实例在一台 CentOS/RHEL 7 机器上运行:

MySQL 配置文件 (/etc/my.cnf):

[mysqld@server1]
server_id = 1
port = 3307
datadir = /home/mysql57/data
socket = /home/mysql57/data/mysql_server1.sock
log-error = /home/mysql57/data/mysql_server1.err
[mysqld@server2]
server_id = 2
port = 3308
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql_server2.sock
log-error = /var/lib/mysql/mysql_server2.err

为这两个实例创建“override.conf”的步骤:

  1. 停止任何现有的正在运行的 MySQL 实例。

  2. 创建一个指定实例名称的新文件夹:

$ mkdir /etc/systemd/system/mysqld@[instance-name].service.d

注意:实例名称应与配置文件中指定的名称相同。

$ mkdir /etc/systemd/system/mysqld@server1.service.d
$ mkdir /etc/systemd/system/mysqld@server2.service.d
  1. 创建“override.conf”:

例如名为“server1”,

$ cd /etc/systemd/system/mysqld@server1.service.d
$ touch override.conf

将以下行复制到 override.conf 中:

[Service]
PIDFile=/home/mysql57/data/mysql_server1.pid
ExecStart=
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf --defaults-group-suffix=@server1 --daemonize --pid-file=/home/mysql57/data/mysql_server1.pid $MYSQLD_OPTS

例如名为“server2”,

$ cd /etc/systemd/system/mysqld@server2.service.d
touch override.conf

将以下行复制到 override.conf 中:

[Service]
PIDFile=/var/lib/mysql/mysql_server2.pid
ExecStart=
ExecStart=/usr/sbin/mysqld --defaults-file=/etc/my.cnf --defaults-group-suffix=@server2 --daemonize --pid-file=/var/lib/mysql/mysql_server2.pid $MYSQLD_OPTS
  1. 重新加载 systemd 配置以应用配置更改:
# systemctl daemon-reload
  1. 启动每个配置的实例:
# systemctl start mysqld@server1
# systemctl start mysqld@server2
日期:2020-09-17 00:13:23 来源:oir作者:oir