mixi 趣味でつながるSNS

ホームブログmixi でのデータベースの運用と改善の取り組み

ブログ

mixi でのデータベースの運用と改善の取り組み

mixi_blog

こんにちは、mixiスタッフです。

第6回は、mixi でのデータベースの運用とその改善に対する取り組みについて紹介します。

データーベースとは mixi で取り扱うデータを管理するためのもので、データベースに障害が発生すると mixi の一部の機能が使えなくなります。

今回の取り組みにより、データベースの障害の頻度が減り、障害が発生したとしても復旧までの時間が短くなりました。これにより、mixi の一部の機能が使えなくなる頻度や、その時間が減り、より安定したサービスを提供することができるようになりました。



データベースとは

mixi では日記やつぶやき、フォトなど様々な機能を提供し、ユーザーの皆さまからたくさんのデータを預かっています。そのようなデータを格納して安全に管理するためのシステムがデータベースです。預かった大切なデータを守るため、mixi ではデータベースを慎重に運用しています。

図1_データベースとは



データベースの運用と課題

mixi では Amazon Web Services(アマゾン ウェブ サービス。以降、AWS)というクラウドサービス上に、mixiスタッフがデータベースを構築していました。データベースは次の2つの役割のものを用意します。

1つは通常時にデータを書き込んだり取り出したりするためのものです。ここではマスターと呼ぶことにします。

もう1つは、マスターのデータをコピーした予備のデータベースです。ここではバックアップと呼ぶことにします。

データベースにはある確率で障害が発生します。障害が発生するとデータベースが停止し、データの書き込みや取り出しができなくなり、mixi の機能が停止します。例えば、日記のデータベースに障害が発生している間は、日記を見たり書き込むことができなくなります。

mixi から参照されているマスターに障害が発生した場合、機能を回復させるために、mixiスタッフがバックアップに切り替える必要があります。切り替えの手順とそれにかかるおおよその時間は以下の通りです。

  1. 障害の発生をmixiスタッフが受け取る(数分)
  2. mixiスタッフは mixi から参照するデータベースをマスターからバックアップに切り替える(10〜20分)
図2_データベースの役割
この1〜2の作業によりバックアップに切り替えが完了するまで、障害が発生したマスターを参照している機能は使えなくなります。そのため、機能をできるだけ早く回復してユーザーのみなさまが使える状態にするには、これらの時間を短縮することが必要でした。



Aurora への移行

このような入れ替えから回復までの機能の停止のリスクを抑えるため、mixiスタッフが自分たちで構築したデータベースから AWS が提供する AWS Aurora(オーロラ) というデータベースに移行することにしました。

Aurora は信頼性の高いデータベースです。AWS が構築・運用・保守・障害の対応を一括で見てくれ、障害が発生したときも自動で入れ替え・復旧がされます。そのため、データベースの障害から回復にかかるまでの間の機能の停止時間が格段に短くなることが期待できました。



データの移行作業

移行の作業を簡単に説明すると以下のような手順になります。

  1. 予備のデータベースからデータをファイルに保存する
  2. Aurora にデータベースを構築し、保存したファイルを取り込む
  3. mixi から参照するデータベースを切り替える
図3_データの移行作業
mixi は15年もの長い時間運用してきたサービスなので、膨大で様々な形式のデータを蓄えています。このデータの特性のため、Aurora への移行の際にいくつかの問題に直面しました。

まず、データのサイズが大きく、時間がかかったり途中で停止することでした。特に日記やメッセージなど初期から存在し、流入量も多い機能のデータは非常に巨大で、データを移す作業だけで10日以上かかるものもありました。さらにデータのサイズが大きすぎ、データの移行が途中で止まり、再度やり直しが発生することもありました。

次に、古い機能のデータの形式が現在ではあまり一般的に使われているものではなく、Aurora や移行のためのツールに対応してないものがありました。そのような場合は、データの形式を変換したり、別のツールを検討するなど何かしら工夫が必要になりました。

その他にも様々な問題に直面しましたが、原因調査や対応策の検討を重ねて一つ一つ解決していきました。そして、最終的に全てのデータを Aurora に移行することができました。移行完了後はデータが正しいものかをチェックし、動作に問題がないことを確認しています。



Aurora への移行後の結果

Aurora への移行の結果、データベースの安定性や運用コストについて2つの大きな改善がありました。

まず1つは、そもそもデータベースの障害が発生することが少なくなりました。そのため、機能が停止して使えなくなったり、mixiスタッフが対応に当たる頻度が減りました。

もう1つは、障害が発生した場合の復旧もほとんど自動で行われ、回復までの時間が短くなりました。Aurora に移行したことで、障害の検知から切り替えに取り掛かるまでの時間がなくなり、切り替え自体も数秒程度で行われるようになりました。そのため、機能を使えない時間が劇的に短くなりました。

このように、今までよりもさらに安定したサービスを提供できるようになりました。



まとめ

今回の記事ではデータベースの運用とその改善に対する取り組みについて紹介しました。技術的な詳細については別の機会に紹介する予定です。

ユーザーの皆さまから預かった大切なデータを守り、安心して mixi を利用してもらうために、今後もさらなる安定化のための施策に取り組んでいきます。