web-dev-qa-db-ja.com

Galeraクラスターを起動する正しい方法

MariaDB Galera Clusterのbootstrapプロセスについて混乱しています。

MariaDB Galera Clusterの3つのノードがあり、CentOS6/7で正常に機能しているとしましょう。ただし、ある時点で3つのノードすべてを停止してからクラスターを起動する必要があります(理由は関係ありません)。ノードを1つずつ正常かつ正常に停止します。クラスターを起動するために、grastate.datをチェックアウトして、最新のデータが存在するノードを確認します。 I bootstrapこのノードを最初に。

私にとって不明瞭なのは、CentOS 6および7でbootstrapが正確にどのように行われるかです。2番目と3番目のノードはsystemctl start mysqlで開始できます。最初のノードを開始するにはどうすればよいですか?最新のデータが含まれる最初のノードでservice mysql start --bootstrapを使用しますか?私はそれをCentOS 7でsystemctl start [email protected]と読みました。3つのノードすべてを正常に停止した後、クラスターの最初のノードをブーストラップする手順は何ですか?

PS:これに関連して、もう少し詳しく、 dr01 による投稿です grastate.dat with seqno -1 on a health cluster。Why?

2
user3526540

Galeraが含まれているMariaDB 10.1では、最初のノードをキー--wsrep-new-clusterで開始する必要があります

例えば/etc/init.d/mysql start --wsrep-new-cluster

他のすべてのノードは通常どおり開始します。

/etc/init.d/mysql start

ブートストラップする必要があるノードを判別するには、すべてのDBノードのwsrep_last_committed値を比較します。

KVM-1> SHOW STATUS LIKE 'wsrep_%';
+----------------------+-------------+
| Variable_name        | Value       |
+----------------------+-------------+
| wsrep_last_committed | 21568       |
...
| wsrep_cluster_status | non-Primary |
+----------------------+-------------+

KVM-2> SHOW STATUS LIKE 'wsrep_%';
+----------------------+-------------+
| Variable_name        | Value       |
+----------------------+-------------+
| wsrep_last_committed |  1359       |
...
| wsrep_cluster_status | non-Primary |
+----------------------+-------------+



KVM-3> SHOW STATUS LIKE 'wsrep_%';
+----------------------+-------------+
| Variable_name        | Value       |
+----------------------+-------------+
| wsrep_last_committed |   537       |
...
| wsrep_cluster_status | non-Primary |
+----------------------+-------------+

KVM-1には最新のデータがあります。この場合、すべてのGaleraノードがすでに起動されているため、必ずしもbootstrapクラスタを再度指定する必要はありません。KVM-1をプライマリコンポーネントに昇格させる必要があるだけです。

KVM-1> SET GLOBAL wsrep_provider_options="pc.bootstrap=1";

残りのノードは、プライマリコンポーネント(KVM-1)に再接続し、このノードに基づいてデータを再同期します。

3
Roman Bogachev