同一个 cib.xml 中有 2 个 MySQL 实例

同一个 cib.xml 中有 2 个 MySQL 实例

我有一个包含 2 个节点的 RHEL 7.3 集群,由 Pacemaker 管理。它用于 MySQL HA。我目前已将一项 MySQL 服务添加到集群(MySQL 5.2):

<primitive class="ocf" id="mysqldb1" provider="heartbeat" type="mysql">
  <instance_attributes id="mysqldb1-instance_attributes">
    <nvpair id="mysqldb1-instance_attributes-binary" name="binary" value="/usr/sbin/mysqld"/>
    <nvpair id="mysqldb1-instance_attributes-config" name="config" value="/etc/my1.cnf"/>
    <nvpair id="mysqldb1-instance_attributes-socket" name="socket" value="/opt/mysql1/mysql.sock"/>
    ....
  </instance_attributes>
</primitive>

我需要向集群添加第二个 MySQL 实例(MySQL 5.7):

<primitive class="ocf" id="mysqldb2" provider="heartbeat" type="mysql">
  <instance_attributes id="mysqldb2-instance_attributes">
    <nvpair id="mysqldb2-instance_attributes-binary" name="binary" value="/opt/mysql2/sbin/mysqld"/>
    <nvpair id="mysqldb2-instance_attributes-config" name="config" value="/etc/my2.cnf"/>
    <nvpair id="mysqldb2-instance_attributes-socket" name="socket" value="/opt/mysql2/mysql.sock"/>
    ....
  </instance_attributes>
</primitive>

问题是集群只会启动 cib.xml 中找到的第一个 MySQL 实例。因此,如果我在 cib.xml 中首先放置 mysqldb1,然后放置 mysqldb2,则只会启动 mysqldb1。到达第二个实例时会出现此错误:INFO:MySQL 已在运行。这是日志:

sql-02 mysql(mysqldb1)[61344]: INFO: MySQL is not running
sql-02 mysql(mysqldb1)[61344]: INFO: MySQL started
sql-02 crmd[60496]:  notice: Result of start operation for mysqldb1 on sql-02: 0 (ok) | call=46 key=mysqldb1_start_0 confirmed=true cib-update=29
sql-02 mysql(mysqldb2)[61648]: INFO: MySQL already running
sql-02 crmd[60496]:  notice: Result of start operation for mysqldb2 on sql-02: 0 (ok) | call=48 key=mysqldb2_start_0 confirmed=true cib-update=31

如果我手动启动这 2 个实例,它们会正常工作。是否可以同时运行这 2 个 MySQL 实例?

答案1

对于遇到同样问题的人,这是我找到的解决方案。如果您希望 2 个 MySQL 数据库在同一节点上同时运行,则必须确保插座数据目录日志进程号参数不同。前 3 个参数我都设置好了,但我没有为这两个实例设置 pid 参数。在我添加了以下几行之后:

<nvpair id="mysqldb1-instance_attributes-pid" name="pid" value="/var/run/mysql1/mysqld.pid"/>

<nvpair id="mysqldb2-instance_attributes-pid" name="pid" value="/var/run/mysql2/mysqld.pid"/>

集群成功启动了 MySQL 的两个实例,并且它们同时运行,没有问题。

相关内容