MySQL Weekly

毎週月曜朝10時ころ更新、1週間のMySQL情報をまとめます

Update for last week (2019-11-03 ~ 2019-11-10)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)

  • Nothing

Bugs

基本的にMySQL Server, 5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedID#でdesc sort、結果の今週分を見る

Bug #97471 Function passing std::vector<> by value could be sightly improved

  • vector<>にconst referenceやpointerではなく値で渡しているせいでパフォーマンス低下になっていそうという指摘
  • 仕組みがわかっていないし、説明もされていないので常識の様子
  • 8.0.19で修正されるとのことなので、どう修正されたか見てみたい

Organization blogs

Personal blogs


このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Update for last week (2019-10-28 ~ 2019-11-03)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)

  • Nothing

Bugs

基本的にMySQL Server, 5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedID#でdesc sort、結果の今週分を見る

  3. Nothing

Organization blogs

Personal blogs

  • Setup 2 MySQL InnoDB Clusters on 2 DCs and link them for DR
    • lefred-san
    • データセンターをまたいでgroup replication構成のstandby clusterを作成する方法の紹介
    • 2つのinnodb clusterを作成して、cluster間は予め設定したホスト同士でreplicationしている
    • option1, 2のうち2を説明しているが、1の場合も気になる
  • Using MySQL Community Repository with OL 8/RHEL 8/CentOS 8
    • lefred-san
    • repository追加して最新のMySQL入れる方法の紹介
  • MySQL Random Password Generation

    • Dave Stokes-san
    • CREATE USER/ALTER USER時にIDENTIFIED BY RANDOM PASSWORDでランダムなパスワードを生成できるようになった
    • shellscriptからエスケープが必要だったりするので、英数字だけとかできないかなーと思っているがない。
  • 最近

    • ichirin2501-san
    • Mercari meetup for SRE Vol.2とdb tech showcase 2019でのichirinさんの発表に関する話
  • MySQL の 巨大な core ファイル 対策(~MySQL 5.7)

    • mita2-san
    • MySQL <= 5.7でcore fileを吐く方法の説明
    • 17GBで22秒って早すぎない?って思ったんですが、普通ですか?
    • 8.0の話はinnodb_buffer_pool_in_core_file = OFF;ですかねw

このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Update for last week (2019-10-21 ~ 2019-10-27)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)

  • Nothing

Bugs

基本的にMySQL Server, 5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedID#でdesc sort、結果の今週分を見る

Bug #???

  • Nothing

Organization blogs

Personal blogs


このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Update for last week (2019-10-14 ~ 2019-10-20)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

せっかくの8.0.18リリースの週ですが、体調不良で各種ブログは読めませんでした。
今週水曜日までにコメントを追加予定です。 追加しました。
Personal blogは今回はskipします。

Release note

(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)

8.0.18

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-18.html

影響ありそうなものをピックアップ!!

  • Account Management Notes
  • Configuration Notes
    • CMakeオプション等で変更
    • wolfSSLをサポートしなくなりOpenSSLのみ
  • Connection Control Notes
  • Deprecation and Removal Notes
    • MYSQL_PWDがdeprecateに指定された
  • Keyring Notes
    • HashiCorp Vaultのkeyring_hashicorpプラグインが利用可能になった
  • Optimizer Notes
    • Hash joinが実装された
      • indexのないテーブルで等価条件でのjoinで有効
      • optimizer switch, optimizer hintで有効無効をコントロール可能
      • hash joinに使われるメモリサイズはjoin_buffer_sizeでコントロール可能
      • メモリに乗り切らない場合はopen_file_limitを調整する必要がある
      • hash joinされたかどうかはexplain format=treeexplain analyzeで確認可能
      • 詳しくはHash Join Optimization
    • EXPLAIN ANALYZEで、iterator-basedなtimingやコストなどの情報が取得可能になった
    • 型が一致しないクエリでキャストオペレーションが入る
      • 一時的な型(temporal types)と数値型の比較はDOUBLEとして、DATE, TIME, DATETIME同士での比較はDATETIMEとして暗黙的にキャストされる
      • 例えばSELECT * FROM t1 JOIN t2 ON t1.int_col = t2.date_col このクエリはSELECT * FROM t1 JOIN t2 ON CAST(t1.int_col AS DOUBLE) = CAST(t2.date_col AS DOUBLE)のように書き換えられる
      • これらのキャストがどのように起きたかはexplainで実行したあとにshow warningsすることで見ることができる
  • Packaging Notes
  • Pluggable Authentication
  • Spatial Data Support
  • sys Schema Notes
    • sys.schema_unused_indexesからunque indexが排除される
    • sys.ps_is_consumer_enabled()関数がNULLでない未知の値を渡されたときにerrorを返すように修正
    • sys schemaが別のgit repositoryではなく、scripts/sys_schemaで管理されるようになった
  • Functionality Added or Changed
    • innodb_idle_flush_pct変数でアイドル時のpage flushを制御可能になった
    • group replicationへの改善
      • TLSv1.3のサポート(MySQL Serverでは8.0.16からサポート)
      • group_replication_exit_state_actionでOFFLINE_MODEが指定可能になった
    • PRIVILEGE_CHECKS_USERでreplication channelに流れてくるトランザクションに実行権限があるか確認可能
    • relay log info logとmaster info logがdeprecatedになったので、relay_log_info_file system variableと、--master-info-fileオプションもdeprecatedに変更
    • --slave-rows-search-algorithmsオプションと、slave_rows_search_algorithms変数がdeprecated
    • WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()がdeprecatedにこれを利用している場合はWAIT_FOR_EXECUTED_GTID_SET()を使うように(failoevrなどで別のチャネルやクライアントから接続された場合にハングする可能性がある)
    • Protobuf librariesがdynamic linkされるようになった
  • Bugs Fixed
    • later

5.7.28

5.6.46

Bugs

基本的にMySQL Server, 5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedID#でdesc sort、結果の今週分を見る

Bug #97185 Remove dead code from ST_SCHEMA_TABLE

Remove dead code from ST_SCHEMA_TABLE

  • ST_SCHEMA_TABLE構造体がInformation Schemaのためにあるが、使われていない
  • 8.0.20で削除予定

Organization blogs

Personal blogs


このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Update for last week (2019-10-07 ~ 2019-10-13)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)

  • Nothing

Bugs

基本的にMySQL Server, 5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedID#でdesc sort、結果の今週分を見る

Nothing

Organization blogs

  • MySQL server blog

    • Nothing
  • MySQL High Availability blog

    • Nothing
  • Percona blog (MySQL)

    • Centralization Vs. Decentralization of DBA Teams
      • 中央集約型のチーム(Centralized)と非中央集約型(Centralized)のDBAチームの違いについての考察記事
        • 中央集約型(Centralized)
          • 1つのチームとして大体DBMS製品ごとにグループにされている
          • ドキュメント、開発、マネジメントにおいて会社で共通の手法を取りやすい
          • 運用に関して一貫性がある一方で、そのためにカスタマイズがしづらくvanilla状態で運用することになりやすい
          • 一貫性を保てると新しいメンバーの適応速度や知見の横展開においてはメリットがある
          • 大手企業でサービスやアプリケーションを複数持っている会社に見られがちで、こういうチームは往々にして新しい技術や挑戦に対して受け身になりやすい
        • 非中央集約型(Centralized)
          • 中央集約型の対策として、開発チームごとにDBAがつく非中央集約型でチームを構成することがある
          • プロダクトにあったカスタマイズが進むことで社内では一貫性がなくなり、一度起きた問題が他のチームでも起きるようになり、車輪の再開発も起きるようになる
      • どちらの方針が正解ということはないが重要なのは一貫性とコミュニケーションであり、もし非中央集約型にするのであれば、誰かが一貫性やコミュニケーションを担保する役割を担う必要があると結論づけている
      • まあ当たり前の事しか言っていない気がするけど、一貫性やコミュニケーションの度合いをどう評価するか、どういう手段でこれらを担保するかを考えてみると面白いと思う
    • Achieving Disaster Recovery with Percona XtraDB Cluster
      • 地理的に分散したインスタンスPXCを構成するとパフォーマンスが非常に悪くなってしまうが、DRのためには必須な場合async slaveをDR先に置くのが1つの解決策
      • この場合、asyncなので、大幅にdelayが発生している可能性もあるからpt-table-checksumやpt-table-syncを使うと良いよ
    • Percona Monitoring and Management (PMM) 2.0.1 Is Now Available
      • PMM(Percona Monitoring and Managementの2.0.1がリリース)
      • セキュリティやUIの改善があった
      • Impromements, Fixed bugsの項目の列挙
  • MySQL道普請

    • 第107回 CREATE TEMPORARY TABLEによる一時テーブルの利用
      • TEMPORARY TABLEに関する詳細なまとめ
      • innodb_strict_modeがONで,ROW_FORMATがCOMPRESSEDだとtemporary tableは作れない
      • temporary tableはshow tablesに表示されない SELECT * FROM INNODB_TEMP_TABLE_INFO;で確認
      • binlog_formatごとのbinlogへの出力の違い
  • SmartStyle TECH BLOG (category MySQL and Percona)

  • Severalnines Database Blog

    • Nothing
  • Yakst MySQL-tag

    • Nothing
  • MySQL関連イベントの資料ダウンロード先

Personal blogs

  • How to integrate ProxySQL in MySQL InnoDB Cluster

    • MySQL RouterだとTCPのL4レイヤのルーティングしかしてくれないので、write/readを分けてクエリを投げたい場合にはProxy SQLをかませるのが一つの方法
    • InnoDB ClusterとProxy SQLを使ってMySQLにアクセスする設定の構築例を使って紹介
  • MySQL Parallel Index Range Scans: One is Sometimes Better Than Two

    • Index Range Scan(not covering index)の効率が悪いという指摘
    • TABLE ScanとIndex Range Scanを実行するthread数をスケールさせてその際のQPSを比較
    • resource groupでCPU socketを1,2で変えてみると1 socketしか使わないほうがパフォーマンスが良かった
    • 要約する必要がないくらいまとまっているので、読んでみることをおすすめします。
  • The dark side of super_read_only

    • J,F, Gagne-san
    • super_read_onlyをONにすると勝手にread_onlyもONになり、read_onlyをOFFにするとsuper_read_onlyもOFFになるという挙動の紹介
    • なんとドキュメントにも書かれているらしい。まじか。。。
    • IMHO clearly part of the ugly (or dark) side of MySQLと言いたくなるのもわかる
  • MySQL 8.0.17現在、PRIMARY KEYやUNIQUE KEYのCOLLATEを変更しても何故か再起動まで反映されない

    • yoku0825-san
    • タイトル通りの現象についての調査記事
    • ハハパパ問題を復習しつつcollationの変更がうまく効かない地獄を垣間見れる
    • 正直、文字列型でPK, UKにしていてかつ英数字以外を入れるケースは僕の周囲では少ない、ただ発生したら結構厳しい
  • binlog_format= ROW + 式インデックス + mysqldumpでレプリケーションに失敗する可能性がある

    • yoku0825-san
    • タイトル通りの現象についての調査記事
    • この状態が起こる原因は以下(元記事引用)
        1. binlog_format= ROW である
      • ii. 式インデックスを使っている
      • iii. 式インデックスを作って以降、そのテーブルにカラムを追加した
      • iv. 論理バックアップからリストアしてスレーブを作成
    • ということでだいぶ影響範囲が大きいように思える。とりあえず式インデックス今から入れるのはやめたほうが良さそう
    • 調査の様子をibd2sdi, mysqlbinlogを使って説明してくれていて、とてもためになる
    • affects meは押しましたね? (https://bugs.mysql.com/bug.php?id=96986 )
  • MySQL: ストアドで度分秒変換

    • sakaik-san
    • 緯度経度の表現方法として"度"と"度分秒"で表す方法がある、この内"度分秒"から"度"の単位に変換してくれるstored functionの紹介
    • そもそも緯度経度の表現方法が複数あることを知らなかった。。。

このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Update for last week (2019-09-30 ~ 2019-10-06)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

(https://dev.mysql.com/doc/relnotes/mysql/8.0/en/)

  • Nothing

Bugs

基本的にMySQL Server, 5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedID#でdesc sort、結果の今週分を見る

Bug #???

  • Nothing

Organization blogs

Personal blogs

  • InnoDBのすゝめ(仮)
    • sejima-san
    • 【ゲーム業界向けセミナー】ゲーム業界におけるMySQL での瀬島さんの発表資料
    • ゲームのバックエンドとしてMySQLを運用されてきた知見が詰まった60p超の大作
    • mysql_affected_rows()を活用する方法やシャーディングの目安、大量のデータを削除する際のロックを調整するために2ndary key -> PKとindexを2つ走査せずslaveで2ndary indexからPKを引いて、masterからPK指定で削除するテクニックなど知見が盛りだくさん
    • この分量を発表時間30分ですべてを話しきれるわけもなく、再度もしくは分割してどこかの機会で聞けるのを楽しみにしています

Update for last week (2019-09-23 ~ 2019-09-29)

MySQL Weeklyでは1週間ごとにMySQLのrelease-note, bug, official blog, organizationによるblog, 個人のblogをまとめ紹介しています。
更新は月曜 10時(AM)です。先週一週間のMySQL関連の更新を再確認するのにご活用ください。

また、このブログ記事はGitHub上で管理されていますMySQL-weekly repository。Issue, pull-request歓迎です。(完全に同期できているわけではありません)

Release note

  • Nothing

Bugs

基本的にMySQL Server5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedID#でdesc sort、結果の今週分を見る

Bug #96984 Typo in documentation (not 5.8)

Organization blogs

Personal blogs

  • Upgrading from MySQL 5.7 to MySQL 8.0 Part I

    • Dave Stokes-san
    • mysql-shellを使ったupgrade checkerの紹介
    • サンプルで実行結果を載せている
  • Upgrading from MySQL 5.7 to MySQL 8.0 Part II

    • Dave Stokes-san
    • さすがにインストールしてコマンド打っただけでは簡単すぎたと思ったのかPart2
    • upgrade checkでよく出る指摘は予約語をschema名で使っている場合とutf8, utf8mb4の変換が指摘されることだそう
      • 予約後はバッククォートでくくっていれば安全だから無視もできる
      • utf8のカラムはutf8mb4にalterすると良いよ、と言ってるけどonlineではできないのよね、、、
  • db tech showcase Tokyo 2019 2日目に参加してきました

    • yoku0825-san
    • yoku0825さんによるdb tech showcaseの参加記事
    • 本人の発表スライド(Shooting a trouble of MySQL)と紹介
    • 2日目のMySQL関連の発表、他Oracleの発表の紹介
  • MySQL table_encryption_privilege_check パラメータの挙動

    • mita2-san
    • default_table_encryptionに続き、table_encryption_privilege_checkの説明
    • (まとめ部分抜粋) データの暗号化を強制することが以下の運用を行うことで実現できます
      • table_encryption_privilege_check をONにしておく
      • DBAがENCRYPTION=Yを指定したデータベースを作成する
      • 開発者にはそのデータベースにのみ権限を付与する
  • さいきんのMySQLに関する取り組み(仮)

    • sejima-san
    • 先日開催されたdb tech showcaseでの瀬島さんの発表資料
    • MySQLインスタンスをオンプレからクラウドに移す上で重要な知見が詰まっている
      • 特にEC2でMySQLを運用するメリット
      • p.15「OSまるごとチューニングしたり、調査できる余地があるので、何かあったときに対応の選択肢が多い」
      • p.15「マイナーバージョンアップなどの決定権を、自分たちで持てる」
      • p.16「slaveだけ先行して新しいバージョンを試しやすい」
    • GREEMySQL運用の動向やEBS障害に関する課題等も説明されている