構築中。

名古屋のITインフラお守り係です。ITイベントへの参加記録などを残していきます。

MySQL at Facebook & MySQLテクノロジーアップデートセミナー+三菱一号館美術館(7/5)

最近ブログへのアップが遅れ気味ですが、先週参加してきました。

connpass.com

本家oracleのサイトからは早々と消されてしまったようなので、connpassを…。残ってました(Oracle山﨑さんより直々にお知らせいただきました。ありがとうございます!)。

MySQL at Facebook & MySQLテクノロジーアップデートセミナー

今回は、これまで参加したセミナーと内容が被るので、さらっと流します。

MySQL Server 8.0 & MySQL Cluster 7.6 Technology Update(Oracle稲垣さん)

前回のセミナーの要約版+MySQL Cluster 7.6 GAの話でした。なので、MySQL 8.0についての話は省略します。

MySQL Cluster(インメモリDB・以前から「NDB Cluster」と呼ばれていたほう・InnoDB Clusterではない)ですが、

  • TB級のクラスタでも再起動が速い
  • Partial Local Checkpointの採用
    • データメモリの一部と変更だけをDisk保存(永続化)する
      • Disk容量節約
      • CheckPoint高速解放

などをアピールされていました。

MySQL at FacebookFacebook松信さん)

今回のメインセッションです(以下、印象に残った点を箇条書き)。

  • MySQL は5.1→5.6の移行を2013~2014年頃に実施(5.5はSkip)
  • 5.6に各種Patchを加えて運用中
    • Patchは本家Oracleに取り入れてもらうよう働きかけを行ってきた(実際にいくつか取り入れられてきた)
      • FacebookMySQLそのものを商品としてビジネスをしていないので、本家に取り入れてもらってメンテナンスしてもらったほうが都合が良い
    • ALTER TABLE~DEFLAGMENT INDEX
    • InnoDB DoubleWriteでの書込削減Patch
      • ダブルライトをやめて「データが壊れたときの検知」に注力
      • 壊れていたら別インスタンス(ノード)からコピーすればよい
      • 実際に壊れたことが10%程度しかなかったため
    • 主キーの順番に配慮して論理Read-Ahead
    • その他、非同期・スロットリング・ユーザ別セッション変数・クラッシュセーフなSlave / Master、binlog圧縮(ZSTD)、準同期binlog、START TRANSACTION WITH CONSISTENT $ENGINE SUPPORTなど
  • Binlog Server
    • 長期間binlogを残す
    • リージョン(DC)あたり1コピーにまとめることにより、地理的分散によるレイテンシ増加の悪影響を軽減する
  • MyRocksというストレージエンジンを開発して、UDB(User Database)とMessengerをInnoDBから移行した
    • http://myrocks.io/
    • 関連記事はこのへん https://news.infoseek.co.jp/article/enterprisezine_9450/
    • B+木IndexではなくLog Structured Merge(LSM)構造を採用
    • Read性能を犠牲にしてスペース効率のUPを目指した
      • 当初、DBサーバのCPUとDisk I/Oがスカスカだった一方、容量は不足気味だったため
      • 結果、CPUとDisk I/O負荷は少しUPしたが、容量は半分になった(1台に元の2台分を入れられるように)
    • テーブル(データ)構造はInnoDBと同じClustered Indexを採用
    • Bloom Filter & Column Familyなどによって性能低下を抑えた
    • ギャップロックなし
    • Row-Based Replication Only
    • 移行作業を工夫
      • 書込回数を削減
      • データベリファイを頑張った(データ件数比較・GTIDで取得して比較・Auditプラグインを活用)
    • TRIMストール(DELETEで刺さる)を防ぐため、TRIM有効範囲を制限
  • 8.0への移行を検討中
    • 8.0には期待している
      • performance_schema、テーブル統計などのPatch
      • トランザクショナルなDDL、よりよいオプティマイザ
      • Group ReplicationではIPv6対応やシングルプライマリ、ライブマスタ選出への対応を期待

MySQL 8.0へのアップグレードのポイントとパラメタ比較(Oracle山﨑さん)

バージョン間のデフォルトパラメータの違いとアップグレード時の注意点のお話でした。

バージョン間でデフォルトパラメータ、あるいは設定可能なパラメータそのものの差異があるので、

  • できるだけ8.0に近いバージョン(5.7)に上げてから8.0に上げたほうがよいこと
  • 予約語文字コードやCOLLATION、認証方式、SQLモードなどの違い
  • アップグレードチェッカーの活用

などについての言及がありました。

あと、「パラメタ比較」というタイトルから薄々感づいていたのですが、やっぱりMySQLユーザ会のとみたさんのパラメータ比較についての言及もありました(というか、結構大きく取り上げてました)。

tmtms.hatenablog.com


あっさり早めに終わったのと、会社の東京事務所に呼ばれずに済んだ(当日、情シス部門の人が拠点間VPNをIPoEベースに張り替える作業をしていた。ただ、IPv6について知見がないとのことだったので私が準備を手伝った)のとで時間が余ったので、東京駅近くの三菱一号館美術館で、(日常生活では全く無縁の)宝飾品の数々を眺めてきました。

mimt.jp

mimt.jp

目の保養?になりました。