ロコンドでは現在、主力であるEC事業のほか、B2B向けプラットフォーム事業とオリジナルブランド運営、そして投資事業の4つの領域でビジネスを展開しています。これらの中でも、近年は特にプラットフォーム事業に力を入れていますが、EC事業ともども顧客数が急増しており、システムに掛かる負荷も高まっています。それに伴い、システムが停止などによる顧客サービスや売り上げへのインパクトが増大してきました。
EC 事業とプラットフォーム事業で利用されるデータベース基盤はMySQL で構築しており、データベースの予期せぬ障害によるシステム停止時間を極力減らすべく、クラスタ構成を組んでいました。しかしプライマリからセカンダリへのフェイルオーバー時には手動の作業が必要で、運用の手間が掛かるとともに実際にはダウンタイムが伸びる一因ともなっていました。
そこで、2017 年4 月にInnoDB Cluster がリリースされたことを機に、これを使った新しい高可用性構成の導入検討を始めました。データベース障害時のより高速な自動フェイルオーバーが実現すれば、システム停止に起因する機会損失を減らせるとともに、データベースの運用負荷も低減できるのではないかと考えたのです。
InnoDB Clusterの導入でデータベースの可用性が大幅に向上
既存のレプリケーション環境の下にInnoDB Clusterをスレーブとして追加し、データを同期させるためにはGTIDモードを利用する必要があり、かつ既存環境をオンラインでGTIDモードへ変更するには、MySQL 5.6環境を5.7へアップグレードする必要がありました。そこでまずは5.6から5.7へのアップグレードパスを検討するとともに、アップグレード後のInnoDB Cluster環境の負荷試験やバックアップの検証、障害試験などを行いました。
これら事前検証の結果が良好だったため、2018年7月からいよいよMySQLのバージョンアップとInnoDB Cluster環境への移行作業を開始しました。既存のレプリケーション環境の下にInnoDB Clusterをスレーブとして追加し、複数あるアプリケーションの接続先を順次切り替えていくことで、2018年12月にほぼすべてのアプリケーションの移行を終えました。これらの作業を行う上では、MySQLのオフィシャルマニュアルとともに、スマートスタイルの技術ブログの情報が非常に役立ちました。
試験の詳細などは下記の資料で公開しております。
https://www.slideshare.net/ShinyaSugiyama/db-tech-showcasetokyo2018locondo
現在では、1台のプライマリサーバと2台のセカンダリサーバでInnoDB Cluster環境を構成しており、さらにWindows関数やCTEを利用可能なMySQL 8.0のインスタンスをグループ外ノードとして準備しています。移行完了後はデータベースの可用性が99.999%にまで向上し、サービス品質が向上したとともに、データベースのトラブルに起因する機会損失を減らすことができました。またデータベース障害発生時の手動対応が不要になり、運用負荷も大幅に軽減しました。
データベースサーバはすべてクラウド環境上で稼働しており、移行の前後でサーバスペックは特に変えていませんが、オンライン処理のパフォーマンス劣化はほとんどなく、現在のところ何の問題もなく稼働しています。ただしバッチ処理に関しては若干のパフォーマンス劣化が見られたため、細かくトランザクションを分割することで対応しています。
MySQL Enterprise Editionについて
無償版から有償版への切り替えで管理効率が向上
MySQL のバージョンアップと同時に、新たに有償の管理ツール「MySQL Enterprise Monitor」を使い始めました。あらゆるクエリを簡単に分析でき、障害やパフォーマンス低下時の問題切り分けに大いに役立つとともに、当社では作業中のメタデータのロックの確認などで活用しています。加えて、グループレプリケーション環境に正式対応している数少ないツールの1 つであるため、非常に重宝しています。
また商用版はサポートサービスが受けられるので、その点もとても安心感が高いですね。今後、MySQLのバージョンアップも予定していますから、サポートサービスを利用する機会は増えてくると思います。
今後はMySQL 8.0へのアップグレードも視野に
当社は2010年の創業以来、6年間で年商100億円を突破しましたが、2030年までには年商1000億円の達成を目指しています。これを実現するには、システムの安定性をさらに高め、機会損失をなるべく低く抑える必要がありますが、今回のInnoDB Cluster導入でその第一歩を踏み出すことができました。またシステム運用の現場でも、たとえデータベースにトラブルが発生しても慌てず対応できるようになり、アプリケーションに余計な工数を掛けずに継続的にサービスを提供できるようになりました。
今後はMySQL 8.0の導入を検討するとともに、社内システムのアーキテクチャをマイクロサービス化することで、より柔軟かつ堅牢なシステムを目指していきたいと考えています。さらに、2019年には, 「靴の在庫シェアリング」 を最適化する事が可能な、基幹システムを含めた業界向けの総合オムニパッケージの提供を開始する予定です。
これらの将来構想を実現する上では、スマートスタイルには引き続きMySQLに関するレベルの高い情報発信とサポートを期待するとともに、今後はMySQLに関連した幅広い分野でぜひ価値の高い提案をいただければと思います。
MySQL InnoDB Clusterとは
MySQL Group Replication / MySQL Router / MySQL Shellの3つのコンポーネントの組み合わせから構成されるMySQL のフルスタックな高可用性ソリューション
高い高可用性とスケーリング機能を包括的に備えた単一製品であり、自動フェイルオーバーや、ローリングアップグレード、フローコントロールなどの代表的な機能を持つ
MySQL InnoDB Clusterの詳細こちら