この記事では、Percona LIVE 2019 1日目に行われたセッションの中編として午後の3セッションを取り上げます。
MySQL 8.0 Performance: Scalability & Benchmarks
MySQLベンチマークのスペシャリストとして有名な Dimitri 氏のセッションです。
様々な条件下で取得したベンチマーク結果をブログで公開しており、MySQLの性能問題やパラメータチューニングの際には非常に参考になります。
セッションの内容は、最近のMySQL8.0に対して実施したベンチマークについて、どのような観点で実施したのか解説するものでした。ベンチマーク中に取得したグラフ(by dim_STAT)を見ながら、注目すべき部分を線で囲んで説明して頂いたので、非常に分かりやすかったです。
トピックとしては、以下のようなものが挙げられました。
- 設定値デフォルトでのワークロード比較
→ シンプルなSELECT、インデックス利用の有無、ランダムUPDATEなど
→ 場合によっては MySQL8.0 < 5.7 になるケースも - 文字コード(utf8mb4)
→ MySQL8.0 の性能が優れている - REDOログの re-design の影響
→ 大量スレッドの同時接続時の性能向上(ボトルネック改善) - リソースグループ機能の効果
→ ベンチマークからも明確に分かる - Double-Write
→ 直近の8.0リリースで改善予定
また、主要なベンチマークツールの紹介もありました(以下参照)。iiBenchは初耳でした。
Dimitri氏は Sysbench を最もよく使うそうですが、ベンチマークの目的によって使い分けるのが肝要だそうです。
- Sysbench – #1
- TPCC : DBT2 / TPCC-like / HammerDB / Sysbench-TPCC
- DBT3 / TPCH
- dbSTRESS → Dimitri氏が開発・メンテナンス(まだ公開されてない)
- iiBench
※ ちなみに私もよくSysbenchを使います(弊社ブログでもよく出てきます→参考)
その他、ベンチマークの一般的な観点や考え方についても説明がありました。システム開発にパフォーマンス計測は不可欠な作業なので、ベンチマークの達人の知見を聞くことができたのが非常に有意義な時間でした。
Building a Kubernetes Operator for Percona XtraDB Cluster
この日のKeynoteで発表があった通り、Percona社では最近 Kubernetes (以下、K8s)をプッシュしています。気になった私は早速 Percona XtraDB Cluster(以下、PXC) と K8s に関する当セッションに参加してみました。
話の内容としては、K8s上でPXCを運用する場合にどういった方法、ツールを使用するのがベストかというものが多かったです。
例えば、”Cluster Control”機能に関しては、ProxySQL 2.0 が機能面で最もマッチしており、Kubenetes API も提供されています。
その他にも、K8sにおいてバックアップの要件に「稼働中でもオンデマンドで実行でき、重いコンテナイメージを必要としない」というものがありますが、これにはPercona XtraBackupが最適です。
ただ、PITRにはまだ対応していないようで今後リリース予定と説明がありました。
また、「なぜPXCとK8sを組み合わせるのか?」という疑問に対しては、Kubenetes 1.9 からGAになった StatefulSets という機能が、全ノードが同じデータを持っていることが保証されるPXCと相性がとても良いという点が重要だそうです。
PXCについての知識はあるものの、k8sはそこまで詳しくなかったため、少々理解するのが難しい部分も多かったです。ただ、時おりデモ形式で実物を見ることもできたので、助かりました。何よりデプロイが本当に早く、およそ6分で終わるという説明にはとても驚きました。
8.0向け対応はまだですが、5.7向けについては概ね動作も安定しているようなので、もし興味があれば試しに使ってみてはいかがでしょうか?
Percona XtraBackup vs Mariabackup vs MySQL Enterprise Backup
Perconaのサポートエンジニアとしても活躍する2名による、バックアップツールに焦点を当てる専門的なセッションでした。取り上げられたツールは以下の3つです。
- Percona XtraBackup(以下、PXB)
- Mariabackup
- MySQL Enterprise Backup(以下、MEB)
基本的には、各ツールの特徴から「向き」「不向き」な点について解説するという内容でした。
まず冒頭に、MySQLにおいて「バックアップ」は以下3つの方法があると述べられました。
Percona社では原則として3通り全ての手法を実施することを推奨しているそうです。
- Logical Backup : mysqldump
- Physical backups : MEB, PXB, MariaBackup
- Binlogs : PITRのため
また、取得したバックアップが正しいかどうかのチェック、およびリストア試験の重要性についても触れられていました。
その後各ツールの説明になりましたが、やはり PXB の段が最も力が入っていました。中でも AWS RDS + S3 環境でも PXB を活用する方法については、実際のデモを交えながら熱心に解説されました。聴衆からの質問も集中していたので、かなり関心が高かったようです。
次に印象的だったのはMariabackupの説明の中で、「MariaDB is not just a fork of MySQL」という言及があったことです。その証拠に、MariaDBの「InnoDB Page Compression」や「透過的暗号化」とPXBの互換性が既に崩れているそうです。また、MariaDB10.3以降では、Galeraの sst_method として PXB が既に使用できなくなりました。
わざわざ、PXBに似たようなMariabackupが開発されたことが不思議でしたが、このセッションを通じてその背景を窺い知ることができました。
※ ちなみに PXB と Mariabackup はオプションなども含め、コマンドはほぼ一緒です
最後に、3ツールを比較した時の特徴について、以下にまとめて記載します。
【PXBにあって、MEBにない】
- 完全なオープンソースであり、MySQLからRDSから様々な環境に対応している
- Parallel streaming Backup や Parallel compress Backup に対応している
- バックアップ専用のロックが実装されている
【MEBにあって、PXBにない】
- バックアップの進捗表示(–show-progress)
- バイナリログ、リレーログのバックアップがデフォルトで有効
- オフラインバックアップ(–no-connection)
【Mariabackupにあって、PXBにない】
- Windowsをサポートしている
【PXBにあって、Mariabackupにない】
- –compact や –rebuld_indexes といったオプションがサポートされない
- バックアップの暗号化(–encrypt)が使えない