2 экземпляра MySQL в том же cib.xml

У меня есть кластер RHEL 7.3 с 2 узлами, управляемый 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>

Проблема в том, что только первый экземпляр MySQL найден в cib.xml запускается кластером. Поэтому, если я помещу сначала mysqldb1, а затем mysqldb2 в cib.xml, будет запущен только mysqldb1. Когда достигается второй экземпляр, появляется следующая ошибка: ИНФОРМАЦИЯ: 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 экземпляра, они работают нормально. Возможно ли, чтобы эти два экземпляра MySQL работали одновременно?

0
задан 3 December 2018 в 21:30
1 ответ

Для тех, у кого есть такая же проблема, вот решение, которое я нашел. Если вы хотите, чтобы 2 базы данных MySQL работали одновременно на одном узле, вы должны убедиться, что socket , datadir , log и pid параметры разные. У меня были первые 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 запускаются кластером нормально и работают одновременно без проблем.

0
ответ дан 5 December 2019 в 05:01

Теги

Похожие вопросы