我々は99%INSERT、約100秒間のライブMySQLデータベースを持っています。毎日データをアーカイブして、メインのライブデータベースに影響を与えずにクエリーを実行できるようにしたいと考えています。さらに、アーカイブが完了したら、ライブデータベースをクリアする必要があります。ライブMySQLデータベースをアーカイブする最良の方法
挿入をロックせずにこれを行うための最善の方法は、(可能であれば)とは何ですか? INSERT DELAYEDをクエリに使用します。
我々は99%INSERT、約100秒間のライブMySQLデータベースを持っています。毎日データをアーカイブして、メインのライブデータベースに影響を与えずにクエリーを実行できるようにしたいと考えています。さらに、アーカイブが完了したら、ライブデータベースをクリアする必要があります。ライブMySQLデータベースをアーカイブする最良の方法
挿入をロックせずにこれを行うための最善の方法は、(可能であれば)とは何ですか? INSERT DELAYEDをクエリに使用します。
http://www.maatkit.org/はMK-アーカイバに
アーカイブを持っているか、別のテーブルおよび/またはファイルにテーブルから行をパージします。これは、重要なオンライントランザクション処理(OLTP)クエリに干渉することなく、非常に小さなチャンク内のデータを効率的に「ニブル」するように設計されています。これは、バック・トラッキングのない問合せ計画でこれを達成します。このプランは、表から問合せまでの場所を保持します。後続の問合せは、アーカイブ可能な行を見つけるためにほとんど機能しません。
別の方法としては、単純に毎日新しいデータベーステーブルを作成することです。 MyIsamにはいくつかの利点があります。なぜなら、テーブルの末尾にあるINSERTは一般的にはブロックされないからです。そのようなテーブルにhttpdトラフィックを記録するWebサイトが数多くあります。 MySQLの5.1
、ずっと同じことを行うことができますパーティションテーブルもあります。
2つのミラー化されたデータベースを保存できますか? 1つに書き出し、2番目をアーカイブとして保存します。 24時間ごとにスイッチを入れます(または、間違いなく長いと思われます)。アーカイブであったデータベースに、すべての今日のアクティビティを挿入します。次に、2つのデータベースが一致する必要があります。これを新しいライブDBとして使用します。アーカイブされたデータベースを取り出し、必要な操作を行います。積極的に書き込まれていないことを今すぐバックアップ/抽出/読み込みできます。
その種類のあなたは、バックアップ用のドライブをオフラインにし、それを再同期することができますミラーRAIDを持っているような、バックアップのために他のドライブを取ります。
これに対して、MySQLレプリケーションは完全に機能します。
マスター - >ライブサーバー。
スレーブ - >同じネットワーク上の別のサーバー。
これはレプリケーションのようなサウンドが最適です。最初の同期後、スレーブはBinary Logを介して更新を取得します。したがって、マスターDBにはまったく影響しません。私はmysqlのパーティションテーブルを使用して、私はすべての面で素晴らしい結果を達成しました
。
MK-ArchiverはMYSQLのデータをアーカイブするエレガントなツールです。
mk-archiverは私が欲しいものを正確に行います! – DavidM
MaatkitはPercona Toolkitの一部となっています - http://www.percona.com/doc/percona-toolkit/2.1/pt-archiver.html –