1

データベースの健全性を監視して破損していないことを確認するデーモンが必要です。スクリプトを実行します。

パフォーマンスを損なうことなく最適な整合性チェックを行うにはどうすればよいでしょうか?

1-すべてのテーブルにダミー値を入れてクエリを実行し、それらが返された場合、データベースが正常であると想定する必要がありますか?

2- すべてのテーブルで 5 分ごとにチェック テーブルを実行し続ける必要がありますか?

3- mysqlcheck を実行する必要がありますか? (すべてのテーブルをロックします..)

あなたの提案を教えてください。

データベースは単独で実行され、後でアクセスすることはできません。破損を検出したいだけで、データ全体を失うことは許容されますが、システムの破損やダウンタイムに対する許容度はゼロです。そのため、破損を早期に検出し、必要に応じてデータベースを一掃して、データベースをリロードしたいと考えています。

デフォルトのエンジンは INNODB です

4

1 に答える 1

0

InnoDB .ibd ファイルの内容全体を確認するには、innochecksum コマンドを使用できます。

http://dev.mysql.com/doc/refman/5.5/en/innochecksum.html

これは、InnoDB が mysqld インスタンスによって開かれていない場合にのみ機能することに注意してください。そのため、mysqld がシャットダウンされているときに行うのが最善です。


あなたのコメントについて:

チェックで InnoDB の破損が検出された場合、クラッシュするため、稼動状態を維持する必要がある実稼働サーバーで mysqlcheck を実行することはお勧めしませんmysqld

一般に、高可用性戦略には冗長性を含める必要があります

たとえば、双方向レプリケーションでプライマリとペアになっている 2 番目の MySQL インスタンスが必要です。すべてのアプリケーションが書き込むプライマリとして 1 つを指定します。もう一つはバックアップです。これで、セカンダリで mysqlcheck を実行したり、その他のメンテナンスやアップグレードを実行したりできます。完了したら、役割を交換して、セカンダリがプライマリになるようにします。次に、本番稼働時間を危険にさらすことなく、最初のサーバーで同様のチェックを行うことができます。

于 2012-11-06T22:24:33.623 に答える