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?
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)に再接続し、このノードに基づいてデータを再同期します。