はじめに
複数台構成のVerticaクラスタでは、K-safetyによる冗長性を持たせることができます。しかし、意図せずにK-Safetyが0(ゼロ)に設定されてしまう事故が過去に発生したことがあります。
注意喚起として、このような場合の原因と対処について記載します。
Management Consoleを使って最適化処理をした場合
Management Consoleを使って最適化をする際、K-Safetyの値を設定する箇所があります。[Wizardを選択した場合の画面]
[Manualを選択した場合の画面]
このデフォルト値が0(ゼロ)となっているため、意図的にK-Safetyの値を指定しない場合はそのままゼロが設定されて最適化処理が行われます。
プロジェクションをK-Safety=0で最適化すると、システム全体のK-Safetyも0に変わってしまいます。
システムに設定されているカレントのK-Safety値をデフォルト設定とするのはManagement Console 9.0以降です。
そのため、Management Console 9.0未満のバージョンをお使いの環境ではご注意ください。
対処
上記のような理由で、K-Safetyの値を1に戻す場合の一般的な方法を以下に紹介します。[手順概要]
1. K-Safety=0に設定されたテーブルの洗い出し
1 |
dbadmin=> SELECT * FROM PROJECTIONS WHERE verified_fault_tolerance=0; |
2. 手順1のテーブルに対して、DROP TABLE
3. システムのK-Safety変更
変更前のK-Safety設定を確認します。
1 |
dbadmin=> SELECT CURRENT_FAULT_TOLERANCE FROM SYSTEM; |
K-Safetyを1に変更します。
1 |
dbadmin=> SELECT MARK_DESIGN_KSAFE(1); |
変更後のK-Safety設定を確認します。
1 |
dbadmin=> SELECT CURRENT_FAULT_TOLERANCE FROM SYSTEM; |
4. 手順1のテーブルを作成
5. データのロード
6. 最適化処理
Management Consoleをお使いの場合は、K-Safety設定の指定にご注意ください。