2013-01-18 9 views
9

セッション状態テーブルを処理するために別個のRDSインスタンスがありますが、セッションDBの負荷が非常に低いことがわかりました。インスタンス処理セッションをメインDBの読み取りレプリカとして変換できれば、コピー内に大きなラグがあっても安全な読み取り専用タスクに使用できます。RDSでマスターに存在しない読み取りレプリカにテーブルを作成できますか?

誰もRDSでこのようなことをしましたか(それは可能でしょうか安全ですか)?重大な副作用がないか注意してください。これをより良く理解するためのリンクやヘルプが役立ちます。

http://aws.amazon.com/rds/faqs/#95質問に答えようとしますが、より多くの洞察を求めています。

答えて

-1

追加することはあまりありません。純粋な読み取りレプリカで本当に意味をなさない唯一の通常のシナリオは、主にレポートやその他の読み込みに使用されるインデックスなどの追加です。

多くのデータをあらかじめ計算しておき、それ以外の場合は読み取りレプリカにあるものを変更する場合は、となるようにしてください。実際にはに変更しないように注意してください。スレーブのデータを変更してマスタがそれを更新しようとした場合、あなたはすでに間違ったパスIMHOを下っています。

TL; DR 本当にあなたがやっていることを知っていれば、すべての影響を理解することができます。

  • そしてぶっきらぼうに、MySQLのレプリケーションは、私の経験では風変わりなことができ、そうでもが起こることを、マスターがあなたにもしましたスレーブに更新されたデータを書き込もうとするとあります場合は何が起こるんを想定しているものを知っています更新された....知っている人。
3

はい、可能です。私はローカルキャッシュの特定のケースのためにRDSを使用して成功とそれを使用しています。

レプリカのread_onlyパラメータを0に設定する必要があります。私はそのパラメータが機能するためにサーバを再起動しなければなりませんでした。

異なるテーブル名を使用するとうまくいくはずです.RDSではこれを設定できません:replicate-ignore-tableパラメータ。

マスター<>スレーブの間でデータが衝突しないことを覚えておいてください。 MASTERで正常に動作し、SLAVEに失敗した場合は、複製を破棄したばかりです。例えば、最初にSLAVEにテーブルを作成した後、そのテーブルをMASTERに追加しました。 CREATEステートメントはMASTERで正常に動作しますが、テーブルが既に存在するためSLAVEに失敗します。

実際には、あなたのアプリケーションがSLAVEに書き込むことができるように注意する必要があります。間違いを忘れたり、他のデータの一部をレプリカに読み書きしたりすると、データが失われたり、デバッグの問題が発生する可能性があります。

+0

ユーザーがすべてのテーブルに対して選択権限しか持っていないため、削除操作を実行するとエラーが発生します。読み込み複製のユーザに削除パーミッションを与えているときにエラーが発生しました: 'ユーザがアクセスを拒否しました... ' 読み込み複製RDSインスタンスで任意のパーミッションを付与するには? –

関連する問題