従来のデータベースでは、データの信頼性を確保するために一般的に使用されている手段がいくつかあります:
1) やり直しログ、2) マスター・スレーブ・ホットスタンバイ、3) バックアップ/リカバリ、4) ストレージ層のデータ検証
OceanBaseはPaxosプロトコルをフルに活用し、Paxosプロトコルと伝統的なWALメカニズムを組み合わせています。これは2つの利点があります:
1) Paxosグループ内の少数レプリカに障害が発生した場合、残りの多数レプリカには最新のRedoログが保証されるため、個々のハードウェア障害によるデータ損失を回避でき、RPO=0が保証されます。
(2)Paxosプロトコルの強力なデータ一貫性は「多数派」レプリカに対するものであり、Paxosグループ内の少数派フォロワーレプリカに障害が発生しても、残りの多数派レプリカ間の強力なデータ一貫性は全く影響を受けません。これにより、マスタスレーブホットスタンバイモードにおいて、バックアップレプリカの障害がマスタレプリカの可用性を低下させるという問題を解決します。これにより、マスタスレーブホットスタンバイモードにおいてバックアップレプリカの障害がマスタレプリカの可用性を低下させるという問題を解決します。
以上の2点を組み合わせることで、OceanBaseはPaxosプロトコルを使用することでRPO=0を保証することができ、アプリケーションのパフォーマンスに影響を与える心配がないことが、データの信頼性という点で、従来のデータベースとの最も大きな違いです。
OceanBaseは、ストレージレイヤーにデータ検証メカニズムを導入するだけでなく、エラーを防止または解決するための技術的な手段を追加しています:
1) Redo Logのデータチェックサム:Redo Logはディスクをドロップする際にデータチェックサム情報を追加します。また、Paxosグループ内の複数のレプリカ間でRedo Logの一貫性を確保するため、Redo Logはリーダーが送信するときとフォロワーが受信するときにデータチェックサム情報をチェックし、ネットワーク伝送の問題によるデータエラーを回避します。
2) データディスク上のチェックサム情報: Redo Logと同様に、データディスク上のデータには、ディスクのサイレントエラーに対処するためのチェックサム情報が付与されます。ただし、OceanBaseではPaxosグループ内の複数のレプリカ間でRedo Logを使用してデータを同期しているため、データディスク上のデータはネットワーク伝送によって複数のレプリカ間で同期されることはなく、レプリカ間でリアルタイムにチェックサムを行う必要はありません。
3) チェックポイントでのレプリカ間の整合性チェック: OceanBaseは、特定のチェックポイントで複数のレプリカ間のデータディスクの整合性チェックを行います。このチェックポイントは、OceanBaseの "デイリーマージ "ポイントに選ばれます。その主な理由は、デイリーマージアクション自体が多くのデータをマージし、書き換える必要があるため、データの一貫性チェックを行うのに良いタイミングだからです。このチェックを通じて、複数のコピー間のデータの一貫性がストレージ層でさらに保証され、データの信頼性が向上します。
4) データテーブルとインデックステーブル間のデータ整合性チェック: 関連するデータオブジェクトに対して、OceanBaseは追加チェックを行い、データ間の整合性を確保します。典型的な例はインデックスとそのデータテーブルで、OceanBaseは特定のチェックポイントでインデックスとデータテーブル間の整合性チェックを行い、データの信頼性をさらに向上させます。
5) 定期的なデータチェックサム情報のチェック:OceanBaseは定期的にタスクをチェックし、オンラインビジネスに影響を与えることなく、データチェックサム情報を利用して、ディスクにサイレントエラーがないかどうかを積極的にチェックします。
最後に、OceanBaseはフルバックアップ機能と増分バックアップ機能を含む、従来のデータベースと同様の完璧なバックアップ/リカバリメカニズムも提供します。さらに、OceanBaseの増分バックアップは、中断のないバックグラウンドのデーモンタスクの形で行われるため、オンラインビジネスには全く影響を与えず、運用・保守の複雑さを軽減します。しかし、分散データベースの運用実務の観点からは、実際のシステムでは、Paxosグループ内のコピーのほとんどが同時に破壊されるようなことは滅多に起こりませんので、基本的にはバックアップによるデータ復旧は行われません。