MySQL互換の「TiDB」は待ち望んでいたデータベースか?
「TiDBは使えるか討論 MySQLのプロがTiDBを斬る」と題して行われたセッションには、LINEヤフーとメルカリでMySQLを使いこなしているプロフェッショナルなエンジニア2名が登場。LINEヤフーでクラウド統括本部 Database本部 RDB2部 部長を務めている北川健太郎氏は、主にMySQLの導入から運用管理を担っている。2023年10月にLINEとヤフーが合併したことにより、それぞれが利用していたデータベースを管理する組織も1つになったばかりだ。
同社ではオンプレミス型のプライベートクラウド環境を構築しており、そのシステムインフラとあわせてMySQLの運用も統合を進めるなど、「かなり大変だ」と北川氏は話す。
LINEヤフーでは現状、1万5,000インスタンス以上のMySQLが稼働しており、MongoDBやOracle Database、Cassandraなど多様なデータベースが利用されているからだ。多くのMySQLを運用する中、データベースの負荷を分散するため「シャーディング(水平分割)」による運用を続けていたが、分散させたデータベースクラスタ管理の煩雑性や複雑化などに課題を抱えていたという。だからこそ、最初から“分散型での運用”を想定した上で構築しており、MySQLと高い互換性がある「TiDB」に着目。約2年前から検証を行ってきた。
その検証結果について、「サービス用MySQLのHA構成を管理するシステムのバックエンドとして、マルチAZ(アベイラビリティゾーン)の仕組みにTiDBを配置しており、本番環境で利用しています」と北川氏。3つのAZを設けており、それぞれにTiDBを用いているという。
LINEヤフーと同様に、TiDBの検証を進めているのがフリマサービスや決済事業を展開するメルカリだ。同社ではMySQLやPostgreSQL、Cloud Spannerなど、さまざまなデータベースを活用している。オンプレミスのMySQLの運用管理を担当しているのが、同社 Database Reliability Engineering JP Reliability Engineerの三谷智史氏。拡張性の高さに期待し、TiDBには注目してきたと話す。
そこでMySQLの移行について、クラウド環境でPoCを実施しテストを行った。メルカリで利用しているデータベースサーバーはLINEヤフーほど数が多くない一方、フリマサービスで利用するデータベースの容量は大きく、一部のデータベースは10TBを超えているという。なお、このデータベースについては、シャーディングによる分散型で運用されている。
ここでモデレータを務めるPingCAP Japan CTOの林正記氏から、TiDBの良いところは聞こえてくるが、MySQLのプロとして実際にTiDBに触れて検証をしてみた印象として「本当にTiDBは夢のDBだったか」との質問が投げかけられた。北川氏は「性能はまだじっくりと検証していませんが、運用方法の確立について時間をかけて検証しました。現時点ではまだ夢のDBなのかはよくわかりませんが、夢のDBだったら良いなと思います」と話す。
LINEヤフーでは、これまでTiDBの運用確立に手間をかけてきた結果として、「サーバーがダウンしても、すぐに起動してクラスターにジョインしなおすなど、運用は落ち着いてきました」と北川氏。クラスターの運用・保守ツールである「TiUP」を使うことで、各クラスターに対して一括インストール、バイナリを動的に置き換えるなどの操作が可能になり、オンプレミスでの運用には便利だと評価する。
また、TiDBは“中身の仕組み”をよく理解していなくても容易に利用できるとも語る。その上で「パラメーターチューニングをしなくとも、デフォルトの設定でもかなり性能が発揮されます。検証の際、TiDBのパラメーターを全部見たのですが、何を変えたら良いのか正直分かりませんでした。ただ、デフォルトでもすごい性能が出たので、とても良い印象だったのを覚えています」と北川氏。1台のMySQLでなかなか性能が出にくい際、TiDBを活用できるだろうと評価する。
また、三谷氏も夢のDBなのかわからないが、MySQL互換かつ高いスケーラビリティが発揮できるという意味では、待ち望んでいた製品だと述べる。メルカリでは既存環境の移行をテストするために、クラウド環境でPoCを実施。このときの性能目標に150万QPS(Queries Per Second)を掲げたが、PoCではこれを十分に達成できたと話す。100台を超えるクラスター構成で検証をしており、ノードを追加すればR/W性能が向上することも確認されている。
一方、MySQLとの互換性は高いが「そもそもアーキテクチャが異なるので、まったく同じものと思って使ってしまうと痛い目を見るでしょう。別物だと思って使い始めた方がサプライズは少なくお勧めです」と三谷氏。たとえば、デフォルトの照合順序がMySQLとTiDBでは異なる。そのため、明示的に照合順序を指定する必要もあったという。
三谷氏は、将来的にスケールアウトしていくことが想定されるならばTiDBを選び、そうでなければMySQLで一旦始めてみても十分だろうと述べる。MySQLには既にオープンソースのさまざまなツールが揃っており、それらが使える点に優位性があるからだ。ただ、MySQLで困ったり、性能面や運用面など明らかに厳しいと感じたりした場合は、選択肢としてTiDBを検討するのも良いだろう。林氏もTiDBはMySQLの互換データベースとして使う人は多いが、三谷氏の「最初から違うものとして扱うほうが良い」という指摘は鋭いという。