毎日のcronジョブを実行するサーバーを維持して、データソースを集約し、専用のRuby on Railsアプリケーションでアクセス可能なレポートを生成します。ライブリモートMySQLデータベースのローカル読み取り専用コピーを維持する効率的な方法は何ですか?
私たちのデータソースの1つは、パートナーのデータベースの部分ダンプです。パートナーはアクティブなアプリケーションを実行し、MySQL DBには数百のテーブルがあります。彼らは、アプリケーションDBの比較的低電力の読み取り専用スレーブに読み取り専用アクセスを許可しています。
スレーブDBのレイテンシの問題とパフォーマンスのボトルネックが原因で、DBのローカルコピーが限られています。レポートには約20のテーブルしか必要ないので、それらのテーブルをダンプするだけです。また、データは毎日の細分性だけで済みますので、リアルタイムの同期は必須条件ではありません。
数ヶ月間、私は夜間に必要なテーブルのダンプをローカルのproduction_tmp
データベースにストリーミングしました。その後、すべてのテーブルがインポートされたら、私はproduction
をドロップし、production_tmp
をproduction
にリネームしました。 DBが25GB以上になるまでこれは動作していましたが、ディスク容量の制限がありました。
今のところ、私は冗長性のステップを削除して、ダンプをローカルサーバのproduction
に直接ストリーミングしています。これは私にとってはちょっと気味が悪く、より安全なアプローチを実装したいと考えています。また、現在のところ、フルダンプ/ロードを行うのは2時間以上かかるため、時間がかかりません。データベースは成長を続けるだけなので、将来の何かを実装したいと思います。
ご意見をお寄せください。
は、あなたは、MySQLの 'ホットbackup'機能を使用してみましたか?この転送を行うためにDB全体をダンプするように思えますが、実際には変更のみを移動する必要があります。詳細情報:[増分バックアップ](http://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_incremental_backup) –
@SusannahPottsはMySQL Enterprise Editionでそれを行う唯一の方法ですか? –
私はそう信じています... MySQLは有償版の機能性についてかなり厳しいです。私はあなたがMySQLのライセンスは商用利用を許可していないと見てEEのバージョンを使用すると仮定していた...少なくとも私が読んだライセンスのビットから。 –