MySQLでスケールアウトしてみたい

WEBサイト(システム)のスケールアウト+スケールアップ例

MySQLで複数台のサーバに負荷分散させる例って、ネットで見ると事例が多いですね。


私は仕事でDBはOracleしか使ったことないので、他のDBのことはよく知らないんです。
MySQLっていうとWeb屋さんでよく使われるイメージがあります。


なぜか私は今までOracleの案件ばっかりでした。
私の経歴がたまたまそうなっただけなのかもしれませんが。
業務システムっていうと、商用データベースが選択されることが多いんですかねえ。


ああ、SQL ServerDB2の仕事も微妙にはあったか…


Windows+.NET(C#)+Oracleの仕事を長くやってたんですけど、
Oracleで負荷分散させようとすると、かなり金がかかります。


お客さんの会社が上場することになり、監査が入ることになりました。
上場するためには、監査法人からシステムの運用にたっぷりチェックが入ります。


システム障害時のダウンタイムが何分以内とか、そういう決まりがあるそうです。
必然的に、サーバを複数台にして、フェールオーバーできるようにする必要がでてきます。


DBサーバがすでに重かったし、こういう機会なので、DBをシングル構成から複数台構成にスケールアウトして
Oracle RACとかでクラスタを組めればよかったんですけど、
なにぶん製品の価格が高いんですよね…


お客さんからは「そんなに金だせねえよ!」っていうことで、
監査対応には、
別なクラスタリングソフトウェアを使うことになりました。


DBの負荷が増えたことは、

  1. SQLチューニング
  2. 画面仕様に制限を入れて、重たいクエリが発行されることが無いようにする
  3. ほんとにクエリの処理に時間がかかる業務の場合は、オンライン処理ではなく、夜間バッチで処理するように仕様を変える

でずっとなんとかしのいできました。


2番と3番は、仕様を決定するまでが、もめます。
まあ、1番を選択すると仕様は変わらないので、お客さんとのやりとりはいらないのですが、
開発者の負担が大きくなります。
どの選択肢を選んでも、めんどくさいし、根本的な解決にはなりません。


お客さん「処理がおせーよ!なんとかしろ!」
開発者「めんどくせーよ!この際だからDBサーバ増やそうよ」
お客さん「金が無いよ。無理。」
という場合がOracleだと多い、というよりも
DBサーバを増やすことは最初から選択肢に入らないですね。


MySQLだと、金をあんまりかけないで、負荷分散ができそうなので、
けっこういいかなあと思うんですが。
MySQLを使った仕事したことないので、そういう提案をするのも勇気がいりますね。
いつかやってみたい…