ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

ニフティクラウド RDB の新機能 性能優先 (MHA) の冗長構成を使ってみた

こんにちは、ニフティクラウドを担当している竹内 (@tily) です。

本記事では、2015/4/8(水) にリリースされたニフティクラウド RDB の新機能「性能優先」の冗長化構成についてご紹介します。

また、ほかの構成との性能比較を行うためにベンチマークを取得したので、この結果についても合わせてご説明します。

データ優先 vs 性能優先

従来の「データ優先」冗長化構成では、冗長性を確保できる代わりにシングル構成よりも性能が落ちてしまうというデメリットがありました。

これはマスター DB サーバーへ更新系クエリがきた場合に、マスター DB サーバーからスレーブ DB サーバーへと同期的にデータ複製が行われるためです。

この解決策として、「性能優先」冗長化構成では、MySQL エンジンの持つ非同期レプリケーション機能 + MHA を採用しています。

非同期レプリケーションでは、マスター DB サーバーからスレーブ DB サーバーへのデータ複製を待たずに、SQL クエリが実行されるため、パフォーマンスは大幅に良くなります。

mha

さらにメリットとして、

  • MHA を採用しているため、障害時の切り替わりが「データ優先」より速い (データ優先は 1 分程度、性能優先は 15 秒程度)
  • MySQLレプリケーションなのでスレーブ DB も参照系として有効活用できる

といった点も挙げられます。

基本的な使い方

まずはニフティクラウドへ申し込みの上、ニフティクラウド RDB へとログインします。

dashboard

「DB サーバー新規作成ボタン」をクリックすると、DB エンジンを選択するダイアログが表示されます。

select-db-engine

「性能優先」は MySQL エンジンでのみ利用可能なので、MySQL 5.6.22 を選びます。

次へ進むと、今度は基本設定のダイアログが表示されます。

basic-settings

「性能優先」の冗長化構成を選択します。

「性能優先」の場合、DB サーバー作成時にスレーブとなるリードレプリカも 1 台作成されるため、その名前も入力します。

confirm

その他必要な項目を入力し、「作成する」ボタンを押します。

マスター DB サーバーとリードレプリカの 2 台の作成が開始され、しばらくすると「稼働中」のステータスになり利用できるようになります。

created

※DBサーバーの冗長化を設定する場合、待機系分のDBサーバータイプおよびディスク容量の料金もかかりますのでご注意ください。

ベンチマーク

「性能優先」という名前を証明するために、sysbench の OLTP モードによるベンチマークを取得してみました。

ベンチ取得にあたっては、すべてゾーン = east-14、サーバータイプ = db.small、バックアップ = YES、 MySQL バージョン = 5.6.22、DB パラメーターグループ = デフォルトに設定した DB サーバーを対象にしました。

ベンチ取得側は同ゾーンの Computing サーバー (サーバータイプ: small) を利用しています。

スレッド数 16、テーブル数 40000000、最大時間 180 秒によるテスト結果が下記になります。

タイプ 読み書きリクエスト数/秒 トランザクション数/秒
シングル構成 2370.64 124.77
冗長構成 (データ優先) 1254.71 66.04
冗長構成 (性能優先) 2317.70 121.98

ご覧の通り、「性能優先」は「データ優先」に比べて2 倍近くパフォーマンスアップしていることが分かります。また、「シングル構成」と比較しても遜色のない性能が出ているのが確認できます。

まとめ

ニフティクラウドの新機能「性能優先」(MHA) についてご紹介しました。

本機能を使うことで、冗長性を確保しながらハイパフォーマンスな DB サーバーを利用することが可能です。

ぜひ、ニフティクラウドRDBの新機能をお試しください。