tag:blogger.com,1999:blog-23600369279279480322024-03-18T19:12:19.988+09:00日々の覚書日々調べたこととかの覚書。主にMySQL。yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.comBlogger655125tag:blogger.com,1999:blog-2360036927927948032.post-44910750411320383822024-03-15T10:58:00.008+09:002024-03-15T13:28:32.106+09:00MySQL 8.0からMySQL 8.3までの変更点まとめ<p> 【2024/03/15 09:19】</p><p style="margin: 0px 0px 1.2em !important;">現在までの8.0~8.3の新機能/Removal/Deperecatedまとめ。8.4が出たらたぶん足す。</p><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html">https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html</a></li><li style="margin: 0.5em 0px;"><a href="https://downloads.mysql.com/docs/refman-8.1-en.pdf">https://downloads.mysql.com/docs/refman-8.1-en.pdf</a></li><li style="margin: 0.5em 0px;"><a href="https://downloads.mysql.com/docs/refman-8.2-en.pdf">https://downloads.mysql.com/docs/refman-8.2-en.pdf</a></li><li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.3/en/mysql-nutshell.html">https://dev.mysql.com/doc/refman/8.3/en/mysql-nutshell.html</a></li><li style="margin: 0.5em 0px;">8.1と8.2は既にWEBからたどれずに <a href="https://dev.mysql.com/doc/index-archive.html">Archive</a> にいってることに注意(8.3も行くんじゃないかな)</li></ul><hr /><p style="margin: 0px 0px 1.2em !important;">What Is New in .. のページを軸にしているので細かいリリースノートは見てない。8.2で変わったのが8.3にもリストされていたり、8.1で変わったのは8.2にリストされていなかったり、たぶん直前のInnovation Releaseとの差だけ記載しているっぽいのでUNION DISTINCTしてある。</p><p style="margin: 0px 0px 1.2em !important;">Enterprise限定機能はパス。記載基準は独断と偏見。</p><table style="border-collapse: collapse; border-spacing: 0px; border: 0px; font: inherit; margin: 1.2em 0px; padding: 0px;"><thead><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><th style="background-color: #f0f0f0; border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Version</th><th style="background-color: #f0f0f0; border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Feature</th><th style="background-color: #f0f0f0; border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Comment</th></tr></thead><tbody style="border: 0px; margin: 0px; padding: 0px;"><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New Data Dictionary(InnoDB)</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">使おうと思っても嫌だと思っても選択肢はない</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Atomic DDL(クラッシュリカバリ可能DDL)</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Good</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysql_upgrade deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0.16とそれ以降, 特に影響ないはずだけどupgrade処理が走った直後はmysqld再起動推奨(これはmysql_upgrade時代も俺は推奨していた)</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Atomic CREATE USER / GRANT(クラッシュリカバリ可能)</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">可もなく不可もなく…</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">default_authentication_plugin=caching_sha2_password</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">仕様を知らないと開発環境でハマるかも</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">sha2_password deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Connector/Jとかからつないでると試すだけ試そうとしてエラーログがうるさくなる</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ROLE</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New, ..けど地雷は埋まってる</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">deprecated SUPER priv</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">以後、色々分割されてる</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">partial_revokes</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">まあ便利だけどハマった</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">password_history</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">使ったことない</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ALTER INSTANCE RELOAD TLS</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">使ったことない</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Support TLS1.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0.16とそれ以降, ただしリンクされてるOpenSSLのバージョンによる</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove TLS1, TLS1.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0.28とそれ以降</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Add Resource Group</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">自分でSETしないといけなくて使いにくい</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">default_table_encryption</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Good</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">auto_incrementの値の永続化</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">5.7までは最後の番号を歯抜けにしておくと再利用されちゃった</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_memcachedがmgetサポート</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">誰が喜ぶのか謎</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">deprecated innodb_memcached</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">↑とこれが一緒にリストされているのが8.0っぽい</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_deadlock_detect=OFFで高負荷環境のCPUがマシになることも</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ただしデッドロック検出エラーがなくなるのでinnodb_lock_wait_timeoutで制御が必要</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">InnoDB Temporary Tableがibtmp1から*.ibtファイルに(8.0.13とそれ以降)</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">これで「あふれたら必ず再起動」ではなくなった</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">REDOログ, UNDOログ, binlogの暗号化サポート</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Good</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SELECT .. FOR {SHARE</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">UPDATE} SKIP LOCKED 追加</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Good</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">パーティション操作のいくつかがオンラインALTER TABLEに対応</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">もともとADDとDROPしかしないのであんまり実感ない</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">UNDOテーブルスペースの切り出しがデフォルト化</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_undo_truncationもデフォルトON</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_autoinc_lock_mode=2がデフォルト化</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">binlog_format=MIXED以下の場合、旧デフォルトのinnodb_autoinc_lock_mode=1にしないとおかしなことになるかも</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_dedicated_server support</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">使ってない…</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">.frm replaced .SDI files</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">慣れれば見やすい、InnoDBの場合は ibd2sdiコマンドで見る</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_directoriesサポート</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">.ibdファイルをdatadirの外に置けるようにはなったけどもうそういうケースってどれだけあるんだろう</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Log writer threadが分離</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">よほどCPUが強いマシンでない限り性能が劣化するアレ。innodb_log_writer_threadでOFFにできるのは8.0.22とそれ以降</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ALGORITHM=INSTANT, 第1弾(末尾のADDのみ)は8.0.12, 第2弾(どこでもADD + DROP)は8.0.29</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">これをまたいだinplace-updateは鬼門</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">暗黙のテンポラリテーブルに対するTempTableストレージエンジン</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">結構パフォーマンス問題が大きく取り上げられた。tmptable_max_mmap導入の8.0.23で落ち着いたかと思いきや、8.0.28でtmp_table_sizeもこの動作に影響するように変更されてまたひと悶着</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_buffer_pool_in_core_file supported</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Good</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Parallel Table Scan</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">MySQLがパラレルって言いだすとろくなことがない…</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Histgramのサポート</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">MySQLerはこれよりも複合インデックス作りがち</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Separated Doublewrite buffer</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ibdata1から切り離された</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Transaction algorithm FIFO to CATS</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">あんまり差を感じたことはない</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ALTER INSTANCE DISABLE INNODB REDO_LOG</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">インポートはちょっぱや。ENABLEに戻さずにmysqldが異常終了すると起動しなくなる</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_validate_tablepace_paths</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0.21とそれ以降で大量に.ibdを持っている環境だと起動が遅くなった。なんか今はパラレル化されたみたいでマシになった</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">CREATE TABLE .. SELECT ..がGTID環境下でサポート</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">これができてgtid_mode=ONにできるようになった環境がある。Good</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Add innodb_doublewrite=DETECT_ONLY</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0.30とそれ以降</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_redo_log_capacity</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0.30とそれ以降。さよならib_logfile</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">default_character_set latin1 to utf8mb4</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">日本人は困らないけど英語圏の人たちがパフォーマンスに悩まされたらしい</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Add JSON_TABLE</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">自分で使うぶんには便利だけど、いざ誰かが使っているのを(パフォーマンス含め)トラブルシュートするのは結構大変</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Add INVISIBLE INDEX</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">DROP INDEX前の切り戻しが楽</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">降順INDEX</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">昇順のままでもパフォーマンスはそんなに変わらない。ORDER BY .. ASC, .. DESCのケースはこれでしか対応できない</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Functional Index</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">地味にオプティマイザがちゃんと選んでくれないケースが多発, 個人的にはgenerated column + indexでgenerated columnを指定する方が安定する</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">全体的なsemijionの改良</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">思ったより賢くなっててびっくり</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">HASH JOIN</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">おとなしくインデックスを貼りましょう</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">WITH (RECURSIVE) Clause</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">見やすくなるけど別に速いとは言ってない</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Window Function</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">速くなるとは言ってない</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ICU Regexp support</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">便利になったけど遅くはなってるし地味に非互換</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">MY-xxxxx in error-log</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ORA-xxxxx 的な感じになった</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">LOCK INSTANCE FOR BACKUP</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">知らずに使うと不思議な感じになるかも主にxtrabackupでお目にかかる</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">JSON系関数が増えた。JSON_SCHEMA_VALIDでバリデーションすらできる</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">~それならカラムに切り出した方が</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Multi-valued indexes</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">1対多のインデックスが作れる。JSON型専用。鬼門</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Clone Plugin</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">いいぞ便利だ</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">EXPLAIN ANALYZE</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">いまいち情報が足りないと思ってしまうけど慣れてる人には便利らしい</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">タイムゾーンオフセット記法。 2024-03-15:10:32:00+0900とか</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">UTCで入れてるとなじみがない</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SELECT .. INTO ..のINTOが変なところに入るとエラー</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">一応非互換</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">オプティマイザヒントの拡充</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">便利なのが増えた</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Dual password</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">地味に便利</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">optimizer_switchの拡充</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">賢くなったのはこれが一端</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">TIMESTAMPのなんちゃって64bit拡張</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">timestampデータ型じゃなくてTIMESTAMP関数の話</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">expire_logs_days -> binlog_expire_logs_seconds</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">でも日付単位 <em>24 </em>60 * 60で設定しちゃう</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">GIPK</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">特定のケースで便利だったけどふとauto_incrementを足そうと思った時にぶつかる可能性あり</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">INTERSECTとEXPECTのサポート</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ついに!!! (速いくなるとは言ってない)</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">performance_schema.error_log</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">直近5MBぶんのエラーログがシェルなしでも確認可能</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">GRANT .. ON <code style="border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">d%</code> のワイルドカード非推奨</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">partial_grantsと合わせると8.0時点でも死ぬ</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">deprecate character_set_client_handshake</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">utf8系に統一してれば怖くない</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">deprecated mysql_native_password</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ここで非推奨ということはいつか消えるってことだ…</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">FLOATまたはDOUBLE型でのauto_incrementの非推奨</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">むしろこんなことできることを知っていた人が少ない気がする</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">int系の桁数指定およびZEROFILL</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">まあ整数型をそういうことに使ってはいけない…</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SQL_CALC_FOUND_ROWS deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">ORDER BY .. LIMITの最適化を殺すやつ。意外と現役は多い気がする</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">FLUSH HOSTSの非推奨</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">TRUNCATE performance_schema.host_cacheに変えろ殿こと。skip_name_resolve環境ではそもそも関係なし</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">deprecated relay_log_info_repository = FILE / master_info_repository = FILE</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">既にFILEを使用する必要は全くないはず</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">depreacted MYSQL_PWD env variable</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysqlコマンドラインクライアントのワーニングを黙らせるのに有効だった手順が一つ消えた。 .mylogin.cnf使えってさ</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">deprecate default_authentication_plugin</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">消えて指定できなくなるとは言ってないけど代わりにauthentication_policyというので指定しろと</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">replica_parallel_type deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">いずれLOGICAL_CLOCKオンリーに</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">replica_parallel_workers=0 deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">deprecatedになったのは=0だけ。変わらずシングルスレッドでやらせたいなら=1</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_log_files_in_group, innodb_log_file_size deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">innodb_redo_log_capacityに取って変わられた。お馴染みのオプションなのでちょっと寂しい</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">予約語が増えた</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">MySQL Shellのアップグレードチェッカー使いましょう。binlog_format=ROWだと「レプリケーションつないでるから更新クエリが通ることは保証される」ということはないです</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">binlog_format deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">今後はROWしか選ばせてくれないつもりらしい</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysqlpump deprecated</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysqldumpじゃないよ、mysqlpumpだよ</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">binlog_transaction_dependency_tracking</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">GroupReplication経験者は記憶にあるかもなアレ。WRITESETがデフォルトになるらしいけどCASCADEのFKと相性が悪いバグがある(直ったのかどうか不明)</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">InnoDB系のinformation_schemaのテーブル名が変わってる</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">自分でユーティリティーを作っているタイプの人がハマるやつ</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">GRANT USAGE ON <em>.</em> TO ..でCREATE USERの代わりにする</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">できなくなった</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">IDENTIFIED BY PASSWORD ‘*..’</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">できなくなった。代替は IDENTIFIED WITH mysql_native_password AS ‘*..’</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">PASSWORD function removed</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">代替は SELECT CONCAT(‘*’, UPPER(SHA1(UNHEX(SHA1(‘mypass’)))))</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Query cache removed</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">さよならクエリキャッシュ</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">tx_isolation -> transaction_isolation</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">クライアントのバージョンによって死ぬことgああったやつ</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">log_warnings -> log_error_verbosity</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">5.7でお馴染みの</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">GROUP BY c1 ASC</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">この謎記法が消えた</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">EXPLAIN EXTENDED removed</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">デフォルトがEXTENDED相当になったので記法が消えた。実質困らないけど手癖で打ってエラることが</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">GIS系の関数の名前がごっそり入れ替わる</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">大変だったらしい</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">—ssl removed</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">代わりに —ssl-mode</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">datadirの中の #mysql50# から始まるディレクトリ</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">5.0とそれ以降に変な文字が入ったデータベースをCREATEすると出来上がる</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysql_install_db</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">代わりにmysqld —initialize(-insecure). 5.7で非推奨になったのが削除された</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.0</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SELECT .. INTO @val 記法の非推奨</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">これからは SET @val := ..を使うらしい</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">EXPLAIN format=JSON INTO @val</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysql —comment made default</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">source_retry_count 86400 -> 10</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">group_replication_set_as_primary vs DDL</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Middle?</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Extend “version-specific comment”</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">-</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">More logging during shutdown sequence</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SHOW PARSE_TREE statement</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">tls_certificates_enforced_validation</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Group Replication status variables added</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.1</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">—some-option=NULL is prohibited</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">More logging startup/shutdown sequence</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">optimizer_switch: hash_set_operations</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SET_USER_ID is devided to SET_ANY_DEFINER and ALLOW_NONEXISTENT_DEFINER</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">EXPLAIN FOR SCHEMA</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">START REPLICA UNTIL SQL_AFTER_GTIDS in MultiThreadApplier</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysqldump —output-as-version</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Middle</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove expire_logs_days</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SET gtid_next = <uuid>:<tag>:<number></number></tag></uuid></td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Another EXPLAIN format, SET explain_json_format_version = 2</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Default binlog_transaction_dependency_tracking = WRITESET</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Middle</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SHOW STATUS LIKE ‘Deprecated_use_i_s_processlist%’</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">New</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Incompatible changes in libmysqlclient.so</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">High</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove FLUSH HOSTS</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove slave_rows_search_algorithms, relay_log_info_file, relay_log_info_repository, master_info_file, master_info_repository</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove group_replication_ip_whitelist</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove skip_host_cache</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Little</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Remove skip_character_set_client_handshake</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Middle?</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">8.3</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Unsupport binlog_format=MIXED vs binlog_transaction_dependency_tracking=WRITESET</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Middle?</td></tr></tbody></table><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+44CQMjAyNC8wMy8xNSAwOToxOeOAkTwvcD48cD7nj77lnKjjgb7jgafjga44LjDvvZ44LjPj
ga7mlrDmqZ/og70vUmVtb3ZhbC9EZXBlcmVjYXRlZOOBvuOBqOOCgeOAgjguNOOBjOWHuuOBn+OC
ieOBn+OBtuOCk+i2s+OBmeOAgjwvcD48cD48YnI+PC9wPjxwPi0mbmJzcDtodHRwczovL2Rldi5t
eXNxbC5jb20vZG9jL3JlZm1hbi84LjAvZW4vbXlzcWwtbnV0c2hlbGwuaHRtbDwvcD48cD4tJm5i
c3A7aHR0cHM6Ly9kb3dubG9hZHMubXlzcWwuY29tL2RvY3MvcmVmbWFuLTguMS1lbi5wZGY8L3A+
PHA+LSZuYnNwO2h0dHBzOi8vZG93bmxvYWRzLm15c3FsLmNvbS9kb2NzL3JlZm1hbi04LjItZW4u
cGRmPC9wPjxwPi0mbmJzcDtodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi84LjMvZW4v
bXlzcWwtbnV0c2hlbGwuaHRtbDwvcD48cD4tIDguMeOBqDguMuOBr+aXouOBq1dFQuOBi+OCieOB
n+OBqeOCjOOBmuOBqyBbQXJjaGl2ZV0oaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9pbmRleC1h
cmNoaXZlLmh0bWwpIOOBq+OBhOOBo+OBpuOCi+OBk+OBqOOBq+azqOaEjyg4LjPjgoLooYzjgY/j
gpPjgZjjgoPjgarjgYTjgYvjgaopPC9wPjxwPi0tLS08L3A+PHA+PGJyPjwvcD48cD5XaGF0IElz
IE5ldyBpbiAuLiDjga7jg5rjg7zjgrjjgpLou7jjgavjgZfjgabjgYTjgovjga7jgafntLDjgYvj
gYTjg6rjg6rjg7zjgrnjg47jg7zjg4jjga/opovjgabjgarjgYTjgII4LjLjgaflpInjgo/jgaPj
gZ/jga7jgYw4LjPjgavjgoLjg6rjgrnjg4jjgZXjgozjgabjgYTjgZ/jgorjgIE4LjHjgaflpInj
go/jgaPjgZ/jga7jga84LjLjgavjg6rjgrnjg4jjgZXjgozjgabjgYTjgarjgYvjgaPjgZ/jgorj
gIHjgZ/jgbbjgpPnm7TliY3jga5Jbm5vdmF0aW9uIFJlbGVhc2Xjgajjga7lt67jgaDjgZHoqJjo
vInjgZfjgabjgYTjgovjgaPjgb3jgYTjga7jgadVTklPTiBESVNUSU5DVOOBl+OBpuOBguOCi+OA
gjwvcD48cD48YnI+PC9wPjxwPkVudGVycHJpc2XpmZDlrprmqZ/og73jga/jg5HjgrnjgILoqJjo
vInln7rmupbjga/ni6zmlq3jgajlgY/opovjgII8L3A+PHA+PGJyPjwvcD48cD58VmVyc2lvbnwg
RmVhdHVyZSB8IENvbW1lbnQgfDwvcD48cD58LS18PC9wPjxwPnw4LjB8TmV3IERhdGEgRGljdGlv
bmFyeShJbm5vREIpIHwg5L2/44GK44GG44Go5oCd44Gj44Gm44KC5auM44Gg44Go5oCd44Gj44Gm
44KC6YG45oqe6IKi44Gv44Gq44GEIHw8L3A+PHA+fDguMHxBdG9taWMgRERMKOOCr+ODqeODg+OC
t+ODpeODquOCq+ODkOODquWPr+iDvURETCkgfCBHb29kIHw8L3A+PHA+fDguMHwgbXlzcWxfdXBn
cmFkZSBkZXByZWNhdGVkIHwgOC4wLjE244Go44Gd44KM5Lul6ZmNLCDnibnjgavlvbHpn7/jgarj
gYTjga/jgZrjgaDjgZHjgal1cGdyYWRl5Yem55CG44GM6LWw44Gj44Gf55u05b6M44GvbXlzcWxk
5YaN6LW35YuV5o6o5aWoKOOBk+OCjOOBr215c3FsX3VwZ3JhZGXmmYLku6PjgoLkv7rjga/mjqjl
pajjgZfjgabjgYTjgZ8pfDwvcD48cD58OC4wfEF0b21pYyBDUkVBVEUgVVNFUiAvIEdSQU5UKOOC
r+ODqeODg+OCt+ODpeODquOCq+ODkOODquWPr+iDvSkgfCDlj6/jgoLjgarjgY/kuI3lj6/jgoLj
garjgY/igKZ8PC9wPjxwPnw4LjB8ZGVmYXVsdF9hdXRoZW50aWNhdGlvbl9wbHVnaW49Y2FjaGlu
Z19zaGEyX3Bhc3N3b3JkIHwg5LuV5qeY44KS55+l44KJ44Gq44GE44Go6ZaL55m655Kw5aKD44Gn
44OP44Oe44KL44GL44KCIHw8L3A+PHA+fDguMHwgc2hhMl9wYXNzd29yZCBkZXByZWNhdGVkIHwg
Q29ubmVjdG9yL0rjgajjgYvjgYvjgonjgaTjgarjgYTjgafjgovjgajoqabjgZnjgaDjgZHoqabj
gZ3jgYbjgajjgZfjgabjgqjjg6njg7zjg63jgrDjgYzjgYbjgovjgZXjgY/jgarjgot8PC9wPjxw
Pnw4LjB8Uk9MRSB8IE5ldywgLi7jgZHjganlnLDpm7fjga/ln4vjgb7jgaPjgabjgosgfDwvcD48
cD58OC4wfGRlcHJlY2F0ZWQgU1VQRVIgcHJpdiB8IOS7peW+jOOAgeiJsuOAheWIhuWJsuOBleOC
jOOBpuOCiyB8PC9wPjxwPnw4LjB8cGFydGlhbF9yZXZva2VzIHwg44G+44GC5L6/5Yip44Gg44GR
44Gp44OP44Oe44Gj44GfIHw8L3A+PHA+fDguMHwgcGFzc3dvcmRfaGlzdG9yeSB8IOS9v+OBo+OB
n+OBk+OBqOOBquOBhCB8PC9wPjxwPnw4LjB8QUxURVIgSU5TVEFOQ0UgUkVMT0FEIFRMUyB8IOS9
v+OBo+OBn+OBk+OBqOOBquOBhCB8PC9wPjxwPnw4LjAgfCBTdXBwb3J0IFRMUzEuMyB8IDguMC4x
NuOBqOOBneOCjOS7pemZjSwg44Gf44Gg44GX44Oq44Oz44Kv44GV44KM44Gm44KLT3BlblNTTOOB
ruODkOODvOOCuOODp+ODs+OBq+OCiOOCiyB8PC9wPjxwPnw4LjB8IFJlbW92ZSBUTFMxLCBUTFMx
LjEgfCA4LjAuMjjjgajjgZ3jgozku6XpmY0gfDwvcD48cD58OC4wfCBBZGQgUmVzb3VyY2UgR3Jv
dXAgfCDoh6rliIbjgadTRVTjgZfjgarjgYTjgajjgYTjgZHjgarjgY/jgabkvb/jgYTjgavjgY/j
gYQgfDwvcD48cD58OC4wfGRlZmF1bHRfdGFibGVfZW5jcnlwdGlvbnwgR29vZCB8PC9wPjxwPnw4
LjB8IGF1dG9faW5jcmVtZW5044Gu5YCk44Gu5rC457aa5YyWIHwgNS4344G+44Gn44Gv5pyA5b6M
44Gu55Wq5Y+344KS5q2v5oqc44GR44Gr44GX44Gm44GK44GP44Go5YaN5Yip55So44GV44KM44Gh
44KD44Gj44GfIHw8L3A+PHA+fCA4LjAgfCBpbm5vZGJfbWVtY2FjaGVk44GMbWdldOOCteODneOD
vOODiCB8IOiqsOOBjOWWnOOBtuOBruOBi+isjnw8L3A+PHA+fDguMHwgZGVwcmVjYXRlZCBpbm5v
ZGJfbWVtY2FjaGVkIHwg4oaR44Go44GT44KM44GM5LiA57eS44Gr44Oq44K544OI44GV44KM44Gm
44GE44KL44Gu44GMOC4w44Gj44G944GEfDwvcD48cD58OC4wfGlubm9kYl9kZWFkbG9ja19kZXRl
Y3Q9T0ZG44Gn6auY6LKg6I2355Kw5aKD44GuQ1BV44GM44Oe44K344Gr44Gq44KL44GT44Go44KC
fOOBn+OBoOOBl+ODh+ODg+ODieODreODg+OCr+aknOWHuuOCqOODqeODvOOBjOOBquOBj+OBquOC
i+OBruOBp2lubm9kYl9sb2NrX3dhaXRfdGltZW91dOOBp+WItuW+oeOBjOW/heimgXw8L3A+PHA+
fDguMHxJbm5vREIgVGVtcG9yYXJ5IFRhYmxl44GMaWJ0bXAx44GL44KJKi5pYnTjg5XjgqHjgqTj
g6vjgasoOC4wLjEz44Go44Gd44KM5Lul6ZmNKSB8IOOBk+OCjOOBp+OAjOOBguOBteOCjOOBn+OC
ieW/heOBmuWGjei1t+WLleOAjeOBp+OBr+OBquOBj+OBquOBo+OBnyB8PC9wPjxwPnw4LjB8UkVE
T+ODreOCsCwgVU5ET+ODreOCsCwgYmlubG9n44Gu5pqX5Y+35YyW44K144Od44O844OIIHwgR29v
ZCB8PC9wPjxwPnw4LjAgfCBTRUxFQ1QgLi4gRk9SIHtTSEFSRXxVUERBVEV9IFNLSVAgTE9DS0VE
IOi/veWKoCB8IEdvb2QgfDwvcD48cD58OC4wfOODkeODvOODhuOCo+OCt+ODp+ODs+aTjeS9nOOB
ruOBhOOBj+OBpOOBi+OBjOOCquODs+ODqeOCpOODs0FMVEVSIFRBQkxF44Gr5a++5b+cIHwg44KC
44Go44KC44GoQURE44GoRFJPUOOBl+OBi+OBl+OBquOBhOOBruOBp+OBguOCk+OBvuOCiuWun+aE
n+OBquOBhCB8PC9wPjxwPnw4LjB8VU5ET+ODhuODvOODluODq+OCueODmuODvOOCueOBruWIh+OC
iuWHuuOBl+OBjOODh+ODleOCqeODq+ODiOWMliB8IGlubm9kYl91bmRvX3RydW5jYXRpb27jgoLj
g4fjg5Xjgqnjg6vjg4hPTiB8PC9wPjxwPnw4LjB8IGlubm9kYl9hdXRvaW5jX2xvY2tfbW9kZT0y
44GM44OH44OV44Kp44Or44OI5YyWIHwgYmlubG9nX2Zvcm1hdD1NSVhFROS7peS4i+OBruWgtOWQ
iOOAgeaXp+ODh+ODleOCqeODq+ODiOOBrmlubm9kYl9hdXRvaW5jX2xvY2tfbW9kZT0x44Gr44GX
44Gq44GE44Go44GK44GL44GX44Gq44GT44Go44Gr44Gq44KL44GL44KCfDwvcD48cD58OC4wfGlu
bm9kYl9kZWRpY2F0ZWRfc2VydmVyIHN1cHBvcnQgfCDkvb/jgaPjgabjgarjgYTigKYgfDwvcD48
cD58OC4wfC5mcm0gcmVwbGFjZWQgLlNESSBmaWxlcyB8IOaFo+OCjOOCjOOBsOimi+OChOOBmeOB
hOOAgUlubm9EQuOBruWgtOWQiOOBryBpYmQyc2Rp44Kz44Oe44Oz44OJ44Gn6KaL44KLIHw8L3A+
PHA+fDguMHxpbm5vZGJfZGlyZWN0b3JpZXPjgrXjg53jg7zjg4h8IC5pYmTjg5XjgqHjgqTjg6vj
gpJkYXRhZGly44Gu5aSW44Gr572u44GR44KL44KI44GG44Gr44Gv44Gq44Gj44Gf44GR44Gp44KC
44GG44Gd44GG44GE44GG44Kx44O844K544Gj44Gm44Gp44KM44Gg44GR44GC44KL44KT44Gg44KN
44GGfDwvcD48cD58OC4wfCBMb2cgd3JpdGVyIHRocmVhZOOBjOWIhumboiB8IOOCiOOBu+OBqUNQ
VeOBjOW8t+OBhOODnuOCt+ODs+OBp+OBquOBhOmZkOOCiuaAp+iDveOBjOWKo+WMluOBmeOCi+OC
ouODrOOAgmlubm9kYl9sb2dfd3JpdGVyX3RocmVhZOOBp09GRuOBq+OBp+OBjeOCi+OBruOBrzgu
MC4yMuOBqOOBneOCjOS7pemZjXw8L3A+PHA+fDguMHwgQUxHT1JJVEhNPUlOU1RBTlQsIOesrDHl
vL4o5pyr5bC+44GuQURE44Gu44G/KeOBrzguMC4xMiwg56ysMuW8vijjganjgZPjgafjgoJBREQg
KyBEUk9QKeOBrzguMC4yOSB8IOOBk+OCjOOCkuOBvuOBn+OBhOOBoGlucGxhY2UtdXBkYXRl44Gv
6ay86ZaAIHw8L3A+PHA+fDguMHzmmpfpu5njga7jg4bjg7Pjg53jg6njg6rjg4bjg7zjg5bjg6vj
gavlr77jgZnjgotUZW1wVGFibGXjgrnjg4jjg6zjg7zjgrjjgqjjg7Pjgrjjg7MgfCDntZDmp4vj
g5Hjg5Xjgqnjg7zjg57jg7PjgrnllY/poYzjgYzlpKfjgY3jgY/lj5bjgorkuIrjgZLjgonjgozj
gZ/jgIJ0bXB0YWJsZV9tYXhfbW1hcOWwjuWFpeOBrjguMC4yM+OBp+iQveOBoeedgOOBhOOBn+OB
i+OBqOaAneOBhOOBjeOChOOAgTguMC4yOOOBp3RtcF90YWJsZV9zaXpl44KC44GT44Gu5YuV5L2c
44Gr5b2x6Z+/44GZ44KL44KI44GG44Gr5aSJ5pu044GV44KM44Gm44G+44Gf44Gy44Go5oK2552A
fDwvcD48cD58OC4wfGlubm9kYl9idWZmZXJfcG9vbF9pbl9jb3JlX2ZpbGUgc3VwcG9ydGVkIHwg
R29vZCB8PC9wPjxwPnw4LjB8IFBhcmFsbGVsIFRhYmxlIFNjYW4gfCBNeVNRTOOBjOODkeODqeOD
rOODq+OBo+OBpuiogOOBhOOBoOOBmeOBqOOCjeOBj+OBquOBk+OBqOOBjOOBquOBhOKApiB8PC9w
PjxwPnw4LjAgfCBIaXN0Z3JhbeOBruOCteODneODvOODiCB8IE15U1FMZXLjga/jgZPjgozjgojj
gorjgoLopIflkIjjgqTjg7Pjg4fjg4Pjgq/jgrnkvZzjgorjgYzjgaEgfDwvcD48cD58OC4wfCBT
ZXBhcmF0ZWQgRG91Ymxld3JpdGUgYnVmZmVyIHwgaWJkYXRhMeOBi+OCieWIh+OCiumbouOBleOC
jOOBnyB8PC9wPjxwPnw4LjB8VHJhbnNhY3Rpb24gYWxnb3JpdGhtIEZJRk8gdG8gQ0FUUyB8IOOB
guOCk+OBvuOCiuW3ruOCkuaEn+OBmOOBn+OBk+OBqOOBr+OBquOBhCB8PC9wPjxwPnw4LjB8IEFM
VEVSIElOU1RBTkNFIERJU0FCTEUgSU5OT0RCIFJFRE9fTE9HIHwg44Kk44Oz44Od44O844OI44Gv
44Gh44KH44Gj44Gx44KE44CCRU5BQkxF44Gr5oi744GV44Ga44GrbXlzcWxk44GM55Ww5bi457WC
5LqG44GZ44KL44Go6LW35YuV44GX44Gq44GP44Gq44KLIHw8L3A+PHA+fDguMHxpbm5vZGJfdmFs
aWRhdGVfdGFibGVwYWNlX3BhdGhzfCA4LjAuMjHjgajjgZ3jgozku6XpmY3jgaflpKfph4/jgasu
aWJk44KS5oyB44Gj44Gm44GE44KL55Kw5aKD44Gg44Go6LW35YuV44GM6YGF44GP44Gq44Gj44Gf
44CC44Gq44KT44GL5LuK44Gv44OR44Op44Os44Or5YyW44GV44KM44Gf44G/44Gf44GE44Gn44Oe
44K344Gr44Gq44Gj44GffDwvcD48cD58OC4wfENSRUFURSBUQUJMRSAuLiBTRUxFQ1QgLi7jgYxH
VElE55Kw5aKD5LiL44Gn44K144Od44O844OIIHwg44GT44KM44GM44Gn44GN44GmZ3RpZF9tb2Rl
PU9O44Gr44Gn44GN44KL44KI44GG44Gr44Gq44Gj44Gf55Kw5aKD44GM44GC44KL44CCR29vZCB8
PC9wPjxwPnw4LjB8QWRkIGlubm9kYl9kb3VibGV3cml0ZT1ERVRFQ1RfT05MWXw4LjAuMzDjgajj
gZ3jgozku6XpmY18PC9wPjxwPnw4LjB8aW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IHwgOC4wLjMw
44Go44Gd44KM5Lul6ZmN44CC44GV44KI44Gq44KJaWJfbG9nZmlsZSB8PC9wPjxwPnw4LjB8IGRl
ZmF1bHRfY2hhcmFjdGVyX3NldCBsYXRpbjEgdG8gdXRmOG1iNCB8IOaXpeacrOS6uuOBr+WbsOOC
ieOBquOBhOOBkeOBqeiLseiqnuWcj+OBruS6uuOBn+OBoeOBjOODkeODleOCqeODvOODnuODs+OC
ueOBq+aCqeOBvuOBleOCjOOBn+OCieOBl+OBhCB8PC9wPjxwPnw4LjB8QWRkIEpTT05fVEFCTEUg
fCDoh6rliIbjgafkvb/jgYbjgbbjgpPjgavjga/kvr/liKnjgaDjgZHjganjgIHjgYTjgZboqrDj
gYvjgYzkvb/jgaPjgabjgYTjgovjga7jgpIo44OR44OV44Kp44O844Oe44Oz44K55ZCr44KBKeOD
iOODqeODluODq+OCt+ODpeODvOODiOOBmeOCi+OBruOBr+e1kOani+Wkp+WkiSB8Jm5ic3A7PC9w
PjxwPnw4LjB8IEFkZCBJTlZJU0lCTEUgSU5ERVggfCBEUk9QIElOREVY5YmN44Gu5YiH44KK5oi7
44GX44GM5qW9IHw8L3A+PHA+fDguMHwg6ZmN6aCGSU5ERVggfCDmmIfpoIbjga7jgb7jgb7jgafj
goLjg5Hjg5Xjgqnjg7zjg57jg7Pjgrnjga/jgZ3jgpPjgarjgavlpInjgo/jgonjgarjgYTjgIJP
UkRFUiBCWSAuLiBBU0MsIC4uIERFU0Pjga7jgrHjg7zjgrnjga/jgZPjgozjgafjgZfjgYvlr77l
v5zjgafjgY3jgarjgYR8PC9wPjxwPnw4LjB8IEZ1bmN0aW9uYWwgSW5kZXggfCDlnLDlkbPjgavj
gqrjg5fjg4bjgqPjg57jgqTjgrbjgYzjgaHjgoPjgpPjgajpgbjjgpPjgafjgY/jgozjgarjgYTj
grHjg7zjgrnjgYzlpJrnmbosIOWAi+S6uueahOOBq+OBr2dlbmVyYXRlZCBjb2x1bW4gKyBpbmRl
eOOBp2dlbmVyYXRlZCBjb2x1bW7jgpLmjIflrprjgZnjgovmlrnjgYzlronlrprjgZnjgosgfDwv
cD48cD58OC4wfOWFqOS9k+eahOOBqnNlbWlqaW9u44Gu5pS56ImvfCDmgJ3jgaPjgZ/jgojjgoro
s6LjgY/jgarjgaPjgabjgabjgbPjgaPjgY/jgoogfDwvcD48cD58OC4wfCBIQVNIIEpPSU4gfCDj
gYrjgajjgarjgZfjgY/jgqTjg7Pjg4fjg4Pjgq/jgrnjgpLosrzjgorjgb7jgZfjgofjgYYgfDwv
cD48cD58OC4wfCBXSVRIIChSRUNVUlNJVkUpIENsYXVzZSB8IOimi+OChOOBmeOBj+OBquOCi+OB
keOBqeWIpeOBq+mAn+OBhOOBqOOBr+iogOOBo+OBpuOBquOBhCB8PC9wPjxwPnw4LjB8IFdpbmRv
dyBGdW5jdGlvbiB8IOmAn+OBj+OBquOCi+OBqOOBr+iogOOBo+OBpuOBquOBhCB8PC9wPjxwPnw4
LjB8IElDVSBSZWdleHAgc3VwcG9ydCB8IOS+v+WIqeOBq+OBquOBo+OBn+OBkeOBqemBheOBj+OB
r+OBquOBo+OBpuOCi+OBl+WcsOWRs+OBq+mdnuS6kuaPmyB8PC9wPjxwPnw4LjB8IE1ZLXh4eHh4
IGluIGVycm9yLWxvZyB8IE9SQS14eHh4eCDnmoTjgarmhJ/jgZjjgavjgarjgaPjgZ8gfDwvcD48
cD58OC4wfCBMT0NLIElOU1RBTkNFIEZPUiBCQUNLVVAgfCDnn6XjgonjgZrjgavkvb/jgYbjgajk
uI3mgJ3orbDjgarmhJ/jgZjjgavjgarjgovjgYvjgoLkuLvjgat4dHJhYmFja3Vw44Gn44GK55uu
44Gr44GL44GL44KLfDwvcD48cD58OC4wfEpTT07ns7vplqLmlbDjgYzlopfjgYjjgZ/jgIJKU09O
X1NDSEVNQV9WQUxJROOBp+ODkOODquODh+ODvOOCt+ODp+ODs+OBmeOCieOBp+OBjeOCi3wgfuOB
neOCjOOBquOCieOCq+ODqeODoOOBq+WIh+OCiuWHuuOBl+OBn+aWueOBjCB8PC9wPjxwPnw4LjB8
TXVsdGktdmFsdWVkIGluZGV4ZXMgfCAx5a++5aSa44Gu44Kk44Oz44OH44OD44Kv44K544GM5L2c
44KM44KL44CCSlNPTuWei+WwgueUqOOAgumsvOmWgCB8PC9wPjxwPnw4LjB8Q2xvbmUgUGx1Z2lu
IHwg44GE44GE44Ge5L6/5Yip44GgIHw8L3A+PHA+fDguMHxFWFBMQUlOIEFOQUxZWkUgfCDjgYTj
gb7jgYTjgaHmg4XloLHjgYzotrPjgorjgarjgYTjgajmgJ3jgaPjgabjgZfjgb7jgYbjgZHjganm
haPjgozjgabjgovkurrjgavjga/kvr/liKnjgonjgZfjgYQgfDwvcD48cD58OC4wfOOCv+OCpOOD
oOOCvuODvOODs+OCquODleOCu+ODg+ODiOiomOazleOAgiAyMDI0LTAzLTE1OjEwOjMyOjAwKzA5
MDDjgajjgYsgfCBVVEPjgaflhaXjgozjgabjgovjgajjgarjgZjjgb/jgYzjgarjgYQgfDwvcD48
cD58OC4wfFNFTEVDVCAuLiBJTlRPIC4u44GuSU5UT+OBjOWkieOBquOBqOOBk+OCjeOBq+WFpeOC
i+OBqOOCqOODqeODvCB8IOS4gOW/nOmdnuS6kuaPmyB8PC9wPjxwPnw4LjB844Kq44OX44OG44Kj
44Oe44Kk44K244OS44Oz44OI44Gu5ouh5YWFIHwg5L6/5Yip44Gq44Gu44GM5aKX44GI44GfIHw8
L3A+PHA+fDguMHxEdWFsIHBhc3N3b3JkIHwg5Zyw5ZGz44Gr5L6/5YipIHw8L3A+PHA+fDguMHxv
cHRpbWl6ZXJfc3dpdGNo44Gu5ouh5YWFIHwg6LOi44GP44Gq44Gj44Gf44Gu44Gv44GT44KM44GM
5LiA56uvIHw8L3A+PHA+fDguMHxUSU1FU1RBTVDjga7jgarjgpPjgaHjgoPjgaPjgaY2NGJpdOaL
oeW8tXx0aW1lc3RhbXDjg4fjg7zjgr/lnovjgZjjgoPjgarjgY/jgaZUSU1FU1RBTVDplqLmlbDj
ga7oqbF8PC9wPjxwPnw4LjB8IGV4cGlyZV9sb2dzX2RheXMgLSZndDsgYmlubG9nX2V4cGlyZV9s
b2dzX3NlY29uZHMgfCDjgafjgoLml6Xku5jljZjkvY0gKiAyNCAqIDYwICogNjDjgafoqK3lrprj
gZfjgaHjgoPjgYYgfDwvcD48cD58OC4wfEdJUEsgfCDnibnlrprjga7jgrHjg7zjgrnjgafkvr/l
iKnjgaDjgaPjgZ/jgZHjganjgbXjgahhdXRvX2luY3JlbWVudOOCkui2s+OBneOBhuOBqOaAneOB
o+OBn+aZguOBq+OBtuOBpOOBi+OCi+WPr+iDveaAp+OBguOCinw8L3A+PHA+fDguMHxJTlRFUlNF
Q1TjgahFWFBFQ1Tjga7jgrXjg53jg7zjg4h844Gk44GE44Gr77yB77yB77yBICjpgJ/jgYTjgY/j
garjgovjgajjga/oqIDjgaPjgabjgarjgYQpfDwvcD48cD58OC4wfHBlcmZvcm1hbmNlX3NjaGVt
YS5lcnJvcl9sb2cgfCDnm7Tov5E1TULjgbbjgpPjga7jgqjjg6njg7zjg63jgrDjgYzjgrfjgqfj
g6vjgarjgZfjgafjgoLnorroqo3lj6/og70gfDwvcD48cD58OC4wfCBHUkFOVCAuLiBPTiBgZCVg
IOOBruODr+OCpOODq+ODieOCq+ODvOODiemdnuaOqOWlqCB8IHBhcnRpYWxfZ3JhbnRz44Go5ZCI
44KP44Gb44KL44GoOC4w5pmC54K544Gn44KC5q2744GsIHw8L3A+PHA+fDguMCB8IGRlcHJlY2F0
ZSBjaGFyYWN0ZXJfc2V0X2NsaWVudF9oYW5kc2hha2UgfCB1dGY457O744Gr57Wx5LiA44GX44Gm
44KM44Gw5oCW44GP44Gq44GEIHw8L3A+PHA+fDguMHwgZGVwcmVjYXRlZCBteXNxbF9uYXRpdmVf
cGFzc3dvcmQgfCDjgZPjgZPjgafpnZ7mjqjlpajjgajjgYTjgYbjgZPjgajjga/jgYTjgaTjgYvm
tojjgYjjgovjgaPjgabjgZPjgajjgaDigKYgfDwvcD48cD58OC4wfEZMT0FU44G+44Gf44GvRE9V
QkxF5Z6L44Gn44GuYXV0b19pbmNyZW1lbnTjga7pnZ7mjqjlpah844KA44GX44KN44GT44KT44Gq
44GT44Go44Gn44GN44KL44GT44Go44KS55+l44Gj44Gm44GE44Gf5Lq644GM5bCR44Gq44GE5rCX
44GM44GZ44KLfDwvcD48cD58OC4wfGludOezu+OBruahgeaVsOaMh+WumuOBiuOCiOOBs1pFUk9G
SUxMIHwg44G+44GC5pW05pWw5Z6L44KS44Gd44GG44GE44GG44GT44Go44Gr5L2/44Gj44Gm44Gv
44GE44GR44Gq44GE4oCmIHw8L3A+PHA+fDguMHxTUUxfQ0FMQ19GT1VORF9ST1dTIGRlcHJlY2F0
ZWQgfCBPUkRFUiBCWSAuLiBMSU1JVOOBruacgOmBqeWMluOCkuauuuOBmeOChOOBpOOAguaEj+Wk
luOBqOePvuW9ueOBr+WkmuOBhOawl+OBjOOBmeOCiyB8PC9wPjxwPnw4LjB8RkxVU0ggSE9TVFPj
ga7pnZ7mjqjlpaggfCBUUlVOQ0FURSBwZXJmb3JtYW5jZV9zY2hlbWEuaG9zdF9jYWNoZeOBq+Wk
ieOBiOOCjeauv+OBk+OBqOOAgnNraXBfbmFtZV9yZXNvbHZl55Kw5aKD44Gn44Gv44Gd44KC44Gd
44KC6Zai5L+C44Gq44GXfDwvcD48cD58OC4wfGRlcHJlY2F0ZWQgcmVsYXlfbG9nX2luZm9fcmVw
b3NpdG9yeSA9IEZJTEUgLyBtYXN0ZXJfaW5mb19yZXBvc2l0b3J5ID0gRklMRSB8IOaXouOBq0ZJ
TEXjgpLkvb/nlKjjgZnjgovlv4XopoHjga/lhajjgY/jgarjgYTjga/jgZogfDwvcD48cD58OC4w
fCBkZXByZWFjdGVkIE1ZU1FMX1BXRCBlbnYgdmFyaWFibGUgfCBteXNxbOOCs+ODnuODs+ODieOD
qeOCpOODs+OCr+ODqeOCpOOCouODs+ODiOOBruODr+ODvOODi+ODs+OCsOOCkum7meOCieOBm+OC
i+OBruOBq+acieWKueOBoOOBo+OBn+aJi+mghuOBjOS4gOOBpOa2iOOBiOOBn+OAgiAubXlsb2dp
bi5jbmbkvb/jgYjjgaPjgabjgZUgfDwvcD48cD58OC4wfGRlcHJlY2F0ZSBkZWZhdWx0X2F1dGhl
bnRpY2F0aW9uX3BsdWdpbnzmtojjgYjjgabmjIflrprjgafjgY3jgarjgY/jgarjgovjgajjga/o
qIDjgaPjgabjgarjgYTjgZHjganku6Pjgo/jgorjgathdXRoZW50aWNhdGlvbl9wb2xpY3njgajj
gYTjgYbjga7jgafmjIflrprjgZfjgo3jgah8PC9wPjxwPnw4LjB8cmVwbGljYV9wYXJhbGxlbF90
eXBlIGRlcHJlY2F0ZWQgfCDjgYTjgZrjgoxMT0dJQ0FMX0NMT0NL44Kq44Oz44Oq44O844GrIHw8
L3A+PHA+fDguMHxyZXBsaWNhX3BhcmFsbGVsX3dvcmtlcnM9MCBkZXByZWNhdGVkIHwgZGVwcmVj
YXRlZOOBq+OBquOBo+OBn+OBruOBrz0w44Gg44GR44CC5aSJ44KP44KJ44Ga44K344Oz44Kw44Or
44K544Os44OD44OJ44Gn44KE44KJ44Gb44Gf44GE44Gq44KJPTF8PC9wPjxwPnw4LjB8aW5ub2Ri
X2xvZ19maWxlc19pbl9ncm91cCwgaW5ub2RiX2xvZ19maWxlX3NpemUgZGVwcmVjYXRlZCB8IGlu
bm9kYl9yZWRvX2xvZ19jYXBhY2l0eeOBq+WPluOBo+OBpuWkieOCj+OCieOCjOOBn+OAguOBiumm
tOafk+OBv+OBruOCquODl+OCt+ODp+ODs+OBquOBruOBp+OBoeOCh+OBo+OBqOWvguOBl+OBhCB8
PC9wPjxwPnw4LjB85LqI57SE6Kqe44GM5aKX44GI44GffE15U1FMIFNoZWxs44Gu44Ki44OD44OX
44Kw44Os44O844OJ44OB44Kn44OD44Kr44O85L2/44GE44G+44GX44KH44GG44CCYmlubG9nX2Zv
cm1hdD1ST1fjgaDjgajjgIzjg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgaTjgarjgYTjgafjgovj
gYvjgonmm7TmlrDjgq/jgqjjg6rjgYzpgJrjgovjgZPjgajjga/kv53oqLzjgZXjgozjgovjgI3j
gajjgYTjgYbjgZPjgajjga/jgarjgYTjgafjgZl8PC9wPjxwPnw4LjB8YmlubG9nX2Zvcm1hdCBk
ZXByZWNhdGVkfOS7iuW+jOOBr1JPV+OBl+OBi+mBuOOBsOOBm+OBpuOBj+OCjOOBquOBhOOBpOOC
guOCiuOCieOBl+OBhHw8L3A+PHA+fDguMHxteXNxbHB1bXAgZGVwcmVjYXRlZHxteXNxbGR1bXDj
gZjjgoPjgarjgYTjgojjgIFteXNxbHB1bXDjgaDjgoh8PC9wPjxwPnw4LjB8YmlubG9nX3RyYW5z
YWN0aW9uX2RlcGVuZGVuY3lfdHJhY2tpbmd8R3JvdXBSZXBsaWNhdGlvbue1jOmok+iAheOBr+io
mOaGtuOBq+OBguOCi+OBi+OCguOBquOCouODrOOAgldSSVRFU0VU44GM44OH44OV44Kp44Or44OI
44Gr44Gq44KL44KJ44GX44GE44GR44GpQ0FTQ0FEReOBrkZL44Go55u45oCn44GM5oKq44GE44OQ
44Kw44GM44GC44KL77yI55u044Gj44Gf44Gu44GL44Gp44GG44GL5LiN5piO77yJfDwvcD48cD58
OC4wfElubm9EQuezu+OBrmluZm9ybWF0aW9uX3NjaGVtYeOBruODhuODvOODluODq+WQjeOBjOWk
ieOCj+OBo+OBpuOCi3zoh6rliIbjgafjg6bjg7zjg4bjgqPjg6rjg4bjgqPjg7zjgpLkvZzjgaPj
gabjgYTjgovjgr/jgqTjg5fjga7kurrjgYzjg4/jg57jgovjgoTjgaR8PC9wPjxwPnw4LjB8R1JB
TlQgVVNBR0UgT04gKi4qIFRPIC4u44GnQ1JFQVRFIFVTRVLjga7ku6Pjgo/jgorjgavjgZnjgot8
44Gn44GN44Gq44GP44Gq44Gj44GffDwvcD48cD58OC4wfElERU5USUZJRUQgQlkgUEFTU1dPUkQg
JyouLicgfCDjgafjgY3jgarjgY/jgarjgaPjgZ/jgILku6Pmm7/jga8gSURFTlRJRklFRCBXSVRI
IG15c3FsX25hdGl2ZV9wYXNzd29yZCBBUyAnKi4uJyB8PC9wPjxwPnw4LjB8UEFTU1dPUkQgZnVu
Y3Rpb24gcmVtb3ZlZCB8IOS7o+abv+OBryZuYnNwO1NFTEVDVCBDT05DQVQoJyonLCBVUFBFUihT
SEExKFVOSEVYKFNIQTEoJ215cGFzcycpKSkpKSB8PC9wPjxwPnw4LjB8IFF1ZXJ5IGNhY2hlIHJl
bW92ZWQgfCDjgZXjgojjgarjgonjgq/jgqjjg6rjgq3jg6Pjg4Pjgrfjg6V8PC9wPjxwPnw4LjB8
IHR4X2lzb2xhdGlvbiAtJmd0OyB0cmFuc2FjdGlvbl9pc29sYXRpb24gfCDjgq/jg6njgqTjgqLj
g7Pjg4jjga7jg5Djg7zjgrjjg6fjg7PjgavjgojjgaPjgabmrbvjgazjgZPjgahn44GC44GC44Gj
44Gf44KE44GkIHw8L3A+PHA+fDguMHxsb2dfd2FybmluZ3MgLSZndDsgbG9nX2Vycm9yX3ZlcmJv
c2l0eSB8IDUuN+OBp+OBiummtOafk+OBv+OBrnw8L3A+PHA+fDguMHwgR1JPVVAgQlkgYzEgQVND
IHwg44GT44Gu6KyO6KiY5rOV44GM5raI44GI44GffDwvcD48cD58OC4wfCBFWFBMQUlOIEVYVEVO
REVEIHJlbW92ZWQgfCDjg4fjg5Xjgqnjg6vjg4jjgYxFWFRFTkRFROebuOW9k+OBq+OBquOBo+OB
n+OBruOBp+iomOazleOBjOa2iOOBiOOBn+OAguWun+izquWbsOOCieOBquOBhOOBkeOBqeaJi+eZ
luOBp+aJk+OBo+OBpuOCqOODqeOCi+OBk+OBqOOBjHw8L3A+PHA+fDguMHxHSVPns7vjga7plqLm
lbDjga7lkI3liY3jgYzjgZTjgaPjgZ3jgorlhaXjgozmm7/jgo/jgot85aSn5aSJ44Gg44Gj44Gf
44KJ44GX44GEfDwvcD48cD58OC4wfCAtLXNzbCByZW1vdmVkIHwg5Luj44KP44KK44GrIC0tc3Ns
LW1vZGUgfDwvcD48cD58OC4wfCBkYXRhZGly44Gu5Lit44GuICNteXNxbDUwIyDjgYvjgonlp4vj
gb7jgovjg4fjgqPjg6zjgq/jg4jjg6ogfCA1LjDjgajjgZ3jgozku6XpmY3jgavlpInjgarmlofl
rZfjgYzlhaXjgaPjgZ/jg4fjg7zjgr/jg5njg7zjgrnjgpJDUkVBVEXjgZnjgovjgajlh7rmnaXk
uIrjgYzjgosgfDwvcD48cD58OC4wfG15c3FsX2luc3RhbGxfZGIgfCDku6Pjgo/jgorjgatteXNx
bGQgLS1pbml0aWFsaXplKC1pbnNlY3VyZSkuIDUuN+OBp+mdnuaOqOWlqOOBq+OBquOBo+OBn+OB
ruOBjOWJiumZpOOBleOCjOOBn3w8L3A+PHA+fDguMHwgU0VMRUNUIC4uIElOVE8gQHZhbCDoqJjm
s5Xjga7pnZ7mjqjlpaggfCDjgZPjgozjgYvjgonjga8gU0VUIEB2YWwgOj0gLi7jgpLkvb/jgYbj
gonjgZfjgYQgfDwvcD48cD58OC4xfEVYUExBSU4gZm9ybWF0PUpTT04gSU5UTyBAdmFsJm5ic3A7
IHwgTmV3IHw8L3A+PHA+fDguMXxteXNxbCAtLWNvbW1lbnQgbWFkZSBkZWZhdWx0IHwgTGl0dGxl
IHwmbmJzcDs8L3A+PHA+fDguMXwgc291cmNlX3JldHJ5X2NvdW50IDg2NDAwIC0mZ3Q7IDEwIHwg
TGl0dGxlIHwmbmJzcDs8L3A+PHA+fDguMXxncm91cF9yZXBsaWNhdGlvbl9zZXRfYXNfcHJpbWFy
eSB2cyBEREwgfCBNaWRkbGU/IHw8L3A+PHA+fDguMXxFeHRlbmQgInZlcnNpb24tc3BlY2lmaWMg
Y29tbWVudCIgfCAtIHw8L3A+PHA+fDguMXxNb3JlIGxvZ2dpbmcgZHVyaW5nIHNodXRkb3duIHNl
cXVlbmNlIHwgTmV3IHw8L3A+PHA+fDguMXxTSE9XIFBBUlNFX1RSRUUgc3RhdGVtZW50IHwgTmV3
IHw8L3A+PHA+fDguMXx0bHNfY2VydGlmaWNhdGVzX2VuZm9yY2VkX3ZhbGlkYXRpb24gfCBOZXcg
fDwvcD48cD58OC4xfEdyb3VwIFJlcGxpY2F0aW9uIHN0YXR1cyB2YXJpYWJsZXMgYWRkZWQgfCBO
ZXcgfDwvcD48cD58OC4xfCAtLXNvbWUtb3B0aW9uPU5VTEwgaXMgcHJvaGliaXRlZCB8IExpdHRs
ZSB8Jm5ic3A7PC9wPjxwPnw4LjIgfCBNb3JlIGxvZ2dpbmcgc3RhcnR1cC9zaHV0ZG93biBzZXF1
ZW5jZSB8IE5ldyB8PC9wPjxwPnw4LjJ8IG9wdGltaXplcl9zd2l0Y2g6IGhhc2hfc2V0X29wZXJh
dGlvbnMgfCBOZXcgfDwvcD48cD58OC4yfCBTRVRfVVNFUl9JRCBpcyBkZXZpZGVkIHRvIFNFVF9B
TllfREVGSU5FUiBhbmQgQUxMT1dfTk9ORVhJU1RFTlRfREVGSU5FUiB8IExpdHRsZSB8PC9wPjxw
Pnw4LjJ8RVhQTEFJTiBGT1IgU0NIRU1BIHwgTmV3IHw8L3A+PHA+fDguMnwgU1RBUlQgUkVQTElD
QSBVTlRJTCZuYnNwO1NRTF9BRlRFUl9HVElEUyBpbiBNdWx0aVRocmVhZEFwcGxpZXIgfCBOZXcg
fDwvcD48cD58IDguMiB8IG15c3FsZHVtcCAtLW91dHB1dC1hcy12ZXJzaW9uIHwgTmV3IHw8L3A+
PHA+fCA4LjIgfCBSZW1vdmUmbmJzcDtXQUlUX1VOVElMX1NRTF9USFJFQURfQUZURVJfR1RJRFMg
fCBNaWRkbGUgfDwvcD48cD58IDguMiB8IFJlbW92ZSBleHBpcmVfbG9nc19kYXlzIHwgTGl0dGxl
IHw8L3A+PHA+fDguMyB8IFNFVCBndGlkX25leHQgPSAmbHQ7dXVpZCZndDs6Jmx0O3RhZyZndDs6
Jmx0O251bWJlciZndDsgfCBOZXcgfDwvcD48cD58OC4zfCBBbm90aGVyIEVYUExBSU4gZm9ybWF0
LCBTRVQgZXhwbGFpbl9qc29uX2Zvcm1hdF92ZXJzaW9uJm5ic3A7ID0gMiB8IE5ldyB8PC9wPjxw
PnwgOC4zfCBEZWZhdWx0Jm5ic3A7YmlubG9nX3RyYW5zYWN0aW9uX2RlcGVuZGVuY3lfdHJhY2tp
bmcgPSBXUklURVNFVCB8IE1pZGRsZSB8PC9wPjxwPnw4LjN8U0hPVyBTVEFUVVMgTElLRSAnRGVw
cmVjYXRlZF91c2VfaV9zX3Byb2Nlc3NsaXN0JScgfCBOZXcgfDwvcD48cD58IDguMyB8IEluY29t
cGF0aWJsZSBjaGFuZ2VzIGluIGxpYm15c3FsY2xpZW50LnNvIHwgSGlnaCB8PC9wPjxwPnwgOC4z
IHwgUmVtb3ZlIEZMVVNIIEhPU1RTIHwgTGl0dGxlIHw8L3A+PHA+fCA4LjMgfCBSZW1vdmUgc2xh
dmVfcm93c19zZWFyY2hfYWxnb3JpdGhtcywgcmVsYXlfbG9nX2luZm9fZmlsZSwgcmVsYXlfbG9n
X2luZm9fcmVwb3NpdG9yeSwgbWFzdGVyX2luZm9fZmlsZSwgbWFzdGVyX2luZm9fcmVwb3NpdG9y
eSB8IExpdHRsZSB8PC9wPjxwPnwgOC4zIHwgUmVtb3ZlIGdyb3VwX3JlcGxpY2F0aW9uX2lwX3do
aXRlbGlzdCB8IExpdHRsZSB8PC9wPjxwPnwgOC4zIHwgUmVtb3ZlIHNraXBfaG9zdF9jYWNoZSB8
IExpdHRsZSB8PC9wPjxwPnwgOC4zIHwgUmVtb3ZlIHNraXBfY2hhcmFjdGVyX3NldF9jbGllbnRf
aGFuZHNoYWtlIHwgTWlkZGxlPyB8PC9wPjxwPnwgOC4zIHwgVW5zdXBwb3J0IGJpbmxvZ19mb3Jt
YXQ9TUlYRUQgdnMgYmlubG9nX3RyYW5zYWN0aW9uX2RlcGVuZGVuY3lfdHJhY2tpbmc9V1JJVEVT
RVQgfCBNaWRkbGU/IHw8L3A+PHA+PGJyPjwvcD48cD48YnI+PC9wPjxwPjxicj48L3A+"></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-80352934233430040432024-03-11T19:17:00.003+09:002024-03-11T19:17:15.152+09:00SET_USER_ID権限がないアカウントでViewのDEFINERになっているアカウントをDROP USERしようとするとOperation DROP USER failed for .. as it is referenced as a definer account in a viewのエラーが出るようになった<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/8035293423343004043"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">タイトルがすべてを物語っている。 <a href="https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_set-user-id" target="_blank">SET_USER_ID権限</a> があるとこのオペレーションは成功する</p>
</li>
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">エラーコードは4006</p>
</li>
</ul>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">
MySQL error code MY-004006 (ER_CANNOT_USER_REFERENCED_AS_DEFINER): Operation %s failed for %.256s as it is referenced as a definer account in %s.
</code></pre><ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">実はMySQL 8.0.22とそれ以降の新機能らしい</p>
<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://github.com/mysql/mysql-server/commit/6fe1b96fa9a4#diff-a9374916413972db486512eee90fd42f7bcc9d8697c9175dfca4013ef73eca72" target="_blank">WL14073: Disable DROP/RENAME USER for SQL DEFINER users in procedures… · mysql/mysql-server@6fe1b96</a></li>
</ul>
</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em !important;">実験。<br />DROP USER用を試すダミーのアカウントを作ってVIEWのDEFINERに設定する。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 9> CREATE USER view_dummy;
Query OK, 0 rows affected (0.00 sec)
mysql80 9> CREATE DEFINER=view_dummy VIEW d1.v1 AS SELECT * FROM d1.t1;
Query OK, 0 rows affected (0.02 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">root@localhost</code> ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">SET_USER_ID</code> 権限を持っている ) で <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">DROP VIEW</code> した場合はワーニングどまり (4005番なのでこれも新顔のはず, このワーニングは5.7では出ない)</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 9> DROP USER view_dummy;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql80 9> SHOW WARNINGS;
+---------+------+---------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------------------+
| Warning | 4005 | User 'view_dummy'@'%' is referenced as a definer account in a view. |
+---------+------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">テストのためにもう一回同じ名前でCREATE USERする(この時点でd1.v1は存在していてDEFINERになっているのでもう一度ワーニングは出た)</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 10> CREATE USER view_dummy;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql80 10> SHOW WARNINGS;
+---------+------+---------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+---------------------------------------------------------------------+
| Warning | 4005 | User 'view_dummy'@'%' is referenced as a definer account in a view. |
+---------+------+---------------------------------------------------------------------+
1 row in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">今度は <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">SET_USER_ID</code> 権限を持っていないアカウントでログインする。よく見ないとわからないけどよく見ると <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">SET_USER_ID</code> privはない。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 12> SHOW GRANTS\G
*************************** 1. row ***************************
Grants for yoku0825@%: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `yoku0825`@`%`
*************************** 2. row ***************************
Grants for yoku0825@%: GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ABORT_EXEMPT,AUDIT_ADMIN,AUTHENTICATION_POLICY_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,FIREWALL_EXEMPT,FLUSH_OPTIMIZER_COSTS,FLUSH_STATUS,FLUSH_TABLES,FLUSH_USER_RESOURCES,GROUP_REPLICATION_ADMIN,GROUP_REPLICATION_STREAM,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PASSWORDLESS_USER_ADMIN,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SENSITIVE_VARIABLES_OBSERVER,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,TELEMETRY_LOG_ADMIN,XA_RECOVER_ADMIN ON *.* TO `yoku0825`@`%`
2 rows in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">で、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">DROP USER</code> はエラーになる。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 12> DROP USER view_dummy;
ERROR 4006 (HY000): Operation DROP USER failed for 'view_dummy'@'%' as it is referenced as a definer account in a view.
</code></pre><div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+I1RMO0RSPC9wPjxwPi0g44K/44Kk44OI44Or44GM44GZ44G544Gm44KS54mp6Kqe44Gj44Gm
44GE44KL44CCIFtTRVRfVVNFUl9JROaoqemZkF0oaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9y
ZWZtYW4vOC4wL2VuL3ByaXZpbGVnZXMtcHJvdmlkZWQuaHRtbCNwcml2X3NldC11c2VyLWlkKSDj
gYzjgYLjgovjgajjgZPjga7jgqrjg5rjg6zjg7zjgrfjg6fjg7Pjga/miJDlip/jgZnjgos8L3A+
PHA+LSDjgqjjg6njg7zjgrPjg7zjg4njga80MDA2PC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxw
Pk15U1FMIGVycm9yIGNvZGUgTVktMDA0MDA2IChFUl9DQU5OT1RfVVNFUl9SRUZFUkVOQ0VEX0FT
X0RFRklORVIpOiBPcGVyYXRpb24gJXMgZmFpbGVkIGZvciAlLjI1NnMgYXMgaXQgaXMgcmVmZXJl
bmNlZCBhcyBhIGRlZmluZXIgYWNjb3VudCBpbiAlcy48L3A+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2Pi0g5a6f44GvTXlTUUwgOC4wLjIy44Go44Gd44KM5Lul6ZmN44Gu5paw5qmf
6IO944KJ44GX44GEPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4mbmJzcDsgLSBbV0wxNDA3Mzog
RGlzYWJsZSBEUk9QL1JFTkFNRSBVU0VSIGZvciBTUUwgREVGSU5FUiB1c2VycyBpbiBwcm9jZWR1
cmVz4oCmIMK3IG15c3FsL215c3FsXC1zZXJ2ZXJANmZlMWI5Nl0oaHR0cHM6Ly9naXRodWIuY29t
L215c3FsL215c3FsLXNlcnZlci9jb21taXQvNmZlMWI5NmZhOWE0I2RpZmYtYTkzNzQ5MTY0MTM5
NzJkYjQ4NjUxMmVlZTkwZmQ0MmY3YmNjOWQ4Njk3YzkxNzVkZmNhNDAxM2VmNzNlY2E3Mik8L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2Pi0tLS0tPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7lrp/p
qJPjgII8L2Rpdj48ZGl2PkRST1AgVVNFUueUqOOCkuippuOBmeODgOODn+ODvOOBruOCouOCq+OC
puODs+ODiOOCkuS9nOOBo+OBplZJRVfjga5ERUZJTkVS44Gr6Kit5a6a44GZ44KL44CCPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MCA5Jmd0OyBDUkVB
VEUgVVNFUiB2aWV3X2R1bW15OzwvZGl2PjxkaXY+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAo
MC4wMCBzZWMpPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgOSZn
dDsgQ1JFQVRFIERFRklORVI9dmlld19kdW1teSBWSUVXIGQxLnYxIEFTIFNFTEVDVCAqIEZST00g
ZDEudDE7PC9kaXY+PGRpdj5RdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjAyIHNlYyk8L2Rp
dj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YHJvb3RAbG9jYWxob3N0
YCAoIGBTRVRfVVNFUl9JRGAg5qip6ZmQ44KS5oyB44Gj44Gm44GE44KLICkg44GnIGBEUk9QIFZJ
RVdgIOOBl+OBn+WgtOWQiOOBr+ODr+ODvOODi+ODs+OCsOOBqeOBvuOCiiAoNDAwNeeVquOBquOB
ruOBp+OBk+OCjOOCguaWsOmhlOOBruOBr+OBmiwg44GT44Gu44Ov44O844OL44Oz44Kw44GvNS43
44Gn44Gv5Ye644Gq44GEKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48
ZGl2Pm15c3FsODAgOSZndDsgRFJPUCBVU0VSIHZpZXdfZHVtbXk7PC9kaXY+PGRpdj5RdWVyeSBP
SywgMCByb3dzIGFmZmVjdGVkLCAxIHdhcm5pbmcgKDAuMDEgc2VjKTwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+bXlzcWw4MCA5Jmd0OyBTSE9XIFdBUk5JTkdTOzwvZGl2PjxkaXY+Ky0tLS0tLS0t
LSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+fCBMZXZlbCZuYnNwOyAmbmJzcDt8IENv
ZGUgfCBNZXNzYWdlJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fDwvZGl2PjxkaXY+Ky0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+fCBX
YXJuaW5nIHwgNDAwNSB8IFVzZXIgJ3ZpZXdfZHVtbXknQCclJyBpcyByZWZlcmVuY2VkIGFzIGEg
ZGVmaW5lciBhY2NvdW50IGluIGEgdmlldy4gfDwvZGl2PjxkaXY+Ky0tLS0tLS0tLSstLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+MSByb3cgaW4gc2V0ICgwLjAwIHNlYyk8L2Rpdj48L2Rp
dj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44OG44K5
44OI44Gu44Gf44KB44Gr44KC44GG5LiA5Zue5ZCM44GY5ZCN5YmN44GnQ1JFQVRFIFVTRVLjgZnj
govvvIjjgZPjga7mmYLngrnjgadkMS52MeOBr+WtmOWcqOOBl+OBpuOBhOOBpkRFRklORVLjgavj
garjgaPjgabjgYTjgovjga7jgafjgoLjgYbkuIDluqbjg6/jg7zjg4vjg7PjgrDjga/lh7rjgZ/v
vIk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRpdj5teXNxbDgwIDEw
Jmd0OyBDUkVBVEUgVVNFUiB2aWV3X2R1bW15OzwvZGl2PjxkaXY+UXVlcnkgT0ssIDAgcm93cyBh
ZmZlY3RlZCwgMSB3YXJuaW5nICgwLjAxIHNlYyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pm15
c3FsODAgMTAmZ3Q7IFNIT1cgV0FSTklOR1M7PC9kaXY+PGRpdj4rLS0tLS0tLS0tKy0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IExldmVsJm5ic3A7ICZuYnNwO3wgQ29kZSB8IE1lc3Nh
Z2UmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9kaXY+PGRp
dj4rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IFdhcm5pbmcgfCA0
MDA1IHwgVXNlciAndmlld19kdW1teSdAJyUnIGlzIHJlZmVyZW5jZWQgYXMgYSBkZWZpbmVyIGFj
Y291bnQgaW4gYSB2aWV3LiB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rPC9kaXY+PGRpdj4xIHJvdyBpbiBzZXQgKDAuMDAgc2VjKTwvZGl2PjwvZGl2PjxkaXY+YGBg
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7ku4rluqbjga8gYFNFVF9VU0VSX0lEYCDmqKnpmZDj
gpLmjIHjgaPjgabjgYTjgarjgYTjgqLjgqvjgqbjg7Pjg4jjgafjg63jgrDjgqTjg7PjgZnjgovj
gILjgojjgY/opovjgarjgYTjgajjgo/jgYvjgonjgarjgYTjgZHjganjgojjgY/opovjgovjgagg
YFNFVF9VU0VSX0lEYCBwcml244Gv44Gq44GE44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MCAxMiZndDsgU0hPVyBHUkFO
VFNcRzwvZGl2PjxkaXY+KioqKioqKioqKioqKioqKioqKioqKioqKioqIDEuIHJvdyAqKioqKioq
KioqKioqKioqKioqKioqKioqKio8L2Rpdj48ZGl2PkdyYW50cyBmb3IgeW9rdTA4MjVAJTogR1JB
TlQgU0VMRUNULCBJTlNFUlQsIFVQREFURSwgREVMRVRFLCBDUkVBVEUsIERST1AsIFJFTE9BRCwg
U0hVVERPV04sIFBST0NFU1MsIEZJTEUsIFJFRkVSRU5DRVMsIElOREVYLCBBTFRFUiwgU0hPVyBE
QVRBQkFTRVMsIFNVUEVSLCBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFUywgTE9DSyBUQUJMRVMsIEVY
RUNVVEUsIFJFUExJQ0FUSU9OIFNMQVZFLCBSRVBMSUNBVElPTiBDTElFTlQsIENSRUFURSBWSUVX
LCBTSE9XIFZJRVcsIENSRUFURSBST1VUSU5FLCBBTFRFUiBST1VUSU5FLCBDUkVBVEUgVVNFUiwg
RVZFTlQsIFRSSUdHRVIsIENSRUFURSBUQUJMRVNQQUNFLCBDUkVBVEUgUk9MRSwgRFJPUCBST0xF
IE9OICouKiBUTyBgeW9rdTA4MjVgQGAlYDwvZGl2PjxkaXY+KioqKioqKioqKioqKioqKioqKioq
KioqKioqIDIuIHJvdyAqKioqKioqKioqKioqKioqKioqKioqKioqKio8L2Rpdj48ZGl2PkdyYW50
cyBmb3IgeW9rdTA4MjVAJTogR1JBTlQgQVBQTElDQVRJT05fUEFTU1dPUkRfQURNSU4sQVVESVRf
QUJPUlRfRVhFTVBULEFVRElUX0FETUlOLEFVVEhFTlRJQ0FUSU9OX1BPTElDWV9BRE1JTixCQUNL
VVBfQURNSU4sQklOTE9HX0FETUlOLEJJTkxPR19FTkNSWVBUSU9OX0FETUlOLENMT05FX0FETUlO
LENPTk5FQ1RJT05fQURNSU4sRU5DUllQVElPTl9LRVlfQURNSU4sRklSRVdBTExfRVhFTVBULEZM
VVNIX09QVElNSVpFUl9DT1NUUyxGTFVTSF9TVEFUVVMsRkxVU0hfVEFCTEVTLEZMVVNIX1VTRVJf
UkVTT1VSQ0VTLEdST1VQX1JFUExJQ0FUSU9OX0FETUlOLEdST1VQX1JFUExJQ0FUSU9OX1NUUkVB
TSxJTk5PREJfUkVET19MT0dfQVJDSElWRSxJTk5PREJfUkVET19MT0dfRU5BQkxFLFBBU1NXT1JE
TEVTU19VU0VSX0FETUlOLFBFUlNJU1RfUk9fVkFSSUFCTEVTX0FETUlOLFJFUExJQ0FUSU9OX0FQ
UExJRVIsUkVQTElDQVRJT05fU0xBVkVfQURNSU4sUkVTT1VSQ0VfR1JPVVBfQURNSU4sUkVTT1VS
Q0VfR1JPVVBfVVNFUixST0xFX0FETUlOLFNFTlNJVElWRV9WQVJJQUJMRVNfT0JTRVJWRVIsU0VS
VklDRV9DT05ORUNUSU9OX0FETUlOLFNFU1NJT05fVkFSSUFCTEVTX0FETUlOLFNIT1dfUk9VVElO
RSxTWVNURU1fVVNFUixTWVNURU1fVkFSSUFCTEVTX0FETUlOLFRBQkxFX0VOQ1JZUFRJT05fQURN
SU4sVEVMRU1FVFJZX0xPR19BRE1JTixYQV9SRUNPVkVSX0FETUlOIE9OICouKiBUTyBgeW9rdTA4
MjVgQGAlYDwvZGl2PjxkaXY+MiByb3dzIGluIHNldCAoMC4wMCBzZWMpPC9kaXY+PC9kaXY+PGRp
dj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOBp+OAgSBgRFJP
UCBVU0VSYCDjga/jgqjjg6njg7zjgavjgarjgovjgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
PmBgYDwvZGl2PjxkaXY+PGRpdj5teXNxbDgwIDEyJmd0OyBEUk9QIFVTRVIgdmlld19kdW1teTs8
L2Rpdj48ZGl2PkVSUk9SIDQwMDYgKEhZMDAwKTogT3BlcmF0aW9uIERST1AgVVNFUiBmYWlsZWQg
Zm9yICd2aWV3X2R1bW15J0AnJScgYXMgaXQgaXMgcmVmZXJlbmNlZCBhcyBhIGRlZmluZXIgYWNj
b3VudCBpbiBhIHZpZXcuPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2Pjxicj48L2Rpdj4="></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-4411690392148208152024-03-08T17:33:00.007+09:002024-03-08T17:33:36.518+09:00Rocky Linux 8とMySQLでcoreファイルが見つからない<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/441169039214820815"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">Rocky Linux 8(というかRHEL8互換)ではdatadirに生でcoredumpを吐き出さない</p>
<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://rheb.hatenablog.com/entry/systemd-coredump" target="_blank">systemd-coredump環境で暮らす - 赤帽エンジニアブログ</a></li>
</ul>
</li>
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">coredumpctl</code> を使うらしい</p>
</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/en/server-options.html#option_mysqld_core-file" target="_blank">—core-file</a> も <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">ulimit -c unlimited</code> も設定してるのにcoredumpが見つからない…と思ったら変わっていたらしい。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">
$ less /usr/mysql/8.0.36/data/error.log
..
2024-03-08T07:36:23Z UTC - mysqld got signal 11 ;
<secret>
/usr/mysql/8.0.36/bin/mysqld(do_command(THD*)+0x15b) [0xde00bb]
/usr/mysql/8.0.36/bin/mysqld() [0xf391b8]
/usr/mysql/8.0.36/bin/mysqld() [0x2576814]
/lib64/libpthread.so.0(+0x81da) [0x7fa868e941da]
/lib64/libc.so.6(clone+0x43) [0x7fa867236e73]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7fa80438de80): SHOW CREATE TABLE sys.metrics
Connection ID (thread ID): 14
Status: NOT_KILLED
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
Writing a core file
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">Writing a core file</code> と言ってるくせに、datadirにない。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ ll /usr/mysql/8.0.36/data/core*
ls: cannot access '/usr/mysql/8.0.36/data/core*': No such file or directory
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">journalctl</code> を見たらなんかスタックトレース ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">gdb</code> の <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">thread apply all bt</code> と同じように全スレッドぶん) が載ってる…こんなの前にはなかったはず…そして俺はスタックトレースじゃなくてcoreファイルが欲しいんだ…!</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ sudo journalctl --since=today | less
..
Mar 08 07:36:45 yoku0825-sandbox systemd-coredump[2500410]: Process 2453404 (mysqld) of user 1001 dumped core.
Stack trace of thread 2453453:
#0 0x00007fa868e9ba85 pthread_kill (libpthread.so.0)
#1 0x0000000000f4913c handle_fatal_signal (mysqld)
#2 0x00007fa868e9ed40 __restore_rt (libpthread.so.0)
..
</code></pre><p style="margin: 0px 0px 1.2em !important;">と思ってググったらあっという間に冒頭のブログに出会った。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://rheb.hatenablog.com/entry/systemd-coredump" target="_blank">systemd-coredump環境で暮らす - 赤帽エンジニアブログ</a></p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ sudo coredumpctl list
TIME PID UID GID SIG COREFILE EXE
Thu 2024-03-07 02:41:14 GMT 2433147 1001 1001 11 present /usr/mysql/8.0.36/bin/mysqld
Thu 2024-03-07 04:00:05 GMT 2441380 1001 1001 5 present /usr/mysql/8.0.36/bin/mysqld
Fri 2024-03-08 07:36:45 GMT 2453404 1001 1001 11 present /usr/mysql/8.0.36/bin/mysqld
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">coredumpctl dump ..</code> でスタックトレースが出て「違う、俺はコアファイルが欲しいんだ」って気になったけど特に気にしなくて良くてちゃんとoutputに出力されてた。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ sudo coredumpctl dump -1 --output ./core.2433147
PID: 2453404 (mysqld)
UID: 1001 (yoku0825)
GID: 1001 (yoku0825)
Signal: 11 (SEGV)
Timestamp: Fri 2024-03-08 07:36:23 GMT (50min ago)
Command Line: /usr/mysql/8.0.36/bin/mysqld --basedir=/usr/mysql/8.0.36 --datadir=/usr/mysql/8.0.36/data --plugin-dir=/usr/mysql/8.0.36/lib/plugin --server-id=1080 --default-authentication-plugin=mysql_native_password --mysqlx=off --early-plugin-load=keyring_file.so --default-time-zone=+00:00 --loose-rpl-semi-sync-source-enabled=ON --loose-innodb-ddl-threads=1 --log-error=error.log --pid-file=/usr/mysql/8.0.36/data/mysql.pid --socket=/usr/mysql/8.0.36/data/mysql.sock --port=64080
Executable: /usr/mysql/8.0.36/bin/mysqld
Control Group: /
Slice: -.slice
Boot ID: 64f2b36cc0ba43cea4f50ea42cae833f
Machine ID: f0891c4bddbf4944abc3c0e87e12fe9c
Hostname: yoku0825-sandbox
Storage: /var/lib/systemd/coredump/core.mysqld.1001.64f2b36cc0ba43cea4f50ea42cae833f.2453404.1709883383000000.lz4
Message: Process 2453404 (mysqld) of user 1001 dumped core.
..
</code></pre><p style="margin: 0px 0px 1.2em !important;">dumpで吐き出させたあとはいつも通りgdbで見られる。 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">coredumpctl debug -1</code> でも良さそう(sudo噛ませると .gdbinit 読んでくれなくてちょっと見づらい)</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ gdb ../bin/mysqld core.2433147
or
$ sudo coredumpctl debug -1
PID: 2453404 (mysqld)
UID: 1001 (yoku0825)
GID: 1001 (yoku0825)
Signal: 11 (SEGV)
Timestamp: Fri 2024-03-08 07:36:23 GMT (53min ago)
Command Line: /usr/mysql/8.0.36/bin/mysqld --basedir=/usr/mysql/8.0.36 --datadir=/usr/mysql/8.0.36/data --plugin-dir=/usr/mysql/8.0.36/lib/plugin --server-id=1080 --default-authentication-plugin=mysql_native_password --mysqlx=off --early-plugin-load=keyring_file.so --default-time-zone=+00:00 --loose-rpl-semi-sync-source-enabled=ON --loose-innodb-ddl-threads=1 --log-error=error.log --pid-file=/usr/mysql/8.0.36/data/mysql.pid --socket=/usr/mysql/8.0.36/data/mysql.sock --port=64080
Executable: /usr/mysql/8.0.36/bin/mysqld
Control Group: /
Slice: -.slice
Boot ID: 64f2b36cc0ba43cea4f50ea42cae833f
Machine ID: f0891c4bddbf4944abc3c0e87e12fe9c
Hostname: yoku0825-sandbox
Storage: /var/lib/systemd/coredump/core.mysqld.1001.64f2b36cc0ba43cea4f50ea42cae833f.2453404.1709883383000000.lz4
Message: Process 2453404 (mysqld) of user 1001 dumped core.
..
### これもしばらくスタックトレース吐いたあと止まるけどそのうちgdbが始まる
</code></pre><p style="margin: 0px 0px 1.2em !important;">coredumpctl infoだと圧縮されたコアファイルのパスも吐いてくれるので、lz4catとかでもなんとかなった</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ sudo coredumpctl info -1
PID: 2453404 (mysqld)
UID: 1001 (yoku0825)
GID: 1001 (yoku0825)
Signal: 11 (SEGV)
Timestamp: Fri 2024-03-08 07:36:23 GMT (54min ago)
Command Line: /usr/mysql/8.0.36/bin/mysqld --basedir=/usr/mysql/8.0.36 --datadir=/usr/mysql/8.0.36/data --plugin-dir=/usr/mysql/8.0.36/lib/plugin --server-id=1080 --default-authentication-plugin=mysql_na>
Executable: /usr/mysql/8.0.36/bin/mysqld
Control Group: /
Slice: -.slice
Boot ID: 64f2b36cc0ba43cea4f50ea42cae833f
Machine ID: f0891c4bddbf4944abc3c0e87e12fe9c
Hostname: yoku0825-sandbox
Storage: /var/lib/systemd/coredump/core.mysqld.1001.64f2b36cc0ba43cea4f50ea42cae833f.2453404.1709883383000000.lz4 <----- ここ
Message: Process 2453404 (mysqld) of user 1001 dumped core.
..
</code></pre><p style="margin: 0px 0px 1.2em !important;">昔 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">abrtd</code> にコアファイルを消し去られる事案があってそれかなあと思っていたら <a href="https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/8.7_release_notes/deprecated-functionality_shells-and-command-line-tools" target="_blank">RHEL8では非推奨</a> になっていたんですね。</p>
<p style="margin: 0px 0px 1.2em !important;">OSが変わったことを感じる…。</p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+Jm5ic3A7I1RMO0RSPC9wPjxwPi0gUm9ja3kgTGludXggOCjjgajjgYTjgYbjgYtSSEVMOOS6
kuaPmynjgafjga9kYXRhZGly44Gr55Sf44GnY29yZWR1bXDjgpLlkJDjgY3lh7rjgZXjgarjgYQ8
L3A+PHA+Jm5ic3A7IC0mbmJzcDtbc3lzdGVtZFwtY29yZWR1bXDnkrDlooPjgafmmq7jgonjgZkg
XC0g6LWk5bi944Ko44Oz44K444OL44Ki44OW44Ot44KwXShodHRwczovL3JoZWIuaGF0ZW5hYmxv
Zy5jb20vZW50cnkvc3lzdGVtZC1jb3JlZHVtcCk8L3A+PHA+LSBgY29yZWR1bXBjdGxgIOOCkuS9
v+OBhuOCieOBl+OBhDwvcD48cD48YnI+PC9wPjxwPi0tLS08L3A+PHA+PGJyPjwvcD48cD5bLS1j
b3JlLWZpbGVdKGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzguMC9lbi9zZXJ2ZXIt
b3B0aW9ucy5odG1sI29wdGlvbl9teXNxbGRfY29yZS1maWxlKSDjgoIgYHVsaW1pdCAtYyB1bmxp
bWl0ZWRgIOOCguioreWumuOBl+OBpuOCi+OBruOBq2NvcmVkdW1w44GM6KaL44Gk44GL44KJ44Gq
44GE4oCm44Go5oCd44Gj44Gf44KJ5aSJ44KP44Gj44Gm44GE44Gf44KJ44GX44GE44CCPC9wPjxw
Pjxicj48L3A+PHA+YGBgPC9wPjxwPiQgbGVzcyAvdXNyL215c3FsLzguMC4zNi9kYXRhL2Vycm9y
LmxvZzwvcD48cD4uLjwvcD48cD4yMDI0LTAzLTA4VDA3OjM2OjIzWiBVVEMgLSBteXNxbGQgZ290
IHNpZ25hbCAxMSA7PC9wPjxkaXY+Jmx0O3NlY3JldCZndDs8L2Rpdj48ZGl2PjxkaXY+L3Vzci9t
eXNxbC84LjAuMzYvYmluL215c3FsZChkb19jb21tYW5kKFRIRCopKzB4MTViKSBbMHhkZTAwYmJd
PC9kaXY+PGRpdj4vdXNyL215c3FsLzguMC4zNi9iaW4vbXlzcWxkKCkgWzB4ZjM5MWI4XTwvZGl2
PjxkaXY+L3Vzci9teXNxbC84LjAuMzYvYmluL215c3FsZCgpIFsweDI1NzY4MTRdPC9kaXY+PGRp
dj4vbGliNjQvbGlicHRocmVhZC5zby4wKCsweDgxZGEpIFsweDdmYTg2OGU5NDFkYV08L2Rpdj48
ZGl2Pi9saWI2NC9saWJjLnNvLjYoY2xvbmUrMHg0MykgWzB4N2ZhODY3MjM2ZTczXTwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+VHJ5aW5nIHRvIGdldCBzb21lIHZhcmlhYmxlcy48L2Rpdj48ZGl2
PlNvbWUgcG9pbnRlcnMgbWF5IGJlIGludmFsaWQgYW5kIGNhdXNlIHRoZSBkdW1wIHRvIGFib3J0
LjwvZGl2PjxkaXY+UXVlcnkgKDdmYTgwNDM4ZGU4MCk6IFNIT1cgQ1JFQVRFIFRBQkxFIHN5cy5t
ZXRyaWNzPC9kaXY+PGRpdj5Db25uZWN0aW9uIElEICh0aHJlYWQgSUQpOiAxNDwvZGl2PjxkaXY+
U3RhdHVzOiBOT1RfS0lMTEVEPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGUgbWFudWFsIHBh
Z2UgYXQgaHR0cDovL2Rldi5teXNxbC5jb20vZG9jL215c3FsL2VuL2NyYXNoaW5nLmh0bWwgY29u
dGFpbnM8L2Rpdj48ZGl2PmluZm9ybWF0aW9uIHRoYXQgc2hvdWxkIGhlbHAgeW91IGZpbmQgb3V0
IHdoYXQgaXMgY2F1c2luZyB0aGUgY3Jhc2guPC9kaXY+PGRpdj5Xcml0aW5nIGEgY29yZSBmaWxl
PC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBXcml0aW5nIGEg
Y29yZSBmaWxlYCDjgajoqIDjgaPjgabjgovjgY/jgZvjgavjgIFkYXRhZGly44Gr44Gq44GE44CC
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBsbCAvdXNyL215
c3FsLzguMC4zNi9kYXRhL2NvcmUqPC9kaXY+PGRpdj5sczogY2Fubm90IGFjY2VzcyAnL3Vzci9t
eXNxbC84LjAuMzYvZGF0YS9jb3JlKic6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk8L2Rpdj48
L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGpvdXJuYWxjdGxgIOOCkuim
i+OBn+OCieOBquOCk+OBi+OCueOCv+ODg+OCr+ODiOODrOODvOOCuSAoIGBnZGJgIOOBriBgdGhy
ZWFkIGFwcGx5IGFsbCBidGAg44Go5ZCM44GY44KI44GG44Gr5YWo44K544Os44OD44OJ44G244KT
KSDjgYzovInjgaPjgabjgovigKbjgZPjgpPjgarjga7liY3jgavjga/jgarjgYvjgaPjgZ/jga/j
gZrigKbjgZ3jgZfjgabkv7rjga/jgrnjgr/jg4Pjgq/jg4jjg6zjg7zjgrnjgZjjgoPjgarjgY/j
gaZjb3Jl44OV44Kh44Kk44Or44GM5qyy44GX44GE44KT44Gg4oCm77yBPC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBzdWRvIGpvdXJuYWxjdGwgLS1zaW5jZT10
b2RheSB8IGxlc3M8L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj5NYXIgMDggMDc6MzY6NDUgeW9rdTA4
MjUtc2FuZGJveCBzeXN0ZW1kLWNvcmVkdW1wWzI1MDA0MTBdOiBQcm9jZXNzIDI0NTM0MDQgKG15
c3FsZCkgb2YgdXNlciAxMDAxIGR1bXBlZCBjb3JlLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgU3RhY2sgdHJhY2Ugb2YgdGhy
ZWFkIDI0NTM0NTM6PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAjMCZuYnNwOyAweDAwMDA3ZmE4NjhlOWJhODUgcHRocmVhZF9raWxsIChsaWJwdGhyZWFk
LnNvLjApPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAj
MSZuYnNwOyAweDAwMDAwMDAwMDBmNDkxM2MgaGFuZGxlX2ZhdGFsX3NpZ25hbCAobXlzcWxkKTwv
ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgIzImbmJzcDsg
MHgwMDAwN2ZhODY4ZTllZDQwIF9fcmVzdG9yZV9ydCAobGlicHRocmVhZC5zby4wKTwvZGl2Pjxk
aXY+Li48L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44Go5oCd
44Gj44Gm44Kw44Kw44Gj44Gf44KJ44GC44Gj44Go44GE44GG6ZaT44Gr5YaS6aCt44Gu44OW44Ot
44Kw44Gr5Ye65Lya44Gj44Gf44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5bc3lzdGVtZFwt
Y29yZWR1bXDnkrDlooPjgafmmq7jgonjgZkgXC0g6LWk5bi944Ko44Oz44K444OL44Ki44OW44Ot
44KwXShodHRwczovL3JoZWIuaGF0ZW5hYmxvZy5jb20vZW50cnkvc3lzdGVtZC1jb3JlZHVtcCk8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRp
dj4kIHN1ZG8gY29yZWR1bXBjdGwgbGlzdDwvZGl2PjxkaXY+VElNRSZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgUElEJm5ic3A7ICZuYnNwO1VJRCZuYnNwOyAmbmJzcDtH
SUQgU0lHIENPUkVGSUxFJm5ic3A7IEVYRTwvZGl2PjxkaXY+VGh1IDIwMjQtMDMtMDcgMDI6NDE6
MTQgR01UJm5ic3A7IDI0MzMxNDcmbmJzcDsgMTAwMSZuYnNwOyAxMDAxJm5ic3A7IDExIHByZXNl
bnQmbmJzcDsgJm5ic3A7L3Vzci9teXNxbC84LjAuMzYvYmluL215c3FsZDwvZGl2PjxkaXY+VGh1
IDIwMjQtMDMtMDcgMDQ6MDA6MDUgR01UJm5ic3A7IDI0NDEzODAmbmJzcDsgMTAwMSZuYnNwOyAx
MDAxJm5ic3A7ICZuYnNwOzUgcHJlc2VudCZuYnNwOyAmbmJzcDsvdXNyL215c3FsLzguMC4zNi9i
aW4vbXlzcWxkPC9kaXY+PGRpdj5GcmkgMjAyNC0wMy0wOCAwNzozNjo0NSBHTVQmbmJzcDsgMjQ1
MzQwNCZuYnNwOyAxMDAxJm5ic3A7IDEwMDEmbmJzcDsgMTEgcHJlc2VudCZuYnNwOyAmbmJzcDsv
dXNyL215c3FsLzguMC4zNi9iaW4vbXlzcWxkPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PmBjb3JlZHVtcGN0bCBkdW1wIC4uYCDjgafjgrnjgr/jg4Pjgq/jg4jj
g6zjg7zjgrnjgYzlh7rjgabjgIzpgZXjgYbjgIHkv7rjga/jgrPjgqLjg5XjgqHjgqTjg6vjgYzm
rLLjgZfjgYTjgpPjgaDjgI3jgaPjgabmsJfjgavjgarjgaPjgZ/jgZHjgannibnjgavmsJfjgavj
gZfjgarjgY/jgaboia/jgY/jgabjgaHjgoPjgpPjgahvdXRwdXTjgavlh7rlipvjgZXjgozjgabj
gZ/jgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRpdj4kIHN1ZG8g
Y29yZWR1bXBjdGwgZHVtcCAtMSAtLW91dHB1dCAuL2NvcmUuMjQzMzE0NzwvZGl2PjxkaXY+Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtQSUQ6IDI0NTM0MDQgKG15c3Fs
ZCk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7VUlE
OiAxMDAxICh5b2t1MDgyNSk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7R0lEOiAxMDAxICh5b2t1MDgyNSk8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyBTaWduYWw6IDExIChTRUdWKTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAm
bmJzcDtUaW1lc3RhbXA6IEZyaSAyMDI0LTAzLTA4IDA3OjM2OjIzIEdNVCAoNTBtaW4gYWdvKTwv
ZGl2PjxkaXY+Jm5ic3A7IENvbW1hbmQgTGluZTogL3Vzci9teXNxbC84LjAuMzYvYmluL215c3Fs
ZCAtLWJhc2VkaXI9L3Vzci9teXNxbC84LjAuMzYgLS1kYXRhZGlyPS91c3IvbXlzcWwvOC4wLjM2
L2RhdGEgLS1wbHVnaW4tZGlyPS91c3IvbXlzcWwvOC4wLjM2L2xpYi9wbHVnaW4gLS1zZXJ2ZXIt
aWQ9MTA4MCAtLWRlZmF1bHQtYXV0aGVudGljYXRpb24tcGx1Z2luPW15c3FsX25hdGl2ZV9wYXNz
d29yZCAtLW15c3FseD1vZmYgLS1lYXJseS1wbHVnaW4tbG9hZD1rZXlyaW5nX2ZpbGUuc28gLS1k
ZWZhdWx0LXRpbWUtem9uZT0rMDA6MDAgLS1sb29zZS1ycGwtc2VtaS1zeW5jLXNvdXJjZS1lbmFi
bGVkPU9OIC0tbG9vc2UtaW5ub2RiLWRkbC10aHJlYWRzPTEgLS1sb2ctZXJyb3I9ZXJyb3IubG9n
IC0tcGlkLWZpbGU9L3Vzci9teXNxbC84LjAuMzYvZGF0YS9teXNxbC5waWQgLS1zb2NrZXQ9L3Vz
ci9teXNxbC84LjAuMzYvZGF0YS9teXNxbC5zb2NrIC0tcG9ydD02NDA4MDwvZGl2PjxkaXY+Jm5i
c3A7ICZuYnNwOyBFeGVjdXRhYmxlOiAvdXNyL215c3FsLzguMC4zNi9iaW4vbXlzcWxkPC9kaXY+
PGRpdj4mbmJzcDtDb250cm9sIEdyb3VwOiAvPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7U2xpY2U6IC0uc2xpY2U8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO0Jvb3QgSUQ6IDY0ZjJiMzZjYzBiYTQzY2VhNGY1MGVhNDJjYWU4MzNmPC9kaXY+
PGRpdj4mbmJzcDsgJm5ic3A7IE1hY2hpbmUgSUQ6IGYwODkxYzRiZGRiZjQ5NDRhYmMzYzBlODdl
MTJmZTljPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBIb3N0bmFtZTogeW9rdTA4MjUt
c2FuZGJveDwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7U3RvcmFnZTogL3Zh
ci9saWIvc3lzdGVtZC9jb3JlZHVtcC9jb3JlLm15c3FsZC4xMDAxLjY0ZjJiMzZjYzBiYTQzY2Vh
NGY1MGVhNDJjYWU4MzNmLjI0NTM0MDQuMTcwOTg4MzM4MzAwMDAwMC5sejQ8L2Rpdj48ZGl2PiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO01lc3NhZ2U6IFByb2Nlc3MgMjQ1MzQwNCAobXlzcWxk
KSBvZiB1c2VyIDEwMDEgZHVtcGVkIGNvcmUuPC9kaXY+PC9kaXY+PGRpdj4uLjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5kdW1w44Gn5ZCQ44GN5Ye644GV44Gb44Gf44GC
44Go44Gv44GE44Gk44KC6YCa44KKZ2Ri44Gn6KaL44KJ44KM44KL44CCIGBjb3JlZHVtcGN0bCBk
ZWJ1ZyAtMWAg44Gn44KC6Imv44GV44Gd44GG77yIc3Vkb+WZm+OBvuOBm+OCi+OBqCAuZ2RiaW5p
dCDoqq3jgpPjgafjgY/jgozjgarjgY/jgabjgaHjgofjgaPjgajopovjgaXjgonjgYQpPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PiQgZ2RiIC4uL2Jpbi9teXNxbGQgY29y
ZS4yNDMzMTQ3PC9kaXY+PGRpdj5vcjwvZGl2PjxkaXY+PGRpdj4kIHN1ZG8gY29yZWR1bXBjdGwg
ZGVidWcgLTE8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7UElEOiAyNDUzNDA0IChteXNxbGQpPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO1VJRDogMTAwMSAoeW9rdTA4MjUpPC9kaXY+PGRpdj4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO0dJRDogMTAwMSAoeW9rdTA4MjUpPC9k
aXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgU2lnbmFsOiAxMSAoU0VHVik8L2Rp
dj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7VGltZXN0YW1wOiBGcmkgMjAyNC0wMy0wOCAwNzoz
NjoyMyBHTVQgKDUzbWluIGFnbyk8L2Rpdj48ZGl2PiZuYnNwOyBDb21tYW5kIExpbmU6IC91c3Iv
bXlzcWwvOC4wLjM2L2Jpbi9teXNxbGQgLS1iYXNlZGlyPS91c3IvbXlzcWwvOC4wLjM2IC0tZGF0
YWRpcj0vdXNyL215c3FsLzguMC4zNi9kYXRhIC0tcGx1Z2luLWRpcj0vdXNyL215c3FsLzguMC4z
Ni9saWIvcGx1Z2luIC0tc2VydmVyLWlkPTEwODAgLS1kZWZhdWx0LWF1dGhlbnRpY2F0aW9uLXBs
dWdpbj1teXNxbF9uYXRpdmVfcGFzc3dvcmQgLS1teXNxbHg9b2ZmIC0tZWFybHktcGx1Z2luLWxv
YWQ9a2V5cmluZ19maWxlLnNvIC0tZGVmYXVsdC10aW1lLXpvbmU9KzAwOjAwIC0tbG9vc2UtcnBs
LXNlbWktc3luYy1zb3VyY2UtZW5hYmxlZD1PTiAtLWxvb3NlLWlubm9kYi1kZGwtdGhyZWFkcz0x
IC0tbG9nLWVycm9yPWVycm9yLmxvZyAtLXBpZC1maWxlPS91c3IvbXlzcWwvOC4wLjM2L2RhdGEv
bXlzcWwucGlkIC0tc29ja2V0PS91c3IvbXlzcWwvOC4wLjM2L2RhdGEvbXlzcWwuc29jayAtLXBv
cnQ9NjQwODA8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgRXhlY3V0YWJsZTogL3Vzci9teXNxbC84
LjAuMzYvYmluL215c3FsZDwvZGl2PjxkaXY+Jm5ic3A7Q29udHJvbCBHcm91cDogLzwvZGl2Pjxk
aXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1NsaWNlOiAtLnNsaWNlPC9kaXY+
PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtCb290IElEOiA2NGYyYjM2Y2MwYmE0M2Nl
YTRmNTBlYTQyY2FlODMzZjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBNYWNoaW5lIElEOiBmMDg5
MWM0YmRkYmY0OTQ0YWJjM2MwZTg3ZTEyZmU5YzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgSG9zdG5hbWU6IHlva3UwODI1LXNhbmRib3g8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO1N0b3JhZ2U6IC92YXIvbGliL3N5c3RlbWQvY29yZWR1bXAvY29yZS5teXNxbGQu
MTAwMS42NGYyYjM2Y2MwYmE0M2NlYTRmNTBlYTQyY2FlODMzZi4yNDUzNDA0LjE3MDk4ODMzODMw
MDAwMDAubHo0PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtNZXNzYWdlOiBQ
cm9jZXNzIDI0NTM0MDQgKG15c3FsZCkgb2YgdXNlciAxMDAxIGR1bXBlZCBjb3JlLjwvZGl2Pjwv
ZGl2PjxkaXY+Li48L2Rpdj48ZGl2PiMjIyDjgZPjgozjgoLjgZfjgbDjgonjgY/jgrnjgr/jg4Pj
gq/jg4jjg6zjg7zjgrnlkJDjgYTjgZ/jgYLjgajmraLjgb7jgovjgZHjganjgZ3jga7jgYbjgaFn
ZGLjgYzlp4vjgb7jgos8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Y29y
ZWR1bXBjdGwgaW5mb+OBoOOBqOWcp+e4ruOBleOCjOOBn+OCs+OCouODleOCoeOCpOODq+OBruOD
keOCueOCguWQkOOBhOOBpuOBj+OCjOOCi+OBruOBp+OAgWx6NGNhdOOBqOOBi+OBp+OCguOBquOC
k+OBqOOBi+OBquOBo+OBnzwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48ZGl2PiQgc3VkbyBjb3JlZHVtcGN0bCBpbmZvIC0xPC9kaXY+PGRpdj4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1BJRDogMjQ1MzQwNCAobXlz
cWxkKTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtV
SUQ6IDEwMDEgKHlva3UwODI1KTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDtHSUQ6IDEwMDEgKHlva3UwODI1KTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7IFNpZ25hbDogMTEgKFNFR1YpPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7
ICZuYnNwO1RpbWVzdGFtcDogRnJpIDIwMjQtMDMtMDggMDc6MzY6MjMgR01UICg1NG1pbiBhZ28p
PC9kaXY+PGRpdj4mbmJzcDsgQ29tbWFuZCBMaW5lOiAvdXNyL215c3FsLzguMC4zNi9iaW4vbXlz
cWxkIC0tYmFzZWRpcj0vdXNyL215c3FsLzguMC4zNiAtLWRhdGFkaXI9L3Vzci9teXNxbC84LjAu
MzYvZGF0YSAtLXBsdWdpbi1kaXI9L3Vzci9teXNxbC84LjAuMzYvbGliL3BsdWdpbiAtLXNlcnZl
ci1pZD0xMDgwIC0tZGVmYXVsdC1hdXRoZW50aWNhdGlvbi1wbHVnaW49bXlzcWxfbmEmZ3Q7PC9k
aXY+PGRpdj4mbmJzcDsgJm5ic3A7IEV4ZWN1dGFibGU6IC91c3IvbXlzcWwvOC4wLjM2L2Jpbi9t
eXNxbGQ8L2Rpdj48ZGl2PiZuYnNwO0NvbnRyb2wgR3JvdXA6IC88L2Rpdj48ZGl2PiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtTbGljZTogLS5zbGljZTwvZGl2PjxkaXY+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7Qm9vdCBJRDogNjRmMmIzNmNjMGJhNDNjZWE0ZjUwZWE0MmNh
ZTgzM2Y8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgTWFjaGluZSBJRDogZjA4OTFjNGJkZGJmNDk0
NGFiYzNjMGU4N2UxMmZlOWM8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7IEhvc3RuYW1l
OiB5b2t1MDgyNS1zYW5kYm94PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtT
dG9yYWdlOiAvdmFyL2xpYi9zeXN0ZW1kL2NvcmVkdW1wL2NvcmUubXlzcWxkLjEwMDEuNjRmMmIz
NmNjMGJhNDNjZWE0ZjUwZWE0MmNhZTgzM2YuMjQ1MzQwNC4xNzA5ODgzMzgzMDAwMDAwLmx6NCZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7LS0tLS0g44GT44GTPC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtNZXNzYWdlOiBQcm9jZXNzIDI0NTM0MDQgKG15
c3FsZCkgb2YgdXNlciAxMDAxIGR1bXBlZCBjb3JlLjwvZGl2PjwvZGl2PjxkaXY+Li48L2Rpdj48
ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+5piUIGBhYnJ0ZGAg44Gr44Kz44Ki44OV
44Kh44Kk44Or44KS5raI44GX5Y6744KJ44KM44KL5LqL5qGI44GM44GC44Gj44Gm44Gd44KM44GL
44Gq44GC44Go5oCd44Gj44Gm44GE44Gf44KJIFtSSEVMOOOBp+OBr+mdnuaOqOWlqF0oaHR0cHM6
Ly9hY2Nlc3MucmVkaGF0LmNvbS9kb2N1bWVudGF0aW9uL2phLWpwL3JlZF9oYXRfZW50ZXJwcmlz
ZV9saW51eC84L2h0bWwvOC43X3JlbGVhc2Vfbm90ZXMvZGVwcmVjYXRlZC1mdW5jdGlvbmFsaXR5
X3NoZWxscy1hbmQtY29tbWFuZC1saW5lLXRvb2xzKSDjgavjgarjgaPjgabjgYTjgZ/jgpPjgafj
gZnjga3jgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk9T44GM5aSJ44KP44Gj44Gf44GT44Go
44KS5oSf44GY44KL4oCm44CCPC9kaXY+"></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-71447146651450482972024-03-07T17:02:00.006+09:002024-03-07T17:02:33.240+09:00replicate_wild_ignore_table="mysql.%" で CREATE USERやGRANTがignoreされる理由<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/7144714665145048297"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;">体感としては知ってたけどレプリケーションフィルタには対応するコードがなくてもんにょりしていた</li>
<li style="margin: 0.5em 0px;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/rpl_filter.cc" target="_blank">sql/rpl_filter.cc</a> <strong>じゃなくて</strong> <a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/auth/sql_user_table.cc#L1975-L1990" target="_blank">sql/auth/sql_user_table.cc</a> に埋まっていやがった</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em !important;">ドキュメントには、</p>
<blockquote style="border-left: 4px solid rgb(221, 221, 221); color: #777777; margin: 1.2em 0px; padding: 0px 1em; quotes: none;">
<p style="margin: 0px 0px 1.2em !important;">ただし、通常はこの情報を間接的に更新するステートメント (GRANT、REVOKE、およびトリガー、ストアドルーチン、およびビューを操作するステートメント) は、ステートメントベースレプリケーションを使用してレプリカにレプリケートされます。</p>
</blockquote>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/ja/replication-features-mysqldb.html" target="_blank">MySQL :: MySQL 8.0 リファレンスマニュアル :: 17.5.1.22 mysql システムスキーマのレプリケーション</a></p>
<blockquote style="border-left: 4px solid rgb(221, 221, 221); color: #777777; margin: 1.2em 0px; padding: 0px 1em; quotes: none;">
<p style="margin: 0px 0px 1.2em !important;">Table-level replication filters are only applied to tables that are explicitly mentioned and operated on in the query. They do not apply to tables that are implicitly updated by the query. For example, a GRANT statement, which updates the mysql.user system table but does not mention that table, is not affected by a filter that specifies mysql.% as the wildcard pattern.</p>
</blockquote>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#option_mysqld_replicate-wild-ignore-table" target="_blank">https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#option_mysqld_replicate-wild-ignore-table</a></p>
<p style="margin: 0px 0px 1.2em !important;">(日本語版にはこの表記がなかった…)</p>
<p style="margin: 0px 0px 1.2em !important;">しかもご丁寧に回避方法まで</p>
<blockquote style="border-left: 4px solid rgb(221, 221, 221); color: #777777; margin: 1.2em 0px; padding: 0px 1em; quotes: none;">
<p style="margin: 0px 0px 1.2em !important;">If you need to filter out GRANT statements or other administrative statements, a possible workaround is to use the —replicate-ignore-db filter. This filter operates on the default database that is currently in effect, as determined by the USE statement. </p>
</blockquote>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#option_mysqld_replicate-wild-ignore-table" target="_blank">https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#option_mysqld_replicate-wild-ignore-table</a></p>
<p style="margin: 0px 0px 1.2em !important;">と、あたかもCREATE USERもGRANTもフィルターに引っかからずにステートメントベースのルールでだけ評価されそうなことを言っているのに、現実には <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">replicate_wild_ignore_table=mysql.%</code> でフィルタされてしまう。</p>
<p style="margin: 0px 0px 1.2em !important;">実験。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">### Sourceになる
mysqlsh -- dba deploySandboxInstance 3306 --password=testpass
### 比較のためにreplicate_ignore_db=mysqlを設定したMySQL
mysqlsh -- dba deploySandboxInstance 3307 --password=testpass --mysqldOptions="replicate-ignore-db=mysql"
### 本丸のreplicate_wild_ignore_table=mysql.%を設定したMySQL
mysqlsh -- dba deploySandboxInstance 3308 --password=testpass --mysqldOptions="replicate-wild-ignore-table=mysql.%"
</code></pre><p style="margin: 0px 0px 1.2em !important;">ソースにCREATE USER/GRANTでレプリケーション用アカウントを作る。ここまではフツー。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysqlsh root:testpass@localhost:3306 --sql
CREATE USER replicate IDENTIFIED BY 'replication';
GRANT REPLICATION SLAVE ON *.* TO replicate;
</code></pre><p style="margin: 0px 0px 1.2em !important;">3307のインスタンスと3308のインスタンスでそれぞれレプリケーションを組む。 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">source_ssl=1</code> にしているのはcaching_sha2_passwordのエラー避け ( <a href="https://yoku0825.blogspot.com/2018/10/mysql-80cachingsha2password-ssl.html" target="_blank">日々の覚書: MySQL 8.0のcaching_sha2_password + 非SSL接続が転ける</a> )<br />別に <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">GET_SOURCE_PUBLIC_KEY=1</code> でもいい。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysqlsh root:testpass@localhost:3307 --sql
CHANGE REPLICATION SOURCE TO source_host = '127.0.0.1', source_port = 3306, source_user = 'replicate', source_password = 'replication', source_ssl = 1;
START REPLICA;
---
mysqlsh root:testpass@localhost:3308 --sql
CHANGE REPLICATION SOURCE TO source_host = '127.0.0.1', source_port = 3306, source_user = 'replicate', source_password = 'replication', source_ssl = 1;
START REPLICA;
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">source_log_pos</code> を指定していないのでソースに残っている先頭のバイナリログのpos=1からレプリケーションするので、本来 CREATE USERとGRANTはレプリカでも実行されてアカウントが作成されるはず。</p>
<p style="margin: 0px 0px 1.2em !important;">それぞれのインスタンスでSHOW GRANTSしてみると、</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">for port in 3306 3307 3308 ; do
mysqlsh root:testpass@localhost:$port --sql -e "SHOW GRANTS FOR replicate"
done
Grants for replicate@%
GRANT REPLICATION SLAVE ON *.* TO `replicate`@`%` ### 3306, replication source
Grants for replicate@%
GRANT REPLICATION SLAVE ON *.* TO `replicate`@`%` ### 3307, replicate_ignore_db=mysql だけどCREATE USERもGRANTも `USE` しない状態でやっているのでフィルターされない
ERROR: 1141 (42000) at line 1: There is no such grant defined for user 'replicate' on host '%' ### 3308のreplicate_wild_ignore_tablesだとフィルターされてCREATEもGRANTも実行されない
</code></pre><p style="margin: 0px 0px 1.2em !important;">コードを見る限りたぶんMySQLのバグじゃなくてドキュメントが間違ってるんだと思う。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/auth/sql_user_table.cc#L1975-L1990" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/auth/sql_user_table.cc#L1975-L1990</a></p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:I1RMO0RSPGRpdj4tIOS9k+aEn+OBqOOBl+OBpuOBr+efpeOBo+OBpuOBn+OBkeOBqeODrOODl+OD
quOCseODvOOCt+ODp+ODs+ODleOCo+ODq+OCv+OBq+OBr+WvvuW/nOOBmeOCi+OCs+ODvOODieOB
jOOBquOBj+OBpuOCguOCk+OBq+OCh+OCiuOBl+OBpuOBhOOBnzwvZGl2PjxkaXY+LSBbc3FsL3Jw
bF9maWx0ZXIuY2NdKGh0dHBzOi8vZ2l0aHViLmNvbS9teXNxbC9teXNxbC1zZXJ2ZXIvYmxvYi9t
eXNxbC04LjAuMzYvc3FsL3JwbF9maWx0ZXIuY2MpICoq44GY44KD44Gq44GP44GmKiogW3NxbC9h
dXRoL3NxbF91c2VyX3RhYmxlLmNjXShodHRwczovL2dpdGh1Yi5jb20vbXlzcWwvbXlzcWwtc2Vy
dmVyL2Jsb2IvbXlzcWwtOC4wLjM2L3NxbC9hdXRoL3NxbF91c2VyX3RhYmxlLmNjI0wxOTc1LUwx
OTkwKSDjgavln4vjgb7jgaPjgabjgYTjgoTjgYzjgaPjgZ88L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2Pi0tLS08L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuODieOCreOD
peODoeODs+ODiOOBq+OBr+OAgTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Jmd0OyDjgZ/jgaDj
gZfjgIHpgJrluLjjga/jgZPjga7mg4XloLHjgpLplpPmjqXnmoTjgavmm7TmlrDjgZnjgovjgrnj
g4bjg7zjg4jjg6Hjg7Pjg4ggKEdSQU5U44CBUkVWT0tF44CB44GK44KI44Gz44OI44Oq44Ks44O8
44CB44K544OI44Ki44OJ44Or44O844OB44Oz44CB44GK44KI44Gz44OT44Ol44O844KS5pON5L2c
44GZ44KL44K544OG44O844OI44Oh44Oz44OIKSDjga/jgIHjgrnjg4bjg7zjg4jjg6Hjg7Pjg4jj
g5njg7zjgrnjg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgpLkvb/nlKjjgZfjgabjg6zjg5fjg6rj
gqvjgavjg6zjg5fjg6rjgrHjg7zjg4jjgZXjgozjgb7jgZnjgII8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2PltNeVNRTCA6OiBNeVNRTCA4XC4wIOODquODleOCoeODrOODs+OCueODnuODi+ODpeOC
ouODqyA6OiAxN1wuNVwuMVwuMjIgbXlzcWwg44K344K544OG44Og44K544Kt44O844Oe44Gu44Os
44OX44Oq44Kx44O844K344On44OzXShodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi84
LjAvamEvcmVwbGljYXRpb24tZmVhdHVyZXMtbXlzcWxkYi5odG1sKTwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+Jmd0OyZuYnNwO1RhYmxlLWxldmVsIHJlcGxpY2F0aW9uIGZpbHRlcnMgYXJlIG9u
bHkgYXBwbGllZCB0byB0YWJsZXMgdGhhdCBhcmUgZXhwbGljaXRseSBtZW50aW9uZWQgYW5kIG9w
ZXJhdGVkIG9uIGluIHRoZSBxdWVyeS4gVGhleSBkbyBub3QgYXBwbHkgdG8gdGFibGVzIHRoYXQg
YXJlIGltcGxpY2l0bHkgdXBkYXRlZCBieSB0aGUgcXVlcnkuIEZvciBleGFtcGxlLCBhIEdSQU5U
IHN0YXRlbWVudCwgd2hpY2ggdXBkYXRlcyB0aGUgbXlzcWwudXNlciBzeXN0ZW0gdGFibGUgYnV0
IGRvZXMgbm90IG1lbnRpb24gdGhhdCB0YWJsZSwgaXMgbm90IGFmZmVjdGVkIGJ5IGEgZmlsdGVy
IHRoYXQgc3BlY2lmaWVzIG15c3FsLiUgYXMgdGhlIHdpbGRjYXJkIHBhdHRlcm4uPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj5odHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi84LjAvZW4v
cmVwbGljYXRpb24tb3B0aW9ucy1yZXBsaWNhLmh0bWwjb3B0aW9uX215c3FsZF9yZXBsaWNhdGUt
d2lsZC1pZ25vcmUtdGFibGU8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pijml6XmnKzoqp7niYjj
gavjga/jgZPjga7ooajoqJjjgYzjgarjgYvjgaPjgZ/igKYpPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj7jgZfjgYvjgoLjgZTkuIHlr6fjgavlm57pgb/mlrnms5Xjgb7jgac8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PiZndDsmbmJzcDtJZiB5b3UgbmVlZCB0byBmaWx0ZXIgb3V0IEdSQU5UIHN0
YXRlbWVudHMgb3Igb3RoZXIgYWRtaW5pc3RyYXRpdmUgc3RhdGVtZW50cywgYSBwb3NzaWJsZSB3
b3JrYXJvdW5kIGlzIHRvIHVzZSB0aGUgLS1yZXBsaWNhdGUtaWdub3JlLWRiIGZpbHRlci4gVGhp
cyBmaWx0ZXIgb3BlcmF0ZXMgb24gdGhlIGRlZmF1bHQgZGF0YWJhc2UgdGhhdCBpcyBjdXJyZW50
bHkgaW4gZWZmZWN0LCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBVU0Ugc3RhdGVtZW50LiZuYnNwOzwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+aHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4v
OC4wL2VuL3JlcGxpY2F0aW9uLW9wdGlvbnMtcmVwbGljYS5odG1sI29wdGlvbl9teXNxbGRfcmVw
bGljYXRlLXdpbGQtaWdub3JlLXRhYmxlPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj7jgajjgIHjgYLjgZ/jgYvjgoJDUkVBVEUgVVNFUuOCgkdSQU5U44KC44OV44Kj44Or
44K/44O844Gr5byV44Gj44GL44GL44KJ44Ga44Gr44K544OG44O844OI44Oh44Oz44OI44OZ44O8
44K544Gu44Or44O844Or44Gn44Gg44GR6KmV5L6h44GV44KM44Gd44GG44Gq44GT44Go44KS6KiA
44Gj44Gm44GE44KL44Gu44Gr44CB54++5a6f44Gr44GvIGByZXBsaWNhdGVfd2lsZF9pZ25vcmVf
dGFibGU9bXlzcWwuJWAg44Gn44OV44Kj44Or44K/44GV44KM44Gm44GX44G+44GG44CCPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7lrp/pqJPjgII8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4jIyMgU291cmNl44Gr44Gq44KLPC9kaXY+
PGRpdj5teXNxbHNoIC0tIGRiYSBkZXBsb3lTYW5kYm94SW5zdGFuY2UgMzMwNiAtLXBhc3N3b3Jk
PXRlc3RwYXNzPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4jIyMg5q+U6LyD44Gu44Gf44KB44Gr
cmVwbGljYXRlX2lnbm9yZV9kYj1teXNxbOOCkuioreWumuOBl+OBn015U1FMPC9kaXY+PGRpdj5t
eXNxbHNoIC0tIGRiYSBkZXBsb3lTYW5kYm94SW5zdGFuY2UgMzMwNyAtLXBhc3N3b3JkPXRlc3Rw
YXNzIC0tbXlzcWxkT3B0aW9ucz0icmVwbGljYXRlLWlnbm9yZS1kYj1teXNxbCI8L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PiMjIyDmnKzkuLjjga5yZXBsaWNhdGVfd2lsZF9pZ25vcmVfdGFibGU9
bXlzcWwuJeOCkuioreWumuOBl+OBn015U1FMPC9kaXY+PGRpdj5teXNxbHNoIC0tIGRiYSBkZXBs
b3lTYW5kYm94SW5zdGFuY2UgMzMwOCAtLXBhc3N3b3JkPXRlc3RwYXNzIC0tbXlzcWxkT3B0aW9u
cz0icmVwbGljYXRlLXdpbGQtaWdub3JlLXRhYmxlPW15c3FsLiUiPC9kaXY+PGRpdj5gYGA8L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOCveODvOOCueOBq0NSRUFURSBVU0VSL0dSQU5U44Gn44Os
44OX44Oq44Kx44O844K344On44Oz55So44Ki44Kr44Km44Oz44OI44KS5L2c44KL44CC44GT44GT
44G+44Gn44Gv44OV44OE44O844CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2Pm15c3Fsc2ggcm9vdDp0ZXN0cGFzc0Bsb2NhbGhvc3Q6MzMwNiAtLXNxbDwvZGl2PjxkaXY+
PGJyPjwvZGl2PjxkaXY+Q1JFQVRFIFVTRVIgcmVwbGljYXRlIElERU5USUZJRUQgQlkgJ3JlcGxp
Y2F0aW9uJzs8L2Rpdj48ZGl2PkdSQU5UIFJFUExJQ0FUSU9OIFNMQVZFIE9OICouKiBUTyByZXBs
aWNhdGU7PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjMzMDfjga7jgqTj
g7Pjgrnjgr/jg7PjgrnjgagzMzA444Gu44Kk44Oz44K544K/44Oz44K544Gn44Gd44KM44Ge44KM
44Os44OX44Oq44Kx44O844K344On44Oz44KS57WE44KA44CCIGBzb3VyY2Vfc3NsPTFgIOOBq+OB
l+OBpuOBhOOCi+OBruOBr2NhY2hpbmdfc2hhMl9wYXNzd29yZOOBruOCqOODqeODvOmBv+OBkSAo
Jm5ic3A7W+aXpeOAheOBruimmuabuDogTXlTUUwgOFwuMOOBrmNhY2hpbmdcX3NoYTJcX3Bhc3N3
b3JkIFwrIOmdnlNTTOaOpee2muOBjOi7ouOBkeOCi10oaHR0cHM6Ly95b2t1MDgyNS5ibG9nc3Bv
dC5jb20vMjAxOC8xMC9teXNxbC04MGNhY2hpbmdzaGEycGFzc3dvcmQtc3NsLmh0bWwpICk8L2Rp
dj48ZGl2PuWIpeOBqyBgR0VUX1NPVVJDRV9QVUJMSUNfS0VZPTFgIOOBp+OCguOBhOOBhOOAgjwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj5teXNxbHNoIHJvb3Q6dGVzdHBh
c3NAbG9jYWxob3N0OjMzMDcgLS1zcWw8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkNIQU5HRSBS
RVBMSUNBVElPTiBTT1VSQ0UgVE8gc291cmNlX2hvc3QgPSAnMTI3LjAuMC4xJywgc291cmNlX3Bv
cnQgPSAzMzA2LCBzb3VyY2VfdXNlciA9ICdyZXBsaWNhdGUnLCBzb3VyY2VfcGFzc3dvcmQgPSAn
cmVwbGljYXRpb24nLCBzb3VyY2Vfc3NsID0gMTs8L2Rpdj48ZGl2PlNUQVJUIFJFUExJQ0E7PC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pm15c3Fs
c2ggcm9vdDp0ZXN0cGFzc0Bsb2NhbGhvc3Q6MzMwOCAtLXNxbDwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+Q0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBzb3VyY2VfaG9zdCA9ICcxMjcuMC4w
LjEnLCBzb3VyY2VfcG9ydCA9IDMzMDYsIHNvdXJjZV91c2VyID0gJ3JlcGxpY2F0ZScsIHNvdXJj
ZV9wYXNzd29yZCA9ICdyZXBsaWNhdGlvbicsIHNvdXJjZV9zc2wgPSAxOzwvZGl2PjxkaXY+U1RB
UlQgUkVQTElDQTs8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YHNvdXJj
ZV9sb2dfcG9zYCDjgpLmjIflrprjgZfjgabjgYTjgarjgYTjga7jgafjgr3jg7zjgrnjgavmrovj
gaPjgabjgYTjgovlhYjpoK3jga7jg5DjgqTjg4rjg6rjg63jgrDjga5wb3M9MeOBi+OCieODrOOD
l+ODquOCseODvOOCt+ODp+ODs+OBmeOCi+OBruOBp+OAgeacrOadpSBDUkVBVEUgVVNFUuOBqEdS
QU5U44Gv44Os44OX44Oq44Kr44Gn44KC5a6f6KGM44GV44KM44Gm44Ki44Kr44Km44Oz44OI44GM
5L2c5oiQ44GV44KM44KL44Gv44Ga44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgZ3jgozj
gZ7jgozjga7jgqTjg7Pjgrnjgr/jg7PjgrnjgadTSE9XIEdSQU5UU+OBl+OBpuOBv+OCi+OBqOOA
gTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj5mb3IgcG9ydCBpbiAzMzA2
IDMzMDcgMzMwOCA7IGRvPC9kaXY+PGRpdj4mbmJzcDsgbXlzcWxzaCByb290OnRlc3RwYXNzQGxv
Y2FsaG9zdDokcG9ydCAtLXNxbCAtZSAiU0hPVyBHUkFOVFMgRk9SIHJlcGxpY2F0ZSI8L2Rpdj48
ZGl2PmRvbmU8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkdyYW50cyBmb3IgcmVwbGljYXRlQCU8
L2Rpdj48ZGl2PkdSQU5UIFJFUExJQ0FUSU9OIFNMQVZFIE9OICouKiBUTyBgcmVwbGljYXRlYEBg
JWAmbmJzcDsgJm5ic3A7ICMjIyAzMzA2LCByZXBsaWNhdGlvbiBzb3VyY2U8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PkdyYW50cyBmb3IgcmVwbGljYXRlQCU8L2Rpdj48ZGl2PkdSQU5UIFJFUExJ
Q0FUSU9OIFNMQVZFIE9OICouKiBUTyBgcmVwbGljYXRlYEBgJWAmbmJzcDsgJm5ic3A7ICMjIyAz
MzA3LCByZXBsaWNhdGVfaWdub3JlX2RiPW15c3FsIOOBoOOBkeOBqUNSRUFURSBVU0VS44KCR1JB
TlTjgoIgYFVTRWAg44GX44Gq44GE54q25oWL44Gn44KE44Gj44Gm44GE44KL44Gu44Gn44OV44Kj
44Or44K/44O844GV44KM44Gq44GEPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5FUlJPUjogMTE0
MSAoNDIwMDApIGF0IGxpbmUgMTogVGhlcmUgaXMgbm8gc3VjaCBncmFudCBkZWZpbmVkIGZvciB1
c2VyICdyZXBsaWNhdGUnIG9uIGhvc3QgJyUnJm5ic3A7ICZuYnNwOyMjIyAzMzA444GucmVwbGlj
YXRlX3dpbGRfaWdub3JlX3RhYmxlc+OBoOOBqOODleOCo+ODq+OCv+ODvOOBleOCjOOBpkNSRUFU
ReOCgkdSQU5U44KC5a6f6KGM44GV44KM44Gq44GEPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOCs+ODvOODieOCkuimi+OCi+mZkOOC
iuOBn+OBtuOCk015U1FM44Gu44OQ44Kw44GY44KD44Gq44GP44Gm44OJ44Kt44Ol44Oh44Oz44OI
44GM6ZaT6YGV44Gj44Gm44KL44KT44Gg44Go5oCd44GG44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5odHRwczovL2dpdGh1Yi5jb20vbXlzcWwvbXlzcWwtc2VydmVyL2Jsb2IvbXlzcWwtOC4w
LjM2L3NxbC9hdXRoL3NxbF91c2VyX3RhYmxlLmNjI0wxOTc1LUwxOTkwPC9kaXY+"></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-72580311871432722222024-03-05T14:31:00.004+09:002024-03-05T14:31:17.580+09:00MySQLのCHECKSUM TABLEは特別なことをせずに愚直に行を全部読んでチェックサムを取っている<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/7258031187143272222"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;">タイトルが全て</li>
<li style="margin: 0.5em 0px;">インデックスの情報は考慮しないのでインデックスが違ってもチェックサムは一致する</li>
<li style="margin: 0.5em 0px;">最終的に行ごとのチェックサムを合計しているので行の順番が違ってもチェックサムは一致する</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/en/checksum-table.html" target="_blank">CHECKSUM TABLE</a> は不思議なちからでテーブルのチェックサムを計算しているかのように思えるかも知れないがさにあらず。<br />実に地味に1行1フィールドずつ読んでチェックサムを取っている。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/sql_table.cc#L18745-L18904" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/sql_table.cc#L18745-L18904</a></p>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">field_listに結果セットのカラム情報みたいなのを突っ込んで <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">thd->send_result_metadata</code> を呼ぶところはまさに結果セットのカラム情報を作っているところ。</p>
</li>
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">for (table = tables; table; table = table->next_local)</code> ってことはCHECKSUM TABLEって複数のテーブル一括指定できるのかなって思ったらやっぱりできる</p>
</li>
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">protocol->start_row()</code> が「ここから結果セットの行を始めるよ」, <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">protocol->store(table_name, system_charset_info)</code> が「次のカラムに <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">table_name</code> を <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">system_charset_info</code> の文字コードで入れるよ」</p>
</li>
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">HA_HAS_CHECKSUM</code> はストレージエンジンが持つ属性( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">ha_table_flags</code> )の一つでなんかMyISAMっぽいなと思ったらやっぱりMyISAM専用だった。これが立ってると直接ストレージエンジンからCHECKSUMを返せるらしい</p>
<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/handler.h#L314-L317" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/handler.h#L314-L317</a></li>
<li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/ja/create-table.html#:~:text=%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82-,CHECKSUM,%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%82%B5%E3%83%A0%E3%82%92%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20(MyISAM%20%E3%81%AE%E3%81%BF%E3%80%82),-%5BDEFAULT%5D%20COLLATE" target="_blank">https://dev.mysql.com/doc/refman/8.0/ja/create-table.html#:~:text=%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82-,CHECKSUM,%E3%82%B9%E3%83%86%E3%83%BC%E3%83%88%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%82%B5%E3%83%A0%E3%82%92%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20(MyISAM%20%E3%81%AE%E3%81%BF%E3%80%82),-%5BDEFAULT%5D%20COLLATE</a><ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">CHECKSUM = 1</code> なんてテーブルオプション知らなかった…</li>
</ul>
</li>
</ul>
</li>
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">HA_HAS_CHECKSUM</code> を持っていない(InnoDBは常に持っていない) か <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">CHECKSUM TABLE .. EXTENDED</code> で指定している場合は愚直なループに突っ込んでいく</p>
<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/sql_table.cc#L18821-L18874" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.36/sql/sql_table.cc#L18821-L18874</a></p>
</li>
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">1行ずつ読んで、1カラムずつ右にずらしながらcrc32の値を足し続けるらしい</p>
</li>
</ul>
</li>
</ul>
<p style="margin: 0px 0px 1.2em !important;">ということは、データ型が同じ扱いになるやつや行の順番には関係がないので <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">CHECKSUM TABLE</code> が通ることがある…?</p>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">PKあり vs PKなし、データ型いっしょ、行の順番違う</p>
<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;">CHECKSUMいっしょ</li>
</ul>
</li>
</ul>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 40> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`num` bigint unsigned NOT NULL AUTO_INCREMENT,
`val` varchar(32) DEFAULT NULL,
PRIMARY KEY (`num`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql80 40> SHOW CREATE TABLE t2\G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE `t2` (
`num` bigint unsigned NOT NULL,
`val` varchar(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql80 40> SELECT * FROM t1;
+-----+------+
| num | val |
+-----+------+
| 1 | one |
| 2 | two |
+-----+------+
2 rows in set (0.00 sec)
mysql80 40> SELECT * FROM t2;
+-----+------+
| num | val |
+-----+------+
| 2 | two |
| 1 | one |
+-----+------+
2 rows in set (0.00 sec)
mysql80 40> CHECKSUM TABLE t1, t2;
+-------+------------+
| Table | Checksum |
+-------+------------+
| d1.t1 | 4082666774 |
| d1.t2 | 4082666774 |
+-------+------------+
2 rows in set (0.00 sec)
</code></pre><ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">varchar vs char, 行の順番一緒</p>
<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;">違うのになる</li>
</ul>
</li>
</ul>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 40> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`val` varchar(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql80 40> SHOW CREATE TABLE t2\G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE `t2` (
`val` char(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql80 40> CHECKSUM TABLE t1, t2;
+-------+------------+
| Table | Checksum |
+-------+------------+
| d1.t1 | 1816645479 |
| d1.t2 | 2736998372 |
+-------+------------+
2 rows in set (0.00 sec)
</code></pre><ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important; margin: 0px 0px 1.2em !important;">varchar(32) vs varchar(255), 行の順番一緒</p>
<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;">同じのになる</li>
</ul>
</li>
</ul>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 40> SHOW CREATE TABLE t1\G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`val` varchar(32) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql80 40> SHOW CREATE TABLE t2\G
*************************** 1. row ***************************
Table: t2
Create Table: CREATE TABLE `t2` (
`val` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql80 40> CHECKSUM TABLE t1, t2;
+-------+------------+
| Table | Checksum |
+-------+------------+
| d1.t1 | 1816645479 |
| d1.t2 | 1816645479 |
+-------+------------+
2 rows in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">あなたの知らない <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">CHECKSUM TABLE</code> の世界</p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+I1RMO0RSPC9wPjxwPi0g44K/44Kk44OI44Or44GM5YWo44GmPC9wPjxwPi0g44Kk44Oz44OH
44OD44Kv44K544Gu5oOF5aCx44Gv6ICD5oWu44GX44Gq44GE44Gu44Gn44Kk44Oz44OH44OD44Kv
44K544GM6YGV44Gj44Gm44KC44OB44Kn44OD44Kv44K144Og44Gv5LiA6Ie044GZ44KLPC9wPjxw
Pi0g5pyA57WC55qE44Gr6KGM44GU44Go44Gu44OB44Kn44OD44Kv44K144Og44KS5ZCI6KiI44GX
44Gm44GE44KL44Gu44Gn6KGM44Gu6aCG55Wq44GM6YGV44Gj44Gm44KC44OB44Kn44OD44Kv44K1
44Og44Gv5LiA6Ie044GZ44KLPC9wPjxwPjxicj48L3A+PHA+LS0tLTwvcD48cD48YnI+PC9wPjxw
PltDSEVDS1NVTSBUQUJMRV0oaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC4wL2Vu
L2NoZWNrc3VtLXRhYmxlLmh0bWwpIOOBr+S4jeaAneitsOOBquOBoeOBi+OCieOBp+ODhuODvOOD
luODq+OBruODgeOCp+ODg+OCr+OCteODoOOCkuioiOeul+OBl+OBpuOBhOOCi+OBi+OBruOCiOOB
huOBq+aAneOBiOOCi+OBi+OCguefpeOCjOOBquOBhOOBjOOBleOBq+OBguOCieOBmuOAgjwvcD48
cD7lrp/jgavlnLDlkbPjgasx6KGMMeODleOCo+ODvOODq+ODieOBmuOBpOiqreOCk+OBp+ODgeOC
p+ODg+OCr+OCteODoOOCkuWPluOBo+OBpuOBhOOCi+OAgjwvcD48cD48YnI+PC9wPjxwPmh0dHBz
Oi8vZ2l0aHViLmNvbS9teXNxbC9teXNxbC1zZXJ2ZXIvYmxvYi9teXNxbC04LjAuMzYvc3FsL3Nx
bF90YWJsZS5jYyNMMTg3NDUtTDE4OTA0PC9wPjxwPjxicj48L3A+PHA+LSBmaWVsZF9saXN044Gr
57WQ5p6c44K744OD44OI44Gu44Kr44Op44Og5oOF5aCx44G/44Gf44GE44Gq44Gu44KS56qB44Gj
6L6844KT44GnIGB0aGQtJmd0O3NlbmRfcmVzdWx0X21ldGFkYXRhYCDjgpLlkbzjgbbjgajjgZPj
go3jga/jgb7jgZXjgavntZDmnpzjgrvjg4Pjg4jjga7jgqvjg6njg6Dmg4XloLHjgpLkvZzjgaPj
gabjgYTjgovjgajjgZPjgo3jgII8L3A+PHA+PGJyPjwvcD48cD4tIGBmb3IgKHRhYmxlID0gdGFi
bGVzOyB0YWJsZTsgdGFibGUgPSB0YWJsZS0mZ3Q7bmV4dF9sb2NhbClgIOOBo+OBpuOBk+OBqOOB
r0NIRUNLU1VNIFRBQkxF44Gj44Gm6KSH5pWw44Gu44OG44O844OW44Or5LiA5ous5oyH5a6a44Gn
44GN44KL44Gu44GL44Gq44Gj44Gm5oCd44Gj44Gf44KJ44KE44Gj44Gx44KK44Gn44GN44KLPC9w
PjxwPjxicj48L3A+PHA+LSBgcHJvdG9jb2wtJmd0O3N0YXJ0X3JvdygpYCDjgYzjgIzjgZPjgZPj
gYvjgonntZDmnpzjgrvjg4Pjg4jjga7ooYzjgpLlp4vjgoHjgovjgojjgI0sIGBwcm90b2NvbC0m
Z3Q7c3RvcmUodGFibGVfbmFtZSwgc3lzdGVtX2NoYXJzZXRfaW5mbylgIOOBjOOAjOasoeOBruOC
q+ODqeODoOOBqyBgdGFibGVfbmFtZWAg44KSJm5ic3A7IGBzeXN0ZW1fY2hhcnNldF9pbmZvYCDj
ga7mloflrZfjgrPjg7zjg4njgaflhaXjgozjgovjgojjgI08L3A+PHA+PGJyPjwvcD48cD4tIGBI
QV9IQVNfQ0hFQ0tTVU1gIOOBr+OCueODiOODrOODvOOCuOOCqOODs+OCuOODs+OBjOaMgeOBpOWx
nuaApyggYGhhX3RhYmxlX2ZsYWdzYCAp44Gu5LiA44Gk44Gn44Gq44KT44GLTXlJU0FN44Gj44G9
44GE44Gq44Go5oCd44Gj44Gf44KJ44KE44Gj44Gx44KKTXlJU0FN5bCC55So44Gg44Gj44Gf44CC
44GT44KM44GM56uL44Gj44Gm44KL44Go55u05o6l44K544OI44Os44O844K444Ko44Oz44K444Oz
44GL44KJQ0hFQ0tTVU3jgpLov5TjgZvjgovjgonjgZfjgYQ8L3A+PHA+Jm5ic3A7IC0mbmJzcDto
dHRwczovL2dpdGh1Yi5jb20vbXlzcWwvbXlzcWwtc2VydmVyL2Jsb2IvbXlzcWwtOC4wLjM2L3Nx
bC9oYW5kbGVyLmgjTDMxNC1MMzE3PC9wPjxwPiZuYnNwOyAtJm5ic3A7aHR0cHM6Ly9kZXYubXlz
cWwuY29tL2RvYy9yZWZtYW4vOC4wL2phL2NyZWF0ZS10YWJsZS5odG1sIzp+OnRleHQ9JUUzJTgx
JTk1JUUzJTgyJThDJUUzJTgxJUJFJUUzJTgxJTk5JUUzJTgwJTgyLSxDSEVDS1NVTSwlRTMlODIl
QjklRTMlODMlODYlRTMlODMlQkMlRTMlODMlODglRTMlODMlQTElRTMlODMlQjMlRTMlODMlODgl
RTMlODElQUYlRTMlODAlODElRTMlODElOTMlRTMlODElQUUlRTMlODMlODElRTMlODIlQTclRTMl
ODMlODMlRTMlODIlQUYlRTMlODIlQjUlRTMlODMlQTAlRTMlODIlOTIlRTMlODMlQUMlRTMlODMl
OUQlRTMlODMlQkMlRTMlODMlODglRTMlODElOTclRTMlODElQkUlRTMlODElOTklRTMlODAlODIl
MjAoTXlJU0FNJTIwJUUzJTgxJUFFJUUzJTgxJUJGJUUzJTgwJTgyKSwtJTVCREVGQVVMVCU1RCUy
MENPTExBVEU8L3A+PHA+Jm5ic3A7ICZuYnNwOyAtIGBDSEVDS1NVTSA9IDFgIOOBquOCk+OBpuOD
huODvOODluODq+OCquODl+OCt+ODp+ODs+efpeOCieOBquOBi+OBo+OBn+KApjwvcD48cD48YnI+
PC9wPjxwPi0gYEhBX0hBU19DSEVDS1NVTWAg44KS5oyB44Gj44Gm44GE44Gq44GEKElubm9EQuOB
r+W4uOOBq+aMgeOBo+OBpuOBhOOBquOBhCkg44GLIGBDSEVDS1NVTSBUQUJMRSAuLiBFWFRFTkRF
RGAg44Gn5oyH5a6a44GX44Gm44GE44KL5aC05ZCI44Gv5oSa55u044Gq44Or44O844OX44Gr56qB
44Gj6L6844KT44Gn44GE44GPPC9wPjxwPjxicj48L3A+PHA+Jm5ic3A7IC0mbmJzcDtodHRwczov
L2dpdGh1Yi5jb20vbXlzcWwvbXlzcWwtc2VydmVyL2Jsb2IvbXlzcWwtOC4wLjM2L3NxbC9zcWxf
dGFibGUuY2MjTDE4ODIxLUwxODg3NDwvcD48cD48YnI+PC9wPjxwPiZuYnNwOyAtIDHooYzjgZrj
gaToqq3jgpPjgafjgIEx44Kr44Op44Og44Ga44Gk5Y+z44Gr44Ga44KJ44GX44Gq44GM44KJY3Jj
MzLjga7lgKTjgpLotrPjgZfntprjgZHjgovjgonjgZfjgYQ8L3A+PHA+PGJyPjwvcD48cD7jgajj
gYTjgYbjgZPjgajjga/jgIHjg4fjg7zjgr/lnovjgYzlkIzjgZjmibHjgYTjgavjgarjgovjgoTj
gaTjgoTooYzjga7poIbnlarjgavjga/plqLkv4LjgYzjgarjgYTjga7jgacgYENIRUNLU1VNIFRB
QkxFYCDjgYzpgJrjgovjgZPjgajjgYzjgYLjgovigKbvvJ88L3A+PHA+PGJyPjwvcD48cD48YnI+
PC9wPjxwPi0gUEvjgYLjgoogdnMgUEvjgarjgZfjgIHjg4fjg7zjgr/lnovjgYTjgaPjgZfjgofj
gIHooYzjga7poIbnlarpgZXjgYY8L3A+PHA+PGJyPjwvcD48cD4mbmJzcDsgLSBDSEVDS1NVTeOB
hOOBo+OBl+OChzwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD5teXNxbDgwIDQwJmd0OyBTSE9X
IENSRUFURSBUQUJMRSB0MVxHPC9wPjxwPioqKioqKioqKioqKioqKioqKioqKioqKioqKiAxLiBy
b3cgKioqKioqKioqKioqKioqKioqKioqKioqKioqPC9wPjxwPiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO1RhYmxlOiB0MTwvcD48cD5DcmVhdGUgVGFibGU6IENSRUFURSBUQUJMRSBgdDFgICg8
L3A+PHA+Jm5ic3A7IGBudW1gIGJpZ2ludCB1bnNpZ25lZCBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVO
VCw8L3A+PHA+Jm5ic3A7IGB2YWxgIHZhcmNoYXIoMzIpIERFRkFVTFQgTlVMTCw8L3A+PHA+Jm5i
c3A7IFBSSU1BUlkgS0VZIChgbnVtYCk8L3A+PHA+KSBFTkdJTkU9SW5ub0RCIEFVVE9fSU5DUkVN
RU5UPTMgREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0XzA5MDBfYWlfY2k8
L3A+PHA+MSByb3cgaW4gc2V0ICgwLjAwIHNlYyk8L3A+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2
Pm15c3FsODAgNDAmZ3Q7IFNIT1cgQ1JFQVRFIFRBQkxFIHQyXEc8L2Rpdj48ZGl2PioqKioqKioq
KioqKioqKioqKioqKioqKioqKiAxLiByb3cgKioqKioqKioqKioqKioqKioqKioqKioqKioqPC9k
aXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtUYWJsZTogdDI8L2Rpdj48ZGl2PkNy
ZWF0ZSBUYWJsZTogQ1JFQVRFIFRBQkxFIGB0MmAgKDwvZGl2PjxkaXY+Jm5ic3A7IGBudW1gIGJp
Z2ludCB1bnNpZ25lZCBOT1QgTlVMTCw8L2Rpdj48ZGl2PiZuYnNwOyBgdmFsYCB2YXJjaGFyKDMy
KSBERUZBVUxUIE5VTEw8L2Rpdj48ZGl2PikgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9
dXRmOG1iNCBDT0xMQVRFPXV0ZjhtYjRfMDkwMF9haV9jaTwvZGl2PjxkaXY+MSByb3cgaW4gc2V0
ICgwLjAwIHNlYyk8L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MCA0
MCZndDsgU0VMRUNUICogRlJPTSB0MTs8L2Rpdj48ZGl2PistLS0tLSstLS0tLS0rPC9kaXY+PGRp
dj58IG51bSB8IHZhbCZuYnNwOyB8PC9kaXY+PGRpdj4rLS0tLS0rLS0tLS0tKzwvZGl2PjxkaXY+
fCZuYnNwOyAmbmJzcDsxIHwgb25lJm5ic3A7IHw8L2Rpdj48ZGl2PnwmbmJzcDsgJm5ic3A7MiB8
IHR3byZuYnNwOyB8PC9kaXY+PGRpdj4rLS0tLS0rLS0tLS0tKzwvZGl2PjxkaXY+MiByb3dzIGlu
IHNldCAoMC4wMCBzZWMpPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5teXNxbDgwIDQwJmd0OyBT
RUxFQ1QgKiBGUk9NIHQyOzwvZGl2PjxkaXY+Ky0tLS0tKy0tLS0tLSs8L2Rpdj48ZGl2PnwgbnVt
IHwgdmFsJm5ic3A7IHw8L2Rpdj48ZGl2PistLS0tLSstLS0tLS0rPC9kaXY+PGRpdj58Jm5ic3A7
ICZuYnNwOzIgfCB0d28mbmJzcDsgfDwvZGl2PjxkaXY+fCZuYnNwOyAmbmJzcDsxIHwgb25lJm5i
c3A7IHw8L2Rpdj48ZGl2PistLS0tLSstLS0tLS0rPC9kaXY+PGRpdj4yIHJvd3MgaW4gc2V0ICgw
LjAwIHNlYyk8L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MCA0MCZn
dDsgQ0hFQ0tTVU0gVEFCTEUgdDEsIHQyOzwvZGl2PjxkaXY+Ky0tLS0tLS0rLS0tLS0tLS0tLS0t
KzwvZGl2PjxkaXY+fCBUYWJsZSB8IENoZWNrc3VtJm5ic3A7ICZuYnNwO3w8L2Rpdj48ZGl2Pist
LS0tLS0tKy0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgZDEudDEgfCA0MDgyNjY2Nzc0IHw8L2Rp
dj48ZGl2PnwgZDEudDIgfCA0MDgyNjY2Nzc0IHw8L2Rpdj48ZGl2PistLS0tLS0tKy0tLS0tLS0t
LS0tLSs8L2Rpdj48ZGl2PjIgcm93cyBpbiBzZXQgKDAuMDAgc2VjKTwvZGl2PjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4tIHZhcmNoYXIgdnMg
Y2hhciwg6KGM44Gu6aCG55Wq5LiA57eSPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4mbmJzcDsg
LSDpgZXjgYbjga7jgavjgarjgos8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2Pjxk
aXY+PGRpdj5teXNxbDgwIDQwJmd0OyBTSE9XIENSRUFURSBUQUJMRSB0MVxHPC9kaXY+PGRpdj4q
KioqKioqKioqKioqKioqKioqKioqKioqKiogMS4gcm93ICoqKioqKioqKioqKioqKioqKioqKioq
KioqKjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7VGFibGU6IHQxPC9kaXY+
PGRpdj5DcmVhdGUgVGFibGU6IENSRUFURSBUQUJMRSBgdDFgICg8L2Rpdj48ZGl2PiZuYnNwOyBg
dmFsYCB2YXJjaGFyKDMyKSBERUZBVUxUIE5VTEw8L2Rpdj48ZGl2PikgRU5HSU5FPUlubm9EQiBE
RUZBVUxUIENIQVJTRVQ9dXRmOG1iNCBDT0xMQVRFPXV0ZjhtYjRfMDkwMF9haV9jaTwvZGl2Pjxk
aXY+MSByb3cgaW4gc2V0ICgwLjAwIHNlYyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pm15c3Fs
ODAgNDAmZ3Q7IFNIT1cgQ1JFQVRFIFRBQkxFIHQyXEc8L2Rpdj48ZGl2PioqKioqKioqKioqKioq
KioqKioqKioqKioqKiAxLiByb3cgKioqKioqKioqKioqKioqKioqKioqKioqKioqPC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtUYWJsZTogdDI8L2Rpdj48ZGl2PkNyZWF0ZSBU
YWJsZTogQ1JFQVRFIFRBQkxFIGB0MmAgKDwvZGl2PjxkaXY+PGRpdj4mbmJzcDsgYHZhbGAgY2hh
cigzMikgREVGQVVMVCBOVUxMPC9kaXY+PC9kaXY+PGRpdj4pIEVOR0lORT1Jbm5vREIgREVGQVVM
VCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0XzA5MDBfYWlfY2k8L2Rpdj48ZGl2PjEg
cm93IGluIHNldCAoMC4wMCBzZWMpPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2
Pm15c3FsODAgNDAmZ3Q7IENIRUNLU1VNIFRBQkxFIHQxLCB0Mjs8L2Rpdj48ZGl2PistLS0tLS0t
Ky0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgVGFibGUgfCBDaGVja3N1bSZuYnNwOyAmbmJzcDt8
PC9kaXY+PGRpdj4rLS0tLS0tLSstLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IGQxLnQxIHwgMTgx
NjY0NTQ3OSB8PC9kaXY+PGRpdj58IGQxLnQyIHwgMjczNjk5ODM3MiB8PC9kaXY+PGRpdj4rLS0t
LS0tLSstLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj4yIHJvd3MgaW4gc2V0ICgwLjAwIHNlYyk8L2Rp
dj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+LSB2YXJjaGFyKDMyKSB2
cyB2YXJjaGFyKDI1NSksIOihjOOBrumghueVquS4gOe3kjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+Jm5ic3A7IC0g5ZCM44GY44Gu44Gr44Gq44KLPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5g
YGA8L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MCA0MCZndDsgU0hPVyBDUkVBVEUgVEFCTEUgdDFcRzwv
ZGl2PjxkaXY+KioqKioqKioqKioqKioqKioqKioqKioqKioqIDEuIHJvdyAqKioqKioqKioqKioq
KioqKioqKioqKioqKio8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1RhYmxl
OiB0MTwvZGl2PjxkaXY+Q3JlYXRlIFRhYmxlOiBDUkVBVEUgVEFCTEUgYHQxYCAoPC9kaXY+PGRp
dj4mbmJzcDsgYHZhbGAgdmFyY2hhcigzMikgREVGQVVMVCBOVUxMPC9kaXY+PGRpdj4pIEVOR0lO
RT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0XzA5MDBfYWlf
Y2k8L2Rpdj48ZGl2PjEgcm93IGluIHNldCAoMC4wMCBzZWMpPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5teXNxbDgwIDQwJmd0OyBTSE9XIENSRUFURSBUQUJMRSB0MlxHPC9kaXY+PGRpdj4qKioq
KioqKioqKioqKioqKioqKioqKioqKiogMS4gcm93ICoqKioqKioqKioqKioqKioqKioqKioqKioq
KjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7VGFibGU6IHQyPC9kaXY+PGRp
dj5DcmVhdGUgVGFibGU6IENSRUFURSBUQUJMRSBgdDJgICg8L2Rpdj48ZGl2PiZuYnNwOyBgdmFs
YCB2YXJjaGFyKDI1NSkgREVGQVVMVCBOVUxMPC9kaXY+PGRpdj4pIEVOR0lORT1Jbm5vREIgREVG
QVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0XzA5MDBfYWlfY2k8L2Rpdj48ZGl2
PjEgcm93IGluIHNldCAoMC4wMCBzZWMpPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgNDAmZ3Q7IENIRUNLU1VNIFRBQkxFIHQxLCB0Mjs8
L2Rpdj48ZGl2PistLS0tLS0tKy0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgVGFibGUgfCBDaGVj
a3N1bSZuYnNwOyAmbmJzcDt8PC9kaXY+PGRpdj4rLS0tLS0tLSstLS0tLS0tLS0tLS0rPC9kaXY+
PGRpdj58IGQxLnQxIHwgMTgxNjY0NTQ3OSB8PC9kaXY+PGRpdj58IGQxLnQyIHwgMTgxNjY0NTQ3
OSB8PC9kaXY+PGRpdj4rLS0tLS0tLSstLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj4yIHJvd3MgaW4g
c2V0ICgwLjAwIHNlYyk8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+44GC44Gq44Gf44Gu55+l44KJ44Gq44GEIGBDSEVDS1NVTSBUQUJM
RWAg44Gu5LiW55WMPC9kaXY+"></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-65768937382583982352024-02-09T15:16:00.006+09:002024-02-09T17:42:35.876+09:00GRANTでデータベース名にワイルドカードを指定することとpartial revokesと<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/6576893738258398235" markdown-here-wrapper-content-modified="true"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_partial_revokes" target="_blank">partial_revokes</a> が有効な状態だと <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">GRANT ALL ON 'd%'.* TO ..</code> みたいなデータベースワイルドカードの構文が効かない</li>
</ul>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">In privilege assignments, enabling partial_revokes causes MySQL to interpret occurrences of unescaped _ and % SQL wildcard characters in schema names as literal characters, just as if they had been escaped as \_ and \%. Because this changes how MySQL interprets privileges, it may be advisable to avoid unescaped wildcard characters in privilege assignments for installations where partial_revokes may be enabled.
In addition, use of _ and % as wildcard characters in grants is deprecated as of MySQL 8.0.35, and you should expect support for them to be removed in a future version of MySQL.
</code></pre><p style="margin: 0px 0px 1.2em;"><a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_partial_revokes" target="_blank">https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_partial_revokes</a></p>
<hr />
<p style="margin: 0px 0px 1.2em;">ドキュメントに書いてある以外に地味な罠があったし、そもそもこのpartial_revokesの制限を知らずに知らずに時間を溶かしたのでメモ。。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">CREATE USER yoku0825;
GRANT ALL ON `d%`.* TO yoku0825; -- シングルクォートでなくてバッククォート
mysql80 9> SHOW GRANTS;
+--------------------------------------------------+
| Grants for yoku0825@% |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `yoku0825`@`%` |
| GRANT ALL PRIVILEGES ON `d%`.* TO `yoku0825`@`%` |
+--------------------------------------------------+
2 rows in set (0.00 sec)
mysql80 9> CREATE DATABASE d11; -- d%` にマッチするから
Query OK, 1 row affected (0.00 sec)
mysql80 9> CREATE DATABASE d15; -- d% にマッチするから
Query OK, 1 row affected (0.01 sec)
mysql80 9> CREATE DATABASE newdb; -- d% にマッチしないから
ERROR 1044 (42000): Access denied for user 'yoku0825'@'%' to database 'newdb'
SET GLOBAL partial_revokes = ON;
mysql80 11> CREATE DATABASE d17; -- d% が文字列リテラルとして解釈されるから
ERROR 1044 (42000): Access denied for user 'yoku0825'@'%' to database 'd17'
mysql80 11> DROP DATABASE d11; -- !?
Query OK, 0 rows affected (0.00 sec)
mysql80 11> CREATE TABLE d15.t1 (num int); -- !?
Query OK, 0 rows affected (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em;">このデータベースのワイルドカード指定が8.0.35から非推奨だから、この一貫性のない挙動が直ってくれる気はしない…。</p><p style="margin: 0px 0px 1.2em;"><br /></p><p style="margin: 0px 0px 1.2em;">【2024/02/09 15:21】</p><p style="margin: 0px 0px 1.2em;">他の環境(8.0.32 + partial_revokes)だと既存のスキーマに対する操作もちゃんと拒否された(一貫性がある)</p><p style="margin: 0px 0px 1.2em;">違いがわからぬ。。。</p><p style="margin: 0px 0px 1.2em;"><br /></p><p style="margin: 0px 0px 1.2em;">【2024/02/09 17:41】</p><p style="margin: 0px 0px 1.2em;">my.cnfにpartial_revokes足してmysqldを再起動したらちゃんと一貫性のある動作になった。安心。</p>
<div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+IyBUTDtEUjwvcD48cD48YnI+PC9wPjxwPi0gW3BhcnRpYWxfcmV2b2tlc10oaHR0cHM6Ly9k
ZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC4wL2VuL3NlcnZlci1zeXN0ZW0tdmFyaWFibGVzLmh0
bWwjc3lzdmFyX3BhcnRpYWxfcmV2b2tlcykg44GM5pyJ5Yq544Gq54q25oWL44Gg44GoIGBHUkFO
VCBBTEwgT04gJ2QlJy4qIFRPIC4uYCDjgb/jgZ/jgYTjgarjg4fjg7zjgr/jg5njg7zjgrnjg6/j
gqTjg6vjg4njgqvjg7zjg4njga7mp4vmlofjgYzlirnjgYvjgarjgYQ8L3A+PHA+PGJyPjwvcD48
cD5gYGA8L3A+PHA+SW4gcHJpdmlsZWdlIGFzc2lnbm1lbnRzLCBlbmFibGluZyBwYXJ0aWFsX3Jl
dm9rZXMgY2F1c2VzIE15U1FMIHRvIGludGVycHJldCBvY2N1cnJlbmNlcyBvZiB1bmVzY2FwZWQg
XyBhbmQgJSBTUUwgd2lsZGNhcmQgY2hhcmFjdGVycyBpbiBzY2hlbWEgbmFtZXMgYXMgbGl0ZXJh
bCBjaGFyYWN0ZXJzLCBqdXN0IGFzIGlmIHRoZXkgaGFkIGJlZW4gZXNjYXBlZCBhcyBcXyBhbmQg
XCUuIEJlY2F1c2UgdGhpcyBjaGFuZ2VzIGhvdyBNeVNRTCBpbnRlcnByZXRzIHByaXZpbGVnZXMs
IGl0IG1heSBiZSBhZHZpc2FibGUgdG8gYXZvaWQgdW5lc2NhcGVkIHdpbGRjYXJkIGNoYXJhY3Rl
cnMgaW4gcHJpdmlsZWdlIGFzc2lnbm1lbnRzIGZvciBpbnN0YWxsYXRpb25zIHdoZXJlIHBhcnRp
YWxfcmV2b2tlcyBtYXkgYmUgZW5hYmxlZC48L3A+PHA+PGJyPjwvcD48cD5JbiBhZGRpdGlvbiwg
dXNlIG9mIF8gYW5kICUgYXMgd2lsZGNhcmQgY2hhcmFjdGVycyBpbiBncmFudHMgaXMgZGVwcmVj
YXRlZCBhcyBvZiBNeVNRTCA4LjAuMzUsIGFuZCB5b3Ugc2hvdWxkIGV4cGVjdCBzdXBwb3J0IGZv
ciB0aGVtIHRvIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBNeVNRTC48L3A+PHA+
YGBgPC9wPjxwPjxicj48L3A+PHA+aHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC4w
L2VuL3NlcnZlci1zeXN0ZW0tdmFyaWFibGVzLmh0bWwjc3lzdmFyX3BhcnRpYWxfcmV2b2tlczwv
cD48cD48YnI+PC9wPjxwPi0tLS08L3A+PHA+PGJyPjwvcD48cD7jg4njgq3jg6Xjg6Hjg7Pjg4jj
gavmm7jjgYTjgabjgYLjgovjgZPjgajjgYzlhajjgabjgaDjgZHjganjgIHnn6XjgonjgZrjgavm
mYLplpPjgpLmurbjgYvjgZfjgZ/jga7jgafjg6Hjg6LjgII8L3A+PHA+PGJyPjwvcD48cD5gYGA8
L3A+PHA+Q1JFQVRFIFVTRVIgeW9rdTA4MjU7PC9wPjxwPkdSQU5UIEFMTCBPTiBgZCVgLiogVE8g
eW9rdTA4MjU7Jm5ic3A7IC0tIOOCt+ODs+OCsOODq+OCr+OCqeODvOODiOOBp+OBquOBj+OBpuOD
kOODg+OCr+OCr+OCqeODvOODiDwvcD48cD48YnI+PC9wPjxwPm15c3FsODAgOSZndDsgU0hPVyBH
UkFOVFM7PC9wPjxwPistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSs8L3A+PHA+fCBHcmFudHMgZm9yIHlva3UwODI1QCUmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8L3A+PHA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48cD58IEdSQU5UIFVTQUdFIE9OICouKiBUTyBg
eW9rdTA4MjVgQGAlYCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3w8L3A+PHA+fCBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBgZCVgLiogVE8gYHlva3UwODI1
YEBgJWAgfDwvcD48cD4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rPC9wPjxwPjIgcm93cyBpbiBzZXQgKDAuMDAgc2VjKTwvcD48ZGl2Pjxicj48L2Rp
dj48ZGl2PjxkaXY+bXlzcWw4MCA5Jmd0OyBDUkVBVEUgREFUQUJBU0UgZDExOyZuYnNwOyAmbmJz
cDstLSBkJWAg44Gr44Oe44OD44OB44GZ44KL44GL44KJPC9kaXY+PGRpdj5RdWVyeSBPSywgMSBy
b3cgYWZmZWN0ZWQgKDAuMDAgc2VjKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bXlzcWw4MCA5
Jmd0OyBDUkVBVEUgREFUQUJBU0UgZDE1OyZuYnNwOyAmbmJzcDstLSBkJSDjgavjg57jg4Pjg4Hj
gZnjgovjgYvjgok8L2Rpdj48ZGl2PlF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wMSBzZWMp
PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PHA+bXlzcWw4MCA5Jmd0OyBDUkVBVEUgREFUQUJB
U0UgbmV3ZGI7Jm5ic3A7IC0tIGQlIOOBq+ODnuODg+ODgeOBl+OBquOBhOOBi+OCiTwvcD48cD5F
UlJPUiAxMDQ0ICg0MjAwMCk6IEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJ3lva3UwODI1J0AnJScg
dG8gZGF0YWJhc2UgJ25ld2RiJzwvcD48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PlNFVCBHTE9CQUwgcGFydGlhbF9yZXZva2VzID0gT047PC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IENSRUFURSBEQVRBQkFTRSBkMTc7
Jm5ic3A7ICZuYnNwOy0tIGQlIOOBjOaWh+Wtl+WIl+ODquODhuODqeODq+OBqOOBl+OBpuino+mH
iOOBleOCjOOCi+OBi+OCiTwvZGl2PjxkaXY+RVJST1IgMTA0NCAoNDIwMDApOiBBY2Nlc3MgZGVu
aWVkIGZvciB1c2VyICd5b2t1MDgyNSdAJyUnIHRvIGRhdGFiYXNlICdkMTcnPC9kaXY+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IERST1AgREFUQUJBU0UgZDEx
OyZuYnNwOyAtLSAhPzwvZGl2PjxkaXY+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMCBz
ZWMpPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IENS
RUFURSBUQUJMRSBkMTUudDEgKG51bSBpbnQpOyZuYnNwOyAtLSAhPzwvZGl2PjxkaXY+UXVlcnkg
T0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMSBzZWMpPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PuOCguOBhumdnuaOqOWlqOOBoOOBi+OCieS4gOiyq+aAp+OBruOB
guOCi+aMmeWLleOBq+ebtOOBo+OBpuOBj+OCjOOCi+awl+OBr+OBl+OBquOBhOOBkeOCjOOBqeOA
gTwvZGl2Pg=="></div><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+IyBUTDtEUjwvcD48cD48YnI+PC9wPjxwPi0gW3BhcnRpYWxfcmV2b2tlc10oaHR0cHM6Ly9k
ZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC4wL2VuL3NlcnZlci1zeXN0ZW0tdmFyaWFibGVzLmh0
bWwjc3lzdmFyX3BhcnRpYWxfcmV2b2tlcykg44GM5pyJ5Yq544Gq54q25oWL44Gg44GoIGBHUkFO
VCBBTEwgT04gJ2QlJy4qIFRPIC4uYCDjgb/jgZ/jgYTjgarjg4fjg7zjgr/jg5njg7zjgrnjg6/j
gqTjg6vjg4njgqvjg7zjg4njga7mp4vmlofjgYzlirnjgYvjgarjgYQ8L3A+PHA+PGJyPjwvcD48
cD5gYGA8L3A+PHA+SW4gcHJpdmlsZWdlIGFzc2lnbm1lbnRzLCBlbmFibGluZyBwYXJ0aWFsX3Jl
dm9rZXMgY2F1c2VzIE15U1FMIHRvIGludGVycHJldCBvY2N1cnJlbmNlcyBvZiB1bmVzY2FwZWQg
XyBhbmQgJSBTUUwgd2lsZGNhcmQgY2hhcmFjdGVycyBpbiBzY2hlbWEgbmFtZXMgYXMgbGl0ZXJh
bCBjaGFyYWN0ZXJzLCBqdXN0IGFzIGlmIHRoZXkgaGFkIGJlZW4gZXNjYXBlZCBhcyBcXyBhbmQg
XCUuIEJlY2F1c2UgdGhpcyBjaGFuZ2VzIGhvdyBNeVNRTCBpbnRlcnByZXRzIHByaXZpbGVnZXMs
IGl0IG1heSBiZSBhZHZpc2FibGUgdG8gYXZvaWQgdW5lc2NhcGVkIHdpbGRjYXJkIGNoYXJhY3Rl
cnMgaW4gcHJpdmlsZWdlIGFzc2lnbm1lbnRzIGZvciBpbnN0YWxsYXRpb25zIHdoZXJlIHBhcnRp
YWxfcmV2b2tlcyBtYXkgYmUgZW5hYmxlZC48L3A+PHA+PGJyPjwvcD48cD5JbiBhZGRpdGlvbiwg
dXNlIG9mIF8gYW5kICUgYXMgd2lsZGNhcmQgY2hhcmFjdGVycyBpbiBncmFudHMgaXMgZGVwcmVj
YXRlZCBhcyBvZiBNeVNRTCA4LjAuMzUsIGFuZCB5b3Ugc2hvdWxkIGV4cGVjdCBzdXBwb3J0IGZv
ciB0aGVtIHRvIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBNeVNRTC48L3A+PHA+
YGBgPC9wPjxwPjxicj48L3A+PHA+aHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC4w
L2VuL3NlcnZlci1zeXN0ZW0tdmFyaWFibGVzLmh0bWwjc3lzdmFyX3BhcnRpYWxfcmV2b2tlczwv
cD48cD48YnI+PC9wPjxwPi0tLS08L3A+PHA+PGJyPjwvcD48cD7jg4njgq3jg6Xjg6Hjg7Pjg4jj
gavmm7jjgYTjgabjgYLjgovjgZPjgajjgYzlhajjgabjgaDjgZHjganjgIHnn6XjgonjgZrjgavm
mYLplpPjgpLmurbjgYvjgZfjgZ/jga7jgafjg6Hjg6LjgII8L3A+PHA+PGJyPjwvcD48cD5gYGA8
L3A+PHA+Q1JFQVRFIFVTRVIgeW9rdTA4MjU7PC9wPjxwPkdSQU5UIEFMTCBPTiBgZCVgLiogVE8g
eW9rdTA4MjU7Jm5ic3A7IC0tIOOCt+ODs+OCsOODq+OCr+OCqeODvOODiOOBp+OBquOBj+OBpuOD
kOODg+OCr+OCr+OCqeODvOODiDwvcD48cD48YnI+PC9wPjxwPm15c3FsODAgOSZndDsgU0hPVyBH
UkFOVFM7PC9wPjxwPistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSs8L3A+PHA+fCBHcmFudHMgZm9yIHlva3UwODI1QCUmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8L3A+PHA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48cD58IEdSQU5UIFVTQUdFIE9OICouKiBUTyBg
eW9rdTA4MjVgQGAlYCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3w8L3A+PHA+fCBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBgZCVgLiogVE8gYHlva3UwODI1
YEBgJWAgfDwvcD48cD4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rPC9wPjxwPjIgcm93cyBpbiBzZXQgKDAuMDAgc2VjKTwvcD48ZGl2Pjxicj48L2Rp
dj48ZGl2PjxkaXY+bXlzcWw4MCA5Jmd0OyBDUkVBVEUgREFUQUJBU0UgZDExOyZuYnNwOyAmbmJz
cDstLSBkJWAg44Gr44Oe44OD44OB44GZ44KL44GL44KJPC9kaXY+PGRpdj5RdWVyeSBPSywgMSBy
b3cgYWZmZWN0ZWQgKDAuMDAgc2VjKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bXlzcWw4MCA5
Jmd0OyBDUkVBVEUgREFUQUJBU0UgZDE1OyZuYnNwOyAmbmJzcDstLSBkJSDjgavjg57jg4Pjg4Hj
gZnjgovjgYvjgok8L2Rpdj48ZGl2PlF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wMSBzZWMp
PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PHA+bXlzcWw4MCA5Jmd0OyBDUkVBVEUgREFUQUJB
U0UgbmV3ZGI7Jm5ic3A7IC0tIGQlIOOBq+ODnuODg+ODgeOBl+OBquOBhOOBi+OCiTwvcD48cD5F
UlJPUiAxMDQ0ICg0MjAwMCk6IEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJ3lva3UwODI1J0AnJScg
dG8gZGF0YWJhc2UgJ25ld2RiJzwvcD48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PlNFVCBHTE9CQUwgcGFydGlhbF9yZXZva2VzID0gT047PC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IENSRUFURSBEQVRBQkFTRSBkMTc7
Jm5ic3A7ICZuYnNwOy0tIGQlIOOBjOaWh+Wtl+WIl+ODquODhuODqeODq+OBqOOBl+OBpuino+mH
iOOBleOCjOOCi+OBi+OCiTwvZGl2PjxkaXY+RVJST1IgMTA0NCAoNDIwMDApOiBBY2Nlc3MgZGVu
aWVkIGZvciB1c2VyICd5b2t1MDgyNSdAJyUnIHRvIGRhdGFiYXNlICdkMTcnPC9kaXY+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IERST1AgREFUQUJBU0UgZDEx
OyZuYnNwOyAtLSAhPzwvZGl2PjxkaXY+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMCBz
ZWMpPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IENS
RUFURSBUQUJMRSBkMTUudDEgKG51bSBpbnQpOyZuYnNwOyAtLSAhPzwvZGl2PjxkaXY+UXVlcnkg
T0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMSBzZWMpPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PuOCguOBhumdnuaOqOWlqOOBoOOBi+OCieS4gOiyq+aAp+OBruOB
guOCi+aMmeWLleOBq+ebtOOBo+OBpuOBj+OCjOOCi+awl+OBr+OBl+OBquOBhOOBkeOCjOOBqeOA
gTwvZGl2Pg=="><br /></div><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+IyBUTDtEUjwvcD48cD48YnI+PC9wPjxwPi0gW3BhcnRpYWxfcmV2b2tlc10oaHR0cHM6Ly9k
ZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC4wL2VuL3NlcnZlci1zeXN0ZW0tdmFyaWFibGVzLmh0
bWwjc3lzdmFyX3BhcnRpYWxfcmV2b2tlcykg44GM5pyJ5Yq544Gq54q25oWL44Gg44GoIGBHUkFO
VCBBTEwgT04gJ2QlJy4qIFRPIC4uYCDjgb/jgZ/jgYTjgarjg4fjg7zjgr/jg5njg7zjgrnjg6/j
gqTjg6vjg4njgqvjg7zjg4njga7mp4vmlofjgYzlirnjgYvjgarjgYQ8L3A+PHA+PGJyPjwvcD48
cD5gYGA8L3A+PHA+SW4gcHJpdmlsZWdlIGFzc2lnbm1lbnRzLCBlbmFibGluZyBwYXJ0aWFsX3Jl
dm9rZXMgY2F1c2VzIE15U1FMIHRvIGludGVycHJldCBvY2N1cnJlbmNlcyBvZiB1bmVzY2FwZWQg
XyBhbmQgJSBTUUwgd2lsZGNhcmQgY2hhcmFjdGVycyBpbiBzY2hlbWEgbmFtZXMgYXMgbGl0ZXJh
bCBjaGFyYWN0ZXJzLCBqdXN0IGFzIGlmIHRoZXkgaGFkIGJlZW4gZXNjYXBlZCBhcyBcXyBhbmQg
XCUuIEJlY2F1c2UgdGhpcyBjaGFuZ2VzIGhvdyBNeVNRTCBpbnRlcnByZXRzIHByaXZpbGVnZXMs
IGl0IG1heSBiZSBhZHZpc2FibGUgdG8gYXZvaWQgdW5lc2NhcGVkIHdpbGRjYXJkIGNoYXJhY3Rl
cnMgaW4gcHJpdmlsZWdlIGFzc2lnbm1lbnRzIGZvciBpbnN0YWxsYXRpb25zIHdoZXJlIHBhcnRp
YWxfcmV2b2tlcyBtYXkgYmUgZW5hYmxlZC48L3A+PHA+PGJyPjwvcD48cD5JbiBhZGRpdGlvbiwg
dXNlIG9mIF8gYW5kICUgYXMgd2lsZGNhcmQgY2hhcmFjdGVycyBpbiBncmFudHMgaXMgZGVwcmVj
YXRlZCBhcyBvZiBNeVNRTCA4LjAuMzUsIGFuZCB5b3Ugc2hvdWxkIGV4cGVjdCBzdXBwb3J0IGZv
ciB0aGVtIHRvIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBNeVNRTC48L3A+PHA+
YGBgPC9wPjxwPjxicj48L3A+PHA+aHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4vOC4w
L2VuL3NlcnZlci1zeXN0ZW0tdmFyaWFibGVzLmh0bWwjc3lzdmFyX3BhcnRpYWxfcmV2b2tlczwv
cD48cD48YnI+PC9wPjxwPi0tLS08L3A+PHA+PGJyPjwvcD48cD7jg4njgq3jg6Xjg6Hjg7Pjg4jj
gavmm7jjgYTjgabjgYLjgovjgZPjgajjgYzlhajjgabjgaDjgZHjganjgIHnn6XjgonjgZrjgavm
mYLplpPjgpLmurbjgYvjgZfjgZ/jga7jgafjg6Hjg6LjgII8L3A+PHA+PGJyPjwvcD48cD5gYGA8
L3A+PHA+Q1JFQVRFIFVTRVIgeW9rdTA4MjU7PC9wPjxwPkdSQU5UIEFMTCBPTiBgZCVgLiogVE8g
eW9rdTA4MjU7Jm5ic3A7IC0tIOOCt+ODs+OCsOODq+OCr+OCqeODvOODiOOBp+OBquOBj+OBpuOD
kOODg+OCr+OCr+OCqeODvOODiDwvcD48cD48YnI+PC9wPjxwPm15c3FsODAgOSZndDsgU0hPVyBH
UkFOVFM7PC9wPjxwPistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSs8L3A+PHA+fCBHcmFudHMgZm9yIHlva3UwODI1QCUmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8L3A+PHA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48cD58IEdSQU5UIFVTQUdFIE9OICouKiBUTyBg
eW9rdTA4MjVgQGAlYCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3w8L3A+PHA+fCBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBgZCVgLiogVE8gYHlva3UwODI1
YEBgJWAgfDwvcD48cD4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rPC9wPjxwPjIgcm93cyBpbiBzZXQgKDAuMDAgc2VjKTwvcD48ZGl2Pjxicj48L2Rp
dj48ZGl2PjxkaXY+bXlzcWw4MCA5Jmd0OyBDUkVBVEUgREFUQUJBU0UgZDExOyZuYnNwOyAmbmJz
cDstLSBkJWAg44Gr44Oe44OD44OB44GZ44KL44GL44KJPC9kaXY+PGRpdj5RdWVyeSBPSywgMSBy
b3cgYWZmZWN0ZWQgKDAuMDAgc2VjKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bXlzcWw4MCA5
Jmd0OyBDUkVBVEUgREFUQUJBU0UgZDE1OyZuYnNwOyAmbmJzcDstLSBkJSDjgavjg57jg4Pjg4Hj
gZnjgovjgYvjgok8L2Rpdj48ZGl2PlF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3RlZCAoMC4wMSBzZWMp
PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PHA+bXlzcWw4MCA5Jmd0OyBDUkVBVEUgREFUQUJB
U0UgbmV3ZGI7Jm5ic3A7IC0tIGQlIOOBq+ODnuODg+ODgeOBl+OBquOBhOOBi+OCiTwvcD48cD5F
UlJPUiAxMDQ0ICg0MjAwMCk6IEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJ3lva3UwODI1J0AnJScg
dG8gZGF0YWJhc2UgJ25ld2RiJzwvcD48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PlNFVCBHTE9CQUwgcGFydGlhbF9yZXZva2VzID0gT047PC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IENSRUFURSBEQVRBQkFTRSBkMTc7
Jm5ic3A7ICZuYnNwOy0tIGQlIOOBjOaWh+Wtl+WIl+ODquODhuODqeODq+OBqOOBl+OBpuino+mH
iOOBleOCjOOCi+OBi+OCiTwvZGl2PjxkaXY+RVJST1IgMTA0NCAoNDIwMDApOiBBY2Nlc3MgZGVu
aWVkIGZvciB1c2VyICd5b2t1MDgyNSdAJyUnIHRvIGRhdGFiYXNlICdkMTcnPC9kaXY+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IERST1AgREFUQUJBU0UgZDEx
OyZuYnNwOyAtLSAhPzwvZGl2PjxkaXY+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMCBz
ZWMpPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODAgMTEmZ3Q7IENS
RUFURSBUQUJMRSBkMTUudDEgKG51bSBpbnQpOyZuYnNwOyAtLSAhPzwvZGl2PjxkaXY+UXVlcnkg
T0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMSBzZWMpPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PuOCguOBhumdnuaOqOWlqOOBoOOBi+OCieS4gOiyq+aAp+OBruOB
guOCi+aMmeWLleOBq+ebtOOBo+OBpuOBj+OCjOOCi+awl+OBr+OBl+OBquOBhOOBkeOCjOOBqeOA
gTwvZGl2Pg=="><br /></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-28574366848155294672024-01-23T18:40:00.008+09:002024-01-23T18:40:51.013+09:00mysql_ssl_rsa_setupがopensslコマンドを実行しているだけっぽいので見てみた<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/2857436684815529467"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<p style="margin: 0px 0px 1.2em !important;">実行してるのは以下。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">
cd $datadir
echo "basicConstraints=CA:TRUE" > cav3.ext
echo "basicConstraints=CA:FALSE" > certv3.ext
openssl version
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout ca-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_CA_Certificate -out ca-req.pem
openssl rsa -in ca-key.pem -out ca-key.pem
openssl x509 -sha256 -days 3650 -extfile cav3.ext -set_serial 1 -req -in ca-req.pem -signkey ca-key.pem -out ca.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_Server_Certificate -out server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -sha256 -days 3650 -extfile certv3.ext -set_serial 2 -req -in server-req.pem -CA ca.pem -CAkey ca-key.pem -out server-cert.pem
openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_Client_Certificate -out client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -sha256 -days 3650 -extfile certv3.ext -set_serial 3 -req -in client-req.pem -CA ca.pem -CAkey ca-key.pem -out client-cert.pem
openssl verify -CAfile ca.pem server-cert.pem client-cert.pem
openssl genrsa -out private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem
</code></pre><hr />
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/en/mysql-ssl-rsa-setup.html" target="_blank">mysql_ssl_rsa_setup</a> がなんか <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">openssl</code> コマンドをそのまま投げている気がしたので <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">strace</code> で雑に拾い上げてみた。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/client/mysql_ssl_rsa_setup.cc#L270-L271" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.36/client/mysql_ssl_rsa_setup.cc#L270-L271</a></p>
<p style="margin: 0px 0px 1.2em !important;">execveのやつだけ拾い上げてみる。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">[yoku0825@yoku0825-sandbox ~]$ strace -f -s 1000 -e execve /usr/mysql/8.0.36/bin/mysql_ssl_rsa_setup --datadir=/tmp/rsa 2>&1 1>/dev/null | grep openssl
[pid 346515] execve("/bin/sh", ["sh", "-c", "openssl version > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346516] execve("/usr/bin/openssl", ["openssl", "version"], 0x55eb7da66760 /* 45 vars */) = 0
[pid 346517] execve("/bin/sh", ["sh", "-c", "openssl req -newkey rsa:2048 -days 3650 -nodes -keyout ca-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_CA_Certificate -out ca-req.pem && openssl rsa -in ca-key.pem -out ca-key.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346518] execve("/usr/bin/openssl", ["openssl", "req", "-newkey", "rsa:2048", "-days", "3650", "-nodes", "-keyout", "ca-key.pem", "-subj", "/CN=MySQL_Server_8.0.36_Auto_Generated_CA_Certificate", "-out", "ca-req.pem"], 0x557bb10a9760 /* 45 vars */) = 0
[pid 346519] execve("/usr/bin/openssl", ["openssl", "rsa", "-in", "ca-key.pem", "-out", "ca-key.pem"], 0x557bb10ba9b0 /* 45 vars */) = 0
[pid 346520] execve("/bin/sh", ["sh", "-c", "openssl x509 -sha256 -days 3650 -extfile cav3.ext -set_serial 1 -req -in ca-req.pem -signkey ca-key.pem -out ca.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346521] execve("/usr/bin/openssl", ["openssl", "x509", "-sha256", "-days", "3650", "-extfile", "cav3.ext", "-set_serial", "1", "-req", "-in", "ca-req.pem", "-signkey", "ca-key.pem", "-out", "ca.pem"], 0x562d199db760 /* 45 vars */) = 0
[pid 346522] execve("/bin/sh", ["sh", "-c", "openssl req -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_Server_Certificate -out server-req.pem && openssl rsa -in server-key.pem -out server-key.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346523] execve("/usr/bin/openssl", ["openssl", "req", "-newkey", "rsa:2048", "-days", "3650", "-nodes", "-keyout", "server-key.pem", "-subj", "/CN=MySQL_Server_8.0.36_Auto_Generated_Server_Certificate", "-out", "server-req.pem"], 0x55882da28760 /* 45 vars */) = 0
[pid 346524] execve("/usr/bin/openssl", ["openssl", "rsa", "-in", "server-key.pem", "-out", "server-key.pem"], 0x55882da398d0 /* 45 vars */) = 0
[pid 346525] execve("/bin/sh", ["sh", "-c", "openssl x509 -sha256 -days 3650 -extfile certv3.ext -set_serial 2 -req -in server-req.pem -CA ca.pem -CAkey ca-key.pem -out server-cert.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346526] execve("/usr/bin/openssl", ["openssl", "x509", "-sha256", "-days", "3650", "-extfile", "certv3.ext", "-set_serial", "2", "-req", "-in", "server-req.pem", "-CA", "ca.pem", "-CAkey", "ca-key.pem", "-out", "server-cert.pem"], 0x5577023de760 /* 45 vars */) = 0
[pid 346527] execve("/bin/sh", ["sh", "-c", "openssl req -newkey rsa:2048 -days 3650 -nodes -keyout client-key.pem -subj /CN=MySQL_Server_8.0.36_Auto_Generated_Client_Certificate -out client-req.pem && openssl rsa -in client-key.pem -out client-key.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346528] execve("/usr/bin/openssl", ["openssl", "req", "-newkey", "rsa:2048", "-days", "3650", "-nodes", "-keyout", "client-key.pem", "-subj", "/CN=MySQL_Server_8.0.36_Auto_Generated_Client_Certificate", "-out", "client-req.pem"], 0x56301ba4e760 /* 45 vars */) = 0
[pid 346529] execve("/usr/bin/openssl", ["openssl", "rsa", "-in", "client-key.pem", "-out", "client-key.pem"], 0x56301ba5f8d0 /* 45 vars */) = 0
[pid 346530] execve("/bin/sh", ["sh", "-c", "openssl x509 -sha256 -days 3650 -extfile certv3.ext -set_serial 3 -req -in client-req.pem -CA ca.pem -CAkey ca-key.pem -out client-cert.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346531] execve("/usr/bin/openssl", ["openssl", "x509", "-sha256", "-days", "3650", "-extfile", "certv3.ext", "-set_serial", "3", "-req", "-in", "client-req.pem", "-CA", "ca.pem", "-CAkey", "ca-key.pem", "-out", "client-cert.pem"], 0x5562dd1f4760 /* 45 vars */) = 0
[pid 346532] execve("/bin/sh", ["sh", "-c", "openssl verify -CAfile ca.pem server-cert.pem client-cert.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346533] execve("/usr/bin/openssl", ["openssl", "verify", "-CAfile", "ca.pem", "server-cert.pem", "client-cert.pem"], 0x562abf4f7760 /* 45 vars */) = 0
[pid 346534] execve("/bin/sh", ["sh", "-c", "openssl genrsa -out private_key.pem 2048 > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346535] execve("/usr/bin/openssl", ["openssl", "genrsa", "-out", "private_key.pem", "2048"], 0x55ed169cb760 /* 45 vars */) = 0
[pid 346536] execve("/bin/sh", ["sh", "-c", "openssl rsa -in private_key.pem -pubout -out public_key.pem > /dev/null 2>&1"], 0x7fffd3ff2930 /* 46 vars */) = 0
[pid 346537] execve("/usr/bin/openssl", ["openssl", "rsa", "-in", "private_key.pem", "-pubout", "-out", "public_key.pem"], 0x5593c3a5e760 /* 45 vars */) = 0
</code></pre><p style="margin: 0px 0px 1.2em !important;">ここからコマンドだけを引っこ抜いた ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">&&</code> の部分は成功したから <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">openssl</code> が引数の方の <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">execve</code> に載っていたのでリストしてある ) のが冒頭のテキスト。<br /><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">echo</code> コマンドまでは使っていなかったけど、このファイルが無いと当然 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">-extfile</code> の指定で転けるので平文だしechoで作ってみた。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.36/client/mysql_ssl_rsa_setup.cc#L317-L321" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.36/client/mysql_ssl_rsa_setup.cc#L317-L321</a></p>
<p style="margin: 0px 0px 1.2em !important;">流石に <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">mysqld</code> の <a href="https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_auto_generate_certs" target="_blank">auto_generate_certs</a> の方はここまで雑な作りではなかった。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/824e2b4064053f7daf17d7f3f84b7a3ed92e5fb4/sql/auth/sql_authentication.cc#L5912-L5990" target="_blank">https://github.com/mysql/mysql-server/blob/824e2b4064053f7daf17d7f3f84b7a3ed92e5fb4/sql/auth/sql_authentication.cc#L5912-L5990</a></p>
<p style="margin: 0px 0px 1.2em !important;">ちなみに <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">mysql_ssl_rsa_setup</code> は8.0.34で非推奨だそうです。<br /><a href="https://dev.mysql.com/doc/refman/8.0/en/mysql-ssl-rsa-setup.html" target="_blank">https://dev.mysql.com/doc/refman/8.0/en/mysql-ssl-rsa-setup.html</a></p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+I1RMO0RSPC9wPjxwPjxicj48L3A+PHA+5a6f6KGM44GX44Gm44KL44Gu44Gv5Lul5LiL44CC
PC9wPjxwPiZuYnNwOzwvcD48cD5gYGA8L3A+PHA+Y2QgJGRhdGFkaXI8L3A+PHA+ZWNobyAiYmFz
aWNDb25zdHJhaW50cz1DQTpUUlVFIiAmZ3Q7IGNhdjMuZXh0PC9wPjxwPmVjaG8gImJhc2ljQ29u
c3RyYWludHM9Q0E6RkFMU0UiICZndDsgY2VydHYzLmV4dDwvcD48ZGl2Pjxicj48L2Rpdj48ZGl2
PjxkaXY+b3BlbnNzbCB2ZXJzaW9uPC9kaXY+PGRpdj5vcGVuc3NsIHJlcSAtbmV3a2V5IHJzYToy
MDQ4IC1kYXlzIDM2NTAgLW5vZGVzIC1rZXlvdXQgY2Eta2V5LnBlbSAtc3ViaiAvQ049TXlTUUxf
U2VydmVyXzguMC4zNl9BdXRvX0dlbmVyYXRlZF9DQV9DZXJ0aWZpY2F0ZSAtb3V0IGNhLXJlcS5w
ZW08L2Rpdj48ZGl2Pm9wZW5zc2wgcnNhIC1pbiBjYS1rZXkucGVtIC1vdXQgY2Eta2V5LnBlbTwv
ZGl2PjxkaXY+b3BlbnNzbCB4NTA5IC1zaGEyNTYgLWRheXMgMzY1MCAtZXh0ZmlsZSBjYXYzLmV4
dCAtc2V0X3NlcmlhbCAxIC1yZXEgLWluIGNhLXJlcS5wZW0gLXNpZ25rZXkgY2Eta2V5LnBlbSAt
b3V0IGNhLnBlbTwvZGl2PjxkaXY+b3BlbnNzbCByZXEgLW5ld2tleSByc2E6MjA0OCAtZGF5cyAz
NjUwIC1ub2RlcyAta2V5b3V0IHNlcnZlci1rZXkucGVtIC1zdWJqIC9DTj1NeVNRTF9TZXJ2ZXJf
OC4wLjM2X0F1dG9fR2VuZXJhdGVkX1NlcnZlcl9DZXJ0aWZpY2F0ZSAtb3V0IHNlcnZlci1yZXEu
cGVtPC9kaXY+PGRpdj5vcGVuc3NsIHJzYSAtaW4gc2VydmVyLWtleS5wZW0gLW91dCBzZXJ2ZXIt
a2V5LnBlbTwvZGl2PjxkaXY+b3BlbnNzbCB4NTA5IC1zaGEyNTYgLWRheXMgMzY1MCAtZXh0Zmls
ZSBjZXJ0djMuZXh0IC1zZXRfc2VyaWFsIDIgLXJlcSAtaW4gc2VydmVyLXJlcS5wZW0gLUNBIGNh
LnBlbSAtQ0FrZXkgY2Eta2V5LnBlbSAtb3V0IHNlcnZlci1jZXJ0LnBlbTwvZGl2PjxkaXY+b3Bl
bnNzbCByZXEgLW5ld2tleSByc2E6MjA0OCAtZGF5cyAzNjUwIC1ub2RlcyAta2V5b3V0IGNsaWVu
dC1rZXkucGVtIC1zdWJqIC9DTj1NeVNRTF9TZXJ2ZXJfOC4wLjM2X0F1dG9fR2VuZXJhdGVkX0Ns
aWVudF9DZXJ0aWZpY2F0ZSAtb3V0IGNsaWVudC1yZXEucGVtPC9kaXY+PGRpdj5vcGVuc3NsIHJz
YSAtaW4gY2xpZW50LWtleS5wZW0gLW91dCBjbGllbnQta2V5LnBlbTwvZGl2PjxkaXY+b3BlbnNz
bCB4NTA5IC1zaGEyNTYgLWRheXMgMzY1MCAtZXh0ZmlsZSBjZXJ0djMuZXh0IC1zZXRfc2VyaWFs
IDMgLXJlcSAtaW4gY2xpZW50LXJlcS5wZW0gLUNBIGNhLnBlbSAtQ0FrZXkgY2Eta2V5LnBlbSAt
b3V0IGNsaWVudC1jZXJ0LnBlbTwvZGl2PjxkaXY+b3BlbnNzbCB2ZXJpZnkgLUNBZmlsZSBjYS5w
ZW0gc2VydmVyLWNlcnQucGVtIGNsaWVudC1jZXJ0LnBlbTwvZGl2PjxkaXY+b3BlbnNzbCBnZW5y
c2EgLW91dCBwcml2YXRlX2tleS5wZW0gMjA0ODwvZGl2PjxkaXY+b3BlbnNzbCByc2EgLWluIHBy
aXZhdGVfa2V5LnBlbSAtcHVib3V0IC1vdXQgcHVibGljX2tleS5wZW08L2Rpdj48L2Rpdj48ZGl2
PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+LS0tLTwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+W215c3FsX3NzbF9yc2Ffc2V0dXBdKGh0dHBzOi8vZGV2Lm15c3Fs
LmNvbS9kb2MvcmVmbWFuLzguMC9lbi9teXNxbC1zc2wtcnNhLXNldHVwLmh0bWwpIOOBjOOBquOC
k+OBiyBgb3BlbnNzbGAg44Kz44Oe44Oz44OJ44KS44Gd44Gu44G+44G+5oqV44GS44Gm44GE44KL
5rCX44GM44GX44Gf44Gu44GnIGBzdHJhY2VgIOOBp+mbkeOBq+aLvuOBhOS4iuOBkuOBpuOBv+OB
n+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+aHR0cHM6Ly9naXRodWIuY29tL215c3FsL215
c3FsLXNlcnZlci9ibG9iL215c3FsLTguMC4zNi9jbGllbnQvbXlzcWxfc3NsX3JzYV9zZXR1cC5j
YyNMMjcwLUwyNzE8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmV4ZWN2ZeOBruOChOOBpOOBoOOB
keaLvuOBhOS4iuOBkuOBpuOBv+OCi+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9k
aXY+PGRpdj48ZGl2Plt5b2t1MDgyNUB5b2t1MDgyNS1zYW5kYm94IH5dJCBzdHJhY2UgLWYgLXMg
MTAwMCAtZSBleGVjdmUgL3Vzci9teXNxbC84LjAuMzYvYmluL215c3FsX3NzbF9yc2Ffc2V0dXAg
LS1kYXRhZGlyPS90bXAvcnNhIDImZ3Q7JmFtcDsxIDEmZ3Q7L2Rldi9udWxsIHwgZ3JlcCBvcGVu
c3NsPC9kaXY+PGRpdj5bcGlkIDM0NjUxNV0gZXhlY3ZlKCIvYmluL3NoIiwgWyJzaCIsICItYyIs
ICJvcGVuc3NsIHZlcnNpb24gJmd0OyAvZGV2L251bGwgMiZndDsmYW1wOzEiXSwgMHg3ZmZmZDNm
ZjI5MzAgLyogNDYgdmFycyAqLykgPSAwPC9kaXY+PGRpdj5bcGlkIDM0NjUxNl0gZXhlY3ZlKCIv
dXNyL2Jpbi9vcGVuc3NsIiwgWyJvcGVuc3NsIiwgInZlcnNpb24iXSwgMHg1NWViN2RhNjY3NjAg
LyogNDUgdmFycyAqLykgPSAwPC9kaXY+PGRpdj5bcGlkIDM0NjUxN10gZXhlY3ZlKCIvYmluL3No
IiwgWyJzaCIsICItYyIsICJvcGVuc3NsIHJlcSAtbmV3a2V5IHJzYToyMDQ4IC1kYXlzIDM2NTAg
LW5vZGVzIC1rZXlvdXQgY2Eta2V5LnBlbSAtc3ViaiAvQ049TXlTUUxfU2VydmVyXzguMC4zNl9B
dXRvX0dlbmVyYXRlZF9DQV9DZXJ0aWZpY2F0ZSAtb3V0IGNhLXJlcS5wZW0gJmFtcDsmYW1wOyBv
cGVuc3NsIHJzYSAtaW4gY2Eta2V5LnBlbSAtb3V0IGNhLWtleS5wZW0gJmd0OyAvZGV2L251bGwg
MiZndDsmYW1wOzEiXSwgMHg3ZmZmZDNmZjI5MzAgLyogNDYgdmFycyAqLykgPSAwPC9kaXY+PGRp
dj5bcGlkIDM0NjUxOF0gZXhlY3ZlKCIvdXNyL2Jpbi9vcGVuc3NsIiwgWyJvcGVuc3NsIiwgInJl
cSIsICItbmV3a2V5IiwgInJzYToyMDQ4IiwgIi1kYXlzIiwgIjM2NTAiLCAiLW5vZGVzIiwgIi1r
ZXlvdXQiLCAiY2Eta2V5LnBlbSIsICItc3ViaiIsICIvQ049TXlTUUxfU2VydmVyXzguMC4zNl9B
dXRvX0dlbmVyYXRlZF9DQV9DZXJ0aWZpY2F0ZSIsICItb3V0IiwgImNhLXJlcS5wZW0iXSwgMHg1
NTdiYjEwYTk3NjAgLyogNDUgdmFycyAqLykgPSAwPC9kaXY+PGRpdj5bcGlkIDM0NjUxOV0gZXhl
Y3ZlKCIvdXNyL2Jpbi9vcGVuc3NsIiwgWyJvcGVuc3NsIiwgInJzYSIsICItaW4iLCAiY2Eta2V5
LnBlbSIsICItb3V0IiwgImNhLWtleS5wZW0iXSwgMHg1NTdiYjEwYmE5YjAgLyogNDUgdmFycyAq
LykgPSAwPC9kaXY+PGRpdj5bcGlkIDM0NjUyMF0gZXhlY3ZlKCIvYmluL3NoIiwgWyJzaCIsICIt
YyIsICJvcGVuc3NsIHg1MDkgLXNoYTI1NiAtZGF5cyAzNjUwIC1leHRmaWxlIGNhdjMuZXh0IC1z
ZXRfc2VyaWFsIDEgLXJlcSAtaW4gY2EtcmVxLnBlbSAtc2lnbmtleSBjYS1rZXkucGVtIC1vdXQg
Y2EucGVtICZndDsgL2Rldi9udWxsIDImZ3Q7JmFtcDsxIl0sIDB4N2ZmZmQzZmYyOTMwIC8qIDQ2
IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1MjFdIGV4ZWN2ZSgiL3Vzci9iaW4vb3Bl
bnNzbCIsIFsib3BlbnNzbCIsICJ4NTA5IiwgIi1zaGEyNTYiLCAiLWRheXMiLCAiMzY1MCIsICIt
ZXh0ZmlsZSIsICJjYXYzLmV4dCIsICItc2V0X3NlcmlhbCIsICIxIiwgIi1yZXEiLCAiLWluIiwg
ImNhLXJlcS5wZW0iLCAiLXNpZ25rZXkiLCAiY2Eta2V5LnBlbSIsICItb3V0IiwgImNhLnBlbSJd
LCAweDU2MmQxOTlkYjc2MCAvKiA0NSB2YXJzICovKSA9IDA8L2Rpdj48ZGl2PltwaWQgMzQ2NTIy
XSBleGVjdmUoIi9iaW4vc2giLCBbInNoIiwgIi1jIiwgIm9wZW5zc2wgcmVxIC1uZXdrZXkgcnNh
OjIwNDggLWRheXMgMzY1MCAtbm9kZXMgLWtleW91dCBzZXJ2ZXIta2V5LnBlbSAtc3ViaiAvQ049
TXlTUUxfU2VydmVyXzguMC4zNl9BdXRvX0dlbmVyYXRlZF9TZXJ2ZXJfQ2VydGlmaWNhdGUgLW91
dCBzZXJ2ZXItcmVxLnBlbSAmYW1wOyZhbXA7IG9wZW5zc2wgcnNhIC1pbiBzZXJ2ZXIta2V5LnBl
bSAtb3V0IHNlcnZlci1rZXkucGVtICZndDsgL2Rldi9udWxsIDImZ3Q7JmFtcDsxIl0sIDB4N2Zm
ZmQzZmYyOTMwIC8qIDQ2IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1MjNdIGV4ZWN2
ZSgiL3Vzci9iaW4vb3BlbnNzbCIsIFsib3BlbnNzbCIsICJyZXEiLCAiLW5ld2tleSIsICJyc2E6
MjA0OCIsICItZGF5cyIsICIzNjUwIiwgIi1ub2RlcyIsICIta2V5b3V0IiwgInNlcnZlci1rZXku
cGVtIiwgIi1zdWJqIiwgIi9DTj1NeVNRTF9TZXJ2ZXJfOC4wLjM2X0F1dG9fR2VuZXJhdGVkX1Nl
cnZlcl9DZXJ0aWZpY2F0ZSIsICItb3V0IiwgInNlcnZlci1yZXEucGVtIl0sIDB4NTU4ODJkYTI4
NzYwIC8qIDQ1IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1MjRdIGV4ZWN2ZSgiL3Vz
ci9iaW4vb3BlbnNzbCIsIFsib3BlbnNzbCIsICJyc2EiLCAiLWluIiwgInNlcnZlci1rZXkucGVt
IiwgIi1vdXQiLCAic2VydmVyLWtleS5wZW0iXSwgMHg1NTg4MmRhMzk4ZDAgLyogNDUgdmFycyAq
LykgPSAwPC9kaXY+PGRpdj5bcGlkIDM0NjUyNV0gZXhlY3ZlKCIvYmluL3NoIiwgWyJzaCIsICIt
YyIsICJvcGVuc3NsIHg1MDkgLXNoYTI1NiAtZGF5cyAzNjUwIC1leHRmaWxlIGNlcnR2My5leHQg
LXNldF9zZXJpYWwgMiAtcmVxIC1pbiBzZXJ2ZXItcmVxLnBlbSAtQ0EgY2EucGVtIC1DQWtleSBj
YS1rZXkucGVtIC1vdXQgc2VydmVyLWNlcnQucGVtICZndDsgL2Rldi9udWxsIDImZ3Q7JmFtcDsx
Il0sIDB4N2ZmZmQzZmYyOTMwIC8qIDQ2IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1
MjZdIGV4ZWN2ZSgiL3Vzci9iaW4vb3BlbnNzbCIsIFsib3BlbnNzbCIsICJ4NTA5IiwgIi1zaGEy
NTYiLCAiLWRheXMiLCAiMzY1MCIsICItZXh0ZmlsZSIsICJjZXJ0djMuZXh0IiwgIi1zZXRfc2Vy
aWFsIiwgIjIiLCAiLXJlcSIsICItaW4iLCAic2VydmVyLXJlcS5wZW0iLCAiLUNBIiwgImNhLnBl
bSIsICItQ0FrZXkiLCAiY2Eta2V5LnBlbSIsICItb3V0IiwgInNlcnZlci1jZXJ0LnBlbSJdLCAw
eDU1NzcwMjNkZTc2MCAvKiA0NSB2YXJzICovKSA9IDA8L2Rpdj48ZGl2PltwaWQgMzQ2NTI3XSBl
eGVjdmUoIi9iaW4vc2giLCBbInNoIiwgIi1jIiwgIm9wZW5zc2wgcmVxIC1uZXdrZXkgcnNhOjIw
NDggLWRheXMgMzY1MCAtbm9kZXMgLWtleW91dCBjbGllbnQta2V5LnBlbSAtc3ViaiAvQ049TXlT
UUxfU2VydmVyXzguMC4zNl9BdXRvX0dlbmVyYXRlZF9DbGllbnRfQ2VydGlmaWNhdGUgLW91dCBj
bGllbnQtcmVxLnBlbSAmYW1wOyZhbXA7IG9wZW5zc2wgcnNhIC1pbiBjbGllbnQta2V5LnBlbSAt
b3V0IGNsaWVudC1rZXkucGVtICZndDsgL2Rldi9udWxsIDImZ3Q7JmFtcDsxIl0sIDB4N2ZmZmQz
ZmYyOTMwIC8qIDQ2IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1MjhdIGV4ZWN2ZSgi
L3Vzci9iaW4vb3BlbnNzbCIsIFsib3BlbnNzbCIsICJyZXEiLCAiLW5ld2tleSIsICJyc2E6MjA0
OCIsICItZGF5cyIsICIzNjUwIiwgIi1ub2RlcyIsICIta2V5b3V0IiwgImNsaWVudC1rZXkucGVt
IiwgIi1zdWJqIiwgIi9DTj1NeVNRTF9TZXJ2ZXJfOC4wLjM2X0F1dG9fR2VuZXJhdGVkX0NsaWVu
dF9DZXJ0aWZpY2F0ZSIsICItb3V0IiwgImNsaWVudC1yZXEucGVtIl0sIDB4NTYzMDFiYTRlNzYw
IC8qIDQ1IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1MjldIGV4ZWN2ZSgiL3Vzci9i
aW4vb3BlbnNzbCIsIFsib3BlbnNzbCIsICJyc2EiLCAiLWluIiwgImNsaWVudC1rZXkucGVtIiwg
Ii1vdXQiLCAiY2xpZW50LWtleS5wZW0iXSwgMHg1NjMwMWJhNWY4ZDAgLyogNDUgdmFycyAqLykg
PSAwPC9kaXY+PGRpdj5bcGlkIDM0NjUzMF0gZXhlY3ZlKCIvYmluL3NoIiwgWyJzaCIsICItYyIs
ICJvcGVuc3NsIHg1MDkgLXNoYTI1NiAtZGF5cyAzNjUwIC1leHRmaWxlIGNlcnR2My5leHQgLXNl
dF9zZXJpYWwgMyAtcmVxIC1pbiBjbGllbnQtcmVxLnBlbSAtQ0EgY2EucGVtIC1DQWtleSBjYS1r
ZXkucGVtIC1vdXQgY2xpZW50LWNlcnQucGVtICZndDsgL2Rldi9udWxsIDImZ3Q7JmFtcDsxIl0s
IDB4N2ZmZmQzZmYyOTMwIC8qIDQ2IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1MzFd
IGV4ZWN2ZSgiL3Vzci9iaW4vb3BlbnNzbCIsIFsib3BlbnNzbCIsICJ4NTA5IiwgIi1zaGEyNTYi
LCAiLWRheXMiLCAiMzY1MCIsICItZXh0ZmlsZSIsICJjZXJ0djMuZXh0IiwgIi1zZXRfc2VyaWFs
IiwgIjMiLCAiLXJlcSIsICItaW4iLCAiY2xpZW50LXJlcS5wZW0iLCAiLUNBIiwgImNhLnBlbSIs
ICItQ0FrZXkiLCAiY2Eta2V5LnBlbSIsICItb3V0IiwgImNsaWVudC1jZXJ0LnBlbSJdLCAweDU1
NjJkZDFmNDc2MCAvKiA0NSB2YXJzICovKSA9IDA8L2Rpdj48ZGl2PltwaWQgMzQ2NTMyXSBleGVj
dmUoIi9iaW4vc2giLCBbInNoIiwgIi1jIiwgIm9wZW5zc2wgdmVyaWZ5IC1DQWZpbGUgY2EucGVt
IHNlcnZlci1jZXJ0LnBlbSBjbGllbnQtY2VydC5wZW0gJmd0OyAvZGV2L251bGwgMiZndDsmYW1w
OzEiXSwgMHg3ZmZmZDNmZjI5MzAgLyogNDYgdmFycyAqLykgPSAwPC9kaXY+PGRpdj5bcGlkIDM0
NjUzM10gZXhlY3ZlKCIvdXNyL2Jpbi9vcGVuc3NsIiwgWyJvcGVuc3NsIiwgInZlcmlmeSIsICIt
Q0FmaWxlIiwgImNhLnBlbSIsICJzZXJ2ZXItY2VydC5wZW0iLCAiY2xpZW50LWNlcnQucGVtIl0s
IDB4NTYyYWJmNGY3NzYwIC8qIDQ1IHZhcnMgKi8pID0gMDwvZGl2PjxkaXY+W3BpZCAzNDY1MzRd
IGV4ZWN2ZSgiL2Jpbi9zaCIsIFsic2giLCAiLWMiLCAib3BlbnNzbCBnZW5yc2EmbmJzcDsgLW91
dCBwcml2YXRlX2tleS5wZW0gMjA0OCAmZ3Q7IC9kZXYvbnVsbCAyJmd0OyZhbXA7MSJdLCAweDdm
ZmZkM2ZmMjkzMCAvKiA0NiB2YXJzICovKSA9IDA8L2Rpdj48ZGl2PltwaWQgMzQ2NTM1XSBleGVj
dmUoIi91c3IvYmluL29wZW5zc2wiLCBbIm9wZW5zc2wiLCAiZ2VucnNhIiwgIi1vdXQiLCAicHJp
dmF0ZV9rZXkucGVtIiwgIjIwNDgiXSwgMHg1NWVkMTY5Y2I3NjAgLyogNDUgdmFycyAqLykgPSAw
PC9kaXY+PGRpdj5bcGlkIDM0NjUzNl0gZXhlY3ZlKCIvYmluL3NoIiwgWyJzaCIsICItYyIsICJv
cGVuc3NsIHJzYSAtaW4gcHJpdmF0ZV9rZXkucGVtIC1wdWJvdXQgLW91dCBwdWJsaWNfa2V5LnBl
bSAmZ3Q7IC9kZXYvbnVsbCAyJmd0OyZhbXA7MSJdLCAweDdmZmZkM2ZmMjkzMCAvKiA0NiB2YXJz
ICovKSA9IDA8L2Rpdj48ZGl2PltwaWQgMzQ2NTM3XSBleGVjdmUoIi91c3IvYmluL29wZW5zc2wi
LCBbIm9wZW5zc2wiLCAicnNhIiwgIi1pbiIsICJwcml2YXRlX2tleS5wZW0iLCAiLXB1Ym91dCIs
ICItb3V0IiwgInB1YmxpY19rZXkucGVtIl0sIDB4NTU5M2MzYTVlNzYwIC8qIDQ1IHZhcnMgKi8p
ID0gMDwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgZPjgZPj
gYvjgonjgrPjg57jg7Pjg4njgaDjgZHjgpLlvJXjgaPjgZPmipzjgYTjgZ8gKCBgJmFtcDsmYW1w
O2Ag44Gu6YOo5YiG44Gv5oiQ5Yqf44GX44Gf44GL44KJIGBvcGVuc3NsYCDjgYzlvJXmlbDjga7m
lrnjga4gYGV4ZWN2ZWAg44Gr6LyJ44Gj44Gm44GE44Gf44Gu44Gn44Oq44K544OI44GX44Gm44GC
44KLICkg44Gu44GM5YaS6aCt44Gu44OG44Kt44K544OI44CCPC9kaXY+PGRpdj5gZWNob2Ag44Kz
44Oe44Oz44OJ44G+44Gn44Gv5L2/44Gj44Gm44GE44Gq44GL44Gj44Gf44GR44Gp44CB44GT44Gu
44OV44Kh44Kk44Or44GM54Sh44GE44Go5b2T54S2IGAtZXh0ZmlsZWAg44Gu5oyH5a6a44Gn6Lui
44GR44KL44Gu44Gn5bmz5paH44Gg44GXZWNob+OBp+S9nOOBo+OBpuOBv+OBn+OAgjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+aHR0cHM6Ly9naXRodWIuY29tL215c3FsL215c3FsLXNlcnZlci9i
bG9iL215c3FsLTguMC4zNi9jbGllbnQvbXlzcWxfc3NsX3JzYV9zZXR1cC5jYyNMMzE3LUwzMjE8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pua1geefs+OBqyBgbXlzcWxk
YCDjga4gW2F1dG9fZ2VuZXJhdGVfY2VydHNdKGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVm
bWFuLzguMC9lbi9zZXJ2ZXItc3lzdGVtLXZhcmlhYmxlcy5odG1sI3N5c3Zhcl9hdXRvX2dlbmVy
YXRlX2NlcnRzKSDjga7mlrnjga/jgZPjgZPjgb7jgafpm5HjgarkvZzjgorjgafjga/jgarjgYvj
gaPjgZ/jgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pmh0dHBzOi8vZ2l0aHViLmNvbS9teXNx
bC9teXNxbC1zZXJ2ZXIvYmxvYi84MjRlMmI0MDY0MDUzZjdkYWYxN2Q3ZjNmODRiN2EzZWQ5MmU1
ZmI0L3NxbC9hdXRoL3NxbF9hdXRoZW50aWNhdGlvbi5jYyNMNTkxMi1MNTk5MDwvZGl2PjxkaXY+
PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44Gh44Gq44G/44GrIGBteXNxbF9zc2xfcnNh
X3NldHVwYCDjga84LjAuMzTjgafpnZ7mjqjlpajjgaDjgZ3jgYbjgafjgZnjgII8L2Rpdj48ZGl2
Pmh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzguMC9lbi9teXNxbC1zc2wtcnNhLXNl
dHVwLmh0bWw8L2Rpdj4="></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-7919000573104420012024-01-20T23:38:00.007+09:002024-01-20T23:38:46.106+09:00keyring_fileを消したり戻したりしながら確かめてみる<p>ただ思いついたことを順番に実行したメモ。</p><p><br /></p><div>1. keyring_fileを食った状態でt1を作る。</div><div><br /></div><div>2. keyring_fileをコピーして消す</div><div><br /></div><div>3. t2を作る -> エラーログなし</div><div><br /></div><div>4. mysqldを停止してkeyring_fileを戻す</div><div><br /></div><div>5. mysqldを起動する</div><div><br /></div><div>6. t1もt2も読める</div><div><br /></div><div>7. keyring_fileをコピーして消してmysqld再起動</div><div><br /></div><div>8. t1, t2は読めない -> 起動時のエラーログに出る</div><div><br /></div><div>9. t3を作る</div><div><br /></div><div>10. mysqld再起動</div><div><br /></div><div>11. t3を作った時点でkeyring_fileが変わっているのでt1, t2は読めない、t3だけが読める状態</div><div><br /></div><div><br /></div><div>```</div><div><div>2024-01-20T14:29:22.972253Z 1 [ERROR] [MY-012664] [InnoDB] Failed to decrypt encryption information, please check whether key file has been changed!</div><div>2024-01-20T14:29:22.972297Z 1 [ERROR] [MY-012226] [InnoDB] Encryption information in datafile: ./d1/t1.ibd can't be decrypted, please confirm that keyring is loaded.</div><div>2024-01-20T14:29:22.972780Z 1 [ERROR] [MY-012664] [InnoDB] Failed to decrypt encryption information, please check whether key file has been changed!</div><div>2024-01-20T14:29:22.972795Z 1 [ERROR] [MY-012226] [InnoDB] Encryption information in datafile: ./d1/t2.ibd can't be decrypted, please confirm that keyring is loaded.</div></div><div>```</div><div><br /></div><div>12. mysqldを止めてt3を作ったkeyring_fileを消してt2までの時点のkeyring_fileを戻して起動</div><div><br /></div><div>13. t1, t2は読めるけどt3が読めない状態で起動</div><div><br /></div><div>14. t3のことは忘れて、keyring_fileをコピーして消してmysqld再起動 -> 当然t1, t2が読めない状態で起動</div><div><br /></div><div>15. keyring_fileを戻してt4を作る</div><div><br /></div><div>16. mysqld再起動</div><div><br /></div><div>17. t1, t2は読めない、t4だけが読める</div><div><br /></div><div><br /></div><div><br /></div><div>keyring_fileを食わせて起動したらさっさと消してしまってマスターキーのローテーションの時だけ戻せば…とか雑なことを考えたけど、その間に暗号化テーブルを作られたら簡単に詰む</div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-79616500232258918662024-01-20T15:12:00.005+09:002024-01-20T15:12:41.147+09:00xtrabackup + InnoDB TDE / keyring_file_dataで--prepareと--move-back 続き<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/7961650023225891866"><p style="margin: 0px 0px 1.2em !important;"> <a href="https://yoku0825.blogspot.com/2024/01/xtrabackup-innodb-tde-keyringfiledata.html" target="_blank">日々の覚書: xtrabackup + InnoDB TDE / keyring_file_dataで--prepareと--move-back</a> の続き</p>
<p style="margin: 0px 0px 1.2em !important;">keyring_file_dataを真面目に与えなくても何故か —prepare できてしまったのが謎だったので書き込みながら。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ for n in {101..10000} ; do
> sudo mysql -e "INSERT INTO d1.t1 VALUES ($n)"
> done
</code></pre><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ sudo xtrabackup --backup -uroot --stream=xbstream | pzstd -dc > test.xb.zst
2024-01-20T05:23:28.912847-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql
2024-01-20T05:23:28.913000-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --backup=1 --user=root --stream=xbstream
xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
..
$ mkdir backup_with_running
$ cd backup_with_running
$ pzstd -dc ../test.xb.zst | xbstream -x
$ xtrabackup --prepare --target-dir=./ --keyring-file-data=/tmp/dummy2
2024-01-20T05:27:26.978005-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_log_checksums=1 --innodb_data_file_path=ibdata1:12M:autoextend --innodb_log_file_size=50331648 --innodb_page_size=16384 --innodb_undo_directory=./ --innodb_undo_tablespaces=2 --server-id=0 --innodb_log_checksums=ON --innodb_redo_log_encrypt=0 --innodb_undo_log_encrypt=0
2024-01-20T05:27:26.978103-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --prepare=1 --target-dir=./ --keyring-file-data=/tmp/dummy2
xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
..
2024-01-20T05:27:27.080448-00:00 0 [Note] [MY-012552] [InnoDB] Starting crash recovery.
2024-01-20T05:27:27.080686-00:00 0 [Note] [MY-013086] [InnoDB] Starting to parse redo log at lsn = 20334092, whereas checkpoint_lsn = 20334355 and start_lsn = 20334080
2024-01-20T05:27:27.083746-00:00 0 [Note] [MY-012550] [InnoDB] Doing recovery: scanned up to log sequence number 20923858
2024-01-20T05:27:27.143189-00:00 0 [Note] [MY-013083] [InnoDB] Log background threads are being started...
2024-01-20T05:27:27.192664-00:00 0 [Note] [MY-012532] [InnoDB] Applying a batch of 302 redo log records ...
2024-01-20T05:27:27.193694-00:00 0 [Note] [MY-012533] [InnoDB] 10%
2024-01-20T05:27:27.194170-00:00 0 [Note] [MY-012533] [InnoDB] 20%
2024-01-20T05:27:27.194838-00:00 0 [Note] [MY-012533] [InnoDB] 30%
2024-01-20T05:27:27.194982-00:00 0 [Note] [MY-012533] [InnoDB] 40%
2024-01-20T05:27:27.195690-00:00 0 [Note] [MY-012533] [InnoDB] 50%
2024-01-20T05:27:27.196225-00:00 0 [Note] [MY-012533] [InnoDB] 60%
2024-01-20T05:27:27.196386-00:00 0 [Note] [MY-012533] [InnoDB] 70%
2024-01-20T05:27:27.196937-00:00 0 [Note] [MY-012533] [InnoDB] 80%
2024-01-20T05:27:27.197047-00:00 0 [Note] [MY-012533] [InnoDB] 90%
2024-01-20T05:27:27.198439-00:00 0 [Note] [MY-011825] [InnoDB] Encryption information in datafile: ./d1/t1.ibd can't be decrypted, please confirm that keyring is loaded.
2024-01-20T05:27:27.198468-00:00 0 [ERROR] [MY-011825] [Xtrabackup] Invalid encryption metadata in tablespace header.
2024-01-20T05:27:27.198477-00:00 0 [ERROR] [MY-011825] [Xtrabackup] Unable to decrypt. Please check if xtrabackup is configured correctly to access the keyring plugin or component. Check --xtrabackup-plugin-dir. Also verify if valid keyring_file_data is passed with the option --keyring_file_data. If keyring component is used, check if --component-keyring-config points to valid configuration
</code></pre><p style="margin: 0px 0px 1.2em !important;">ちゃんと転けた。やっぱり暗号対象テーブルスペースがクラッシュリカバリ対象にならない限りは復号化が必要ないから <a href="https://yoku0825.blogspot.com/2024/01/xtrabackup-innodb-tde-keyringfiledata.html">前回</a> は転けなかったので合ってるらしい。</p>
<p style="margin: 0px 0px 1.2em !important;">さて、ここまで整理がついたので、本題(?) の「rpmではないバイナリtarボールを展開したxtrabackupでパスの様子を見る」をやる。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-30/binary/tarball/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17.tar.gz
$ tar xf percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17.tar.gz
$ sudo ./percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup --backup -uroot --stream=xbstream | pzstd -c > test.xb.zst
2024-01-20T05:57:43.365008-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql
2024-01-20T05:57:43.365115-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --backup=1 --user=root --stream=xbstream
./percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
240120 05:57:43 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' as 'root' (using password: NO).
240120 05:57:43 version_check Connected to MySQL server
240120 05:57:43 version_check Executing a version check against the server...
240120 05:57:43 version_check Done.
2024-01-20T05:57:43.425978-00:00 0 [Note] [MY-011825] [Xtrabackup] Connecting to MySQL server host: localhost, user: root, password: not set, port: not set, socket: not set
2024-01-20T05:57:43.426090-00:00 0 [ERROR] [MY-011825] [Xtrabackup] Failed to connect to MySQL server: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
</code></pre><p style="margin: 0px 0px 1.2em !important;">そもそもtarボール版だと <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">--socket</code> の暗黙のデフォルトの値が違う。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ sudo ./percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup --backup -uroot --stream=xbstream --socket=/var/lib/mysql/mysql.sock | pzstd -c > test.xb.zst
2024-01-20T06:00:06.747082-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql
2024-01-20T06:00:06.747179-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --backup=1 --user=root --stream=xbstream --socket=/var/lib/mysql/mysql.sock
./percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49
..
2024-01-20T06:00:06.846775-00:00 0 [Note] [MY-011825] [Xtrabackup] Added plugin 'keyring_file.so' to load list.
2024-01-20T06:00:06.847814-00:00 0 [ERROR] [MY-010901] [Server] Can't open shared library '/mnt/jenkins/workspace/percona-xtrabackup-8.0-RELEASE/test/TARGET/xtrabackup-build.XXP2GX/percona-xtrabackup-8.0.35
-30-Linux-x86_64.glibc2.17/lib/plugin/keyring_file.so' (errno: 2 cannot open shared object file: No such file or directory).
2024-01-20T06:00:06.847914-00:00 0 [ERROR] [MY-010736] [Server] Couldn't load plugin named 'keyring_file.so' with soname 'keyring_file.so'.
..
2024-01-20T06:00:09.573058-00:00 0 [ERROR] [MY-011825] [Xtrabackup] Space ID 2 is missing encryption information.
</code></pre><p style="margin: 0px 0px 1.2em !important;">そもそも <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">keyring_file.so</code> が掴めないと言われる。<br />見るからにコンパイルした環境の <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">lib/plugin</code> を指しているっぽいので、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">--xtrabackup-plugin-dir</code> で展開したディレクトリの <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">lib/plugin</code> を指してやる必要がありそう。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ sudo ./percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup --backup -uroot --stream=xbstream --socket=/var/lib/mysql/mysql.sock --xtrabackup-plugin-dir=/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/lib/plugin | pzstd -c > test.xb.zst
2024-01-20T06:03:54.596743-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql
2024-01-20T06:03:54.596830-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --backup=1 --user=root --stream=xbstream --socket=/var/lib/mysql/mysql.sock --xtrabackup-plugin-dir=/home/opc/
percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/lib/plugin
./percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
..
2024-01-20T06:03:57.435335-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'keyring_file'
2024-01-20T06:03:57.435594-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'daemon_keyring_proxy_plugin'
2024-01-20T06:03:57.436245-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!
</code></pre><p style="margin: 0px 0px 1.2em !important;">取れた。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ mkdir binary_tarball
$ cd binary_tarball
$ pzstd -dc ../test.xb.zst | xbstream -x
$ sudo /home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup --prepare --target-dir=./ --keyring-file-data=/home/opc/mysql-secret --xtrabackup-plugin-dir=/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/lib/plugin
2024-01-20T06:10:57.745096-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_log_checksums=1 --innodb_data_file_path=ibdata1:12M:autoextend --in
nodb_log_file_size=50331648 --innodb_page_size=16384 --innodb_undo_directory=./ --innodb_undo_tablespaces=2 --server-id=0 --innodb_log_checksums=ON --innodb_redo_log_encrypt=0 --innodb_undo_log_encrypt=0
2024-01-20T06:10:57.745205-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --prepare=1 --target-dir=./ --keyring-file-data=/home/opc/mysql-secret --xtrabackup-plugin-dir=/home/opc/perco
na-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/lib/plugin
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
..
2024-01-20T06:10:59.256124-00:00 0 [Note] [MY-012980] [InnoDB] Shutdown completed; log sequence number 24506902
2024-01-20T06:10:59.258134-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'keyring_file'
2024-01-20T06:10:59.258396-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'daemon_keyring_proxy_plugin'
2024-01-20T06:10:59.258780-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">--xtrabackup-plugin-dir</code> の指定を忘れてエラーにしたりしたけど、忘れなければ大丈夫っぽい。</p>
<p style="margin: 0px 0px 1.2em !important;">ちなみにxb —prepareにsudoつけるの忘れて ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">/home/opc/mysql-secret</code> はopcアカウントでは読めないパーミッション )実行したら容赦なくSEGVした。もう少し優しく教えてくれても…()</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ /home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup --prepare --target-dir=./ --keyring-file-data=/home/opc/mysql-secret --xtrabackup-plugin-dir=/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/lib/plugin
2024-01-20T06:09:05.770533-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_log_checksums=1 --innodb_data_file_path=ibdata1:12M:autoextend --innodb_log_file_size=50331648 --innodb_page_size=16384 --innodb_undo_directory=./ --innodb_undo_tablespaces=2 --server-id=0 --innodb_log_checksums=ON --innodb_redo_log_encrypt=0 --innodb_undo_log_encrypt=0
2024-01-20T06:09:05.770857-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --prepare=1 --target-dir=./ --keyring-file-data=/home/opc/mysql-secret --xtrabackup-plugin-dir=/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/lib/plugin
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
2024-01-20T06:09:05.770919-00:00 0 [Note] [MY-011825] [Xtrabackup] cd to /home/opc/binary_tarball/
2024-01-20T06:09:05.771148-00:00 0 [Note] [MY-011825] [Xtrabackup] This target seems to be not prepared yet.
2024-01-20T06:09:05.780986-00:00 0 [Note] [MY-011825] [Xtrabackup] xtrabackup_logfile detected: size=8388608, start_lsn=(24421351)
2024-01-20T06:09:05.781545-00:00 0 [Note] [MY-011825] [Xtrabackup] using the following InnoDB configuration for recovery:
2024-01-20T06:09:05.781624-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_data_home_dir = .
2024-01-20T06:09:05.781635-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_data_file_path = ibdata1:12M:autoextend
2024-01-20T06:09:05.781730-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_log_group_home_dir = .
2024-01-20T06:09:05.781824-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_log_files_in_group = 1
2024-01-20T06:09:05.781896-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_log_file_size = 8388608
2024-01-20T06:09:05.782506-00:00 0 [Warning] [MY-013360] [InnoDB] Plugin keyring_file reported: ''keyring_file plugin' is deprecated and will be removed in a future release. Please use component_keyring_file instead'
2024-01-20T06:09:05.782771-00:00 0 [ERROR] [MY-011370] [InnoDB] Plugin keyring_file reported: 'File '/home/opc/mysql-secret' not found (OS errno 13 - Permission denied)'
2024-01-20T06:09:05.782837-00:00 0 [ERROR] [MY-011355] [InnoDB] Plugin keyring_file reported: 'keyring_file initialization failure. Please check if the keyring_file_data points to readable keyring file or keyring file can be created in the specified location. The keyring_file will stay unusable until correct path to the keyring file gets provided'
2024-01-20T06:09:05.782895-00:00 0 [ERROR] [MY-010202] [Server] Plugin 'keyring_file' init function returned error.
2024-01-20T06:09:05.783203-00:00 0 [Note] [MY-011825] [Xtrabackup] inititialize_service_handles suceeded
2024-01-20T06:09:05Z UTC - mysqld got signal 11 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=
Thread pointer: 0x4bdc3a0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7ffd8c5c4ef0 thread_stack 0x100000
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup(my_print_stacktrace(unsigned char const*, unsigned long)+0x3d) [0x2585b4d]
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup(print_fatal_signal(int)+0x393) [0x12c4893]
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup(handle_fatal_signal+0x95) [0x12c4975]
/lib64/libpthread.so.0(+0x12d40) [0x7fb681543d40]
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup(add_plugin_options(std::vector<my_option, std::allocator<my_option> >*, MEM_ROOT*)+0x68) [0x117ba38]
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup() [0xd0d835]
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup() [0xd15f23]
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup(main+0x1af5) [0xcc72b5]
/lib64/libc.so.6(__libc_start_main+0xe5) [0x7fb67efa0e45]
/home/opc/percona-xtrabackup-8.0.35-30-Linux-x86_64.glibc2.17/bin/xtrabackup() [0xcfd115]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0): Connection ID (thread ID): 0
Status: NOT_KILLED
Please report a bug at https://jira.percona.com/projects/PXB
</code></pre><p style="margin: 0px 0px 1.2em !important;">InnoDBログとUNDOログの暗号化中のは試さなくても大丈夫かな、これなら。</p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+Jm5ic3A7W+aXpeOAheOBruimmuabuDogeHRyYWJhY2t1cCBcKyBJbm5vREIgVERFIC8ga2V5
cmluZ1xfZmlsZVxfZGF0YeOBp1wtXC1wcmVwYXJl44GoXC1cLW1vdmVcLWJhY2tdKGh0dHBzOi8v
eW9rdTA4MjUuYmxvZ3Nwb3QuY29tLzIwMjQvMDEveHRyYWJhY2t1cC1pbm5vZGItdGRlLWtleXJp
bmdmaWxlZGF0YS5odG1sKSDjga7ntprjgY08L3A+PHA+PGJyPjwvcD48cD5rZXlyaW5nX2ZpbGVf
ZGF0YeOCkuecn+mdouebruOBq+S4juOBiOOBquOBj+OBpuOCguS9leaVheOBiyAtLXByZXBhcmUg
44Gn44GN44Gm44GX44G+44Gj44Gf44Gu44GM6KyO44Gg44Gj44Gf44Gu44Gn5pu444GN6L6844G/
44Gq44GM44KJ44CCPC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPiQgZm9yIG4gaW4gezEwMS4u
MTAwMDB9IDsgZG88L3A+PHA+Jmd0OyBzdWRvIG15c3FsIC1lICJJTlNFUlQgSU5UTyBkMS50MSBW
QUxVRVMgKCRuKSI8L3A+PHA+Jmd0OyBkb25lPC9wPjxwPmBgYDwvcD48cD48YnI+PC9wPjxwPmBg
YDwvcD48cD4kIHN1ZG8geHRyYWJhY2t1cCAtLWJhY2t1cCAtdXJvb3QgLS1zdHJlYW09eGJzdHJl
YW0gfCBwenN0ZCAtZGMgJmd0OyB0ZXN0LnhiLnpzdDwvcD48cD4yMDI0LTAxLTIwVDA1OjIzOjI4
LjkxMjg0Ny0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gcmVjb2duaXpl
ZCBzZXJ2ZXIgYXJndW1lbnRzOiAtLWRhdGFkaXI9L3Zhci9saWIvbXlzcWw8L3A+PHA+MjAyNC0w
MS0yMFQwNToyMzoyOC45MTMwMDAtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNr
dXBdIHJlY29nbml6ZWQgY2xpZW50IGFyZ3VtZW50czogLS1iYWNrdXA9MSAtLXVzZXI9cm9vdCAt
LXN0cmVhbT14YnN0cmVhbTwvcD48cD54dHJhYmFja3VwIHZlcnNpb24gOC4wLjM1LTMwIGJhc2Vk
IG9uIE15U1FMIHNlcnZlciA4LjAuMzUgTGludXggKHg4Nl82NCkgKHJldmlzaW9uIGlkOiA2YmVi
NGI0OSk8L3A+PHA+Li48L3A+PHA+PGJyPjwvcD48cD4kIG1rZGlyIGJhY2t1cF93aXRoX3J1bm5p
bmc8L3A+PHA+JCBjZCBiYWNrdXBfd2l0aF9ydW5uaW5nPC9wPjxwPiQmbmJzcDtwenN0ZCAtZGMg
Li4vdGVzdC54Yi56c3QgfCB4YnN0cmVhbSAteDwvcD48cD4kIHh0cmFiYWNrdXAgLS1wcmVwYXJl
IC0tdGFyZ2V0LWRpcj0uLyAtLWtleXJpbmctZmlsZS1kYXRhPS90bXAvZHVtbXkyPC9wPjxwPjIw
MjQtMDEtMjBUMDU6Mjc6MjYuOTc4MDA1LTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJh
YmFja3VwXSByZWNvZ25pemVkIHNlcnZlciBhcmd1bWVudHM6IC0taW5ub2RiX2NoZWNrc3VtX2Fs
Z29yaXRobT1jcmMzMiAtLWlubm9kYl9sb2dfY2hlY2tzdW1zPTEgLS1pbm5vZGJfZGF0YV9maWxl
X3BhdGg9aWJkYXRhMToxMk06YXV0b2V4dGVuZCAtLWlubm9kYl9sb2dfZmlsZV9zaXplPTUwMzMx
NjQ4IC0taW5ub2RiX3BhZ2Vfc2l6ZT0xNjM4NCAtLWlubm9kYl91bmRvX2RpcmVjdG9yeT0uLyAt
LWlubm9kYl91bmRvX3RhYmxlc3BhY2VzPTIgLS1zZXJ2ZXItaWQ9MCAtLWlubm9kYl9sb2dfY2hl
Y2tzdW1zPU9OIC0taW5ub2RiX3JlZG9fbG9nX2VuY3J5cHQ9MCAtLWlubm9kYl91bmRvX2xvZ19l
bmNyeXB0PTA8L3A+PHA+MjAyNC0wMS0yMFQwNToyNzoyNi45NzgxMDMtMDA6MDAgMCBbTm90ZV0g
W01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIHJlY29nbml6ZWQgY2xpZW50IGFyZ3VtZW50czogLS1w
cmVwYXJlPTEgLS10YXJnZXQtZGlyPS4vIC0ta2V5cmluZy1maWxlLWRhdGE9L3RtcC9kdW1teTI8
L3A+PHA+eHRyYWJhY2t1cCB2ZXJzaW9uIDguMC4zNS0zMCBiYXNlZCBvbiBNeVNRTCBzZXJ2ZXIg
OC4wLjM1IExpbnV4ICh4ODZfNjQpIChyZXZpc2lvbiBpZDogNmJlYjRiNDkpPC9wPjxwPi4uPC9w
PjxwPjIwMjQtMDEtMjBUMDU6Mjc6MjcuMDgwNDQ4LTAwOjAwIDAgW05vdGVdIFtNWS0wMTI1NTJd
IFtJbm5vREJdIFN0YXJ0aW5nIGNyYXNoIHJlY292ZXJ5LjwvcD48cD4yMDI0LTAxLTIwVDA1OjI3
OjI3LjA4MDY4Ni0wMDowMCAwIFtOb3RlXSBbTVktMDEzMDg2XSBbSW5ub0RCXSBTdGFydGluZyB0
byBwYXJzZSByZWRvIGxvZyBhdCBsc24gPSAyMDMzNDA5Miwgd2hlcmVhcyBjaGVja3BvaW50X2xz
biA9IDIwMzM0MzU1IGFuZCBzdGFydF9sc24gPSAyMDMzNDA4MDwvcD48cD4yMDI0LTAxLTIwVDA1
OjI3OjI3LjA4Mzc0Ni0wMDowMCAwIFtOb3RlXSBbTVktMDEyNTUwXSBbSW5ub0RCXSBEb2luZyBy
ZWNvdmVyeTogc2Nhbm5lZCB1cCB0byBsb2cgc2VxdWVuY2UgbnVtYmVyIDIwOTIzODU4PC9wPjxw
PjIwMjQtMDEtMjBUMDU6Mjc6MjcuMTQzMTg5LTAwOjAwIDAgW05vdGVdIFtNWS0wMTMwODNdIFtJ
bm5vREJdIExvZyBiYWNrZ3JvdW5kIHRocmVhZHMgYXJlIGJlaW5nIHN0YXJ0ZWQuLi48L3A+PHA+
MjAyNC0wMS0yMFQwNToyNzoyNy4xOTI2NjQtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMjUzMl0gW0lu
bm9EQl0gQXBwbHlpbmcgYSBiYXRjaCBvZiAzMDIgcmVkbyBsb2cgcmVjb3JkcyAuLi48L3A+PHA+
MjAyNC0wMS0yMFQwNToyNzoyNy4xOTM2OTQtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMjUzM10gW0lu
bm9EQl0gMTAlPC9wPjxwPjIwMjQtMDEtMjBUMDU6Mjc6MjcuMTk0MTcwLTAwOjAwIDAgW05vdGVd
IFtNWS0wMTI1MzNdIFtJbm5vREJdIDIwJTwvcD48cD4yMDI0LTAxLTIwVDA1OjI3OjI3LjE5NDgz
OC0wMDowMCAwIFtOb3RlXSBbTVktMDEyNTMzXSBbSW5ub0RCXSAzMCU8L3A+PHA+MjAyNC0wMS0y
MFQwNToyNzoyNy4xOTQ5ODItMDA6MDAgMCBbTm90ZV0gW01ZLTAxMjUzM10gW0lubm9EQl0gNDAl
PC9wPjxwPjIwMjQtMDEtMjBUMDU6Mjc6MjcuMTk1NjkwLTAwOjAwIDAgW05vdGVdIFtNWS0wMTI1
MzNdIFtJbm5vREJdIDUwJTwvcD48cD4yMDI0LTAxLTIwVDA1OjI3OjI3LjE5NjIyNS0wMDowMCAw
IFtOb3RlXSBbTVktMDEyNTMzXSBbSW5ub0RCXSA2MCU8L3A+PHA+MjAyNC0wMS0yMFQwNToyNzoy
Ny4xOTYzODYtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMjUzM10gW0lubm9EQl0gNzAlPC9wPjxwPjIw
MjQtMDEtMjBUMDU6Mjc6MjcuMTk2OTM3LTAwOjAwIDAgW05vdGVdIFtNWS0wMTI1MzNdIFtJbm5v
REJdIDgwJTwvcD48cD4yMDI0LTAxLTIwVDA1OjI3OjI3LjE5NzA0Ny0wMDowMCAwIFtOb3RlXSBb
TVktMDEyNTMzXSBbSW5ub0RCXSA5MCU8L3A+PHA+MjAyNC0wMS0yMFQwNToyNzoyNy4xOTg0Mzkt
MDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW0lubm9EQl0gRW5jcnlwdGlvbiBpbmZvcm1hdGlv
biBpbiBkYXRhZmlsZTogLi9kMS90MS5pYmQgY2FuJ3QgYmUgZGVjcnlwdGVkLCBwbGVhc2UgY29u
ZmlybSB0aGF0IGtleXJpbmcgaXMgbG9hZGVkLjwvcD48cD4yMDI0LTAxLTIwVDA1OjI3OjI3LjE5
ODQ2OC0wMDowMCAwIFtFUlJPUl0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIEludmFsaWQgZW5j
cnlwdGlvbiBtZXRhZGF0YSBpbiB0YWJsZXNwYWNlIGhlYWRlci48L3A+PHA+MjAyNC0wMS0yMFQw
NToyNzoyNy4xOTg0NzctMDA6MDAgMCBbRVJST1JdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBV
bmFibGUgdG8gZGVjcnlwdC4gUGxlYXNlIGNoZWNrIGlmIHh0cmFiYWNrdXAgaXMgY29uZmlndXJl
ZCBjb3JyZWN0bHkgdG8gYWNjZXNzIHRoZSBrZXlyaW5nIHBsdWdpbiBvciBjb21wb25lbnQuIENo
ZWNrIC0teHRyYWJhY2t1cC1wbHVnaW4tZGlyLiBBbHNvIHZlcmlmeSBpZiB2YWxpZCBrZXlyaW5n
X2ZpbGVfZGF0YSBpcyBwYXNzZWQgd2l0aCB0aGUgb3B0aW9uIC0ta2V5cmluZ19maWxlX2RhdGEu
IElmIGtleXJpbmcgY29tcG9uZW50IGlzIHVzZWQsIGNoZWNrIGlmIC0tY29tcG9uZW50LWtleXJp
bmctY29uZmlnIHBvaW50cyB0byB2YWxpZCBjb25maWd1cmF0aW9uPC9wPjxwPmBgYDwvcD48cD48
YnI+PC9wPjxwPuOBoeOCg+OCk+OBqOi7ouOBkeOBn+OAguOChOOBo+OBseOCiuaal+WPt+Wvvuix
oeODhuODvOODluODq+OCueODmuODvOOCueOBjOOCr+ODqeODg+OCt+ODpeODquOCq+ODkOODquWv
vuixoeOBq+OBquOCieOBquOBhOmZkOOCiuOBr+W+qeWPt+WMluOBjOW/heimgeOBquOBhOOBi+OC
iSBb5YmN5ZueXShodHRwczovL3lva3UwODI1LmJsb2dzcG90LmNvbS8yMDI0LzAxL3h0cmFiYWNr
dXAtaW5ub2RiLXRkZS1rZXlyaW5nZmlsZWRhdGEuaHRtbCkg44Gv6Lui44GR44Gq44GL44Gj44Gf
44Gu44Gn5ZCI44Gj44Gm44KL44KJ44GX44GE44CCPC9wPjxwPjxicj48L3A+PHA+PGJyPjwvcD48
cD7jgZXjgabjgIHjgZPjgZPjgb7jgafmlbTnkIbjgYzjgaTjgYTjgZ/jga7jgafjgIHmnKzpoYwo
Pykg44Gu44CMcnBt44Gn44Gv44Gq44GE44OQ44Kk44OK44OqdGFy44Oc44O844Or44KS5bGV6ZaL
44GX44GfeHRyYWJhY2t1cOOBp+ODkeOCueOBruanmOWtkOOCkuimi+OCi+OAjeOCkuOChOOCi+OA
gjwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIHdnZXQgaHR0cHM6Ly9kb3dubG9hZHMucGVy
Y29uYS5jb20vZG93bmxvYWRzL1BlcmNvbmEtWHRyYUJhY2t1cC04LjAvUGVyY29uYS1YdHJhQmFj
a3VwLTguMC4zNS0zMC9iaW5hcnkvdGFyYmFsbC9wZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1LTMw
LUxpbnV4LXg4Nl82NC5nbGliYzIuMTcudGFyLmd6PC9wPjxwPiQgdGFyIHhmIHBlcmNvbmEteHRy
YWJhY2t1cC04LjAuMzUtMzAtTGludXgteDg2XzY0LmdsaWJjMi4xNy50YXIuZ3o8L3A+PHA+JCBz
dWRvIC4vcGVyY29uYS14dHJhYmFja3VwLTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3
L2Jpbi94dHJhYmFja3VwIC0tYmFja3VwIC11cm9vdCAtLXN0cmVhbT14YnN0cmVhbSB8IHB6c3Rk
IC1jICZndDsgdGVzdC54Yi56c3Q8L3A+PHA+MjAyNC0wMS0yMFQwNTo1Nzo0My4zNjUwMDgtMDA6
MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIHJlY29nbml6ZWQgc2VydmVyIGFy
Z3VtZW50czogLS1kYXRhZGlyPS92YXIvbGliL215c3FsPC9wPjxwPjIwMjQtMDEtMjBUMDU6NTc6
NDMuMzY1MTE1LTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSByZWNvZ25p
emVkIGNsaWVudCBhcmd1bWVudHM6IC0tYmFja3VwPTEgLS11c2VyPXJvb3QgLS1zdHJlYW09eGJz
dHJlYW08L3A+PHA+Li9wZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1LTMwLUxpbnV4LXg4Nl82NC5n
bGliYzIuMTcvYmluL3h0cmFiYWNrdXAgdmVyc2lvbiA4LjAuMzUtMzAgYmFzZWQgb24gTXlTUUwg
c2VydmVyIDguMC4zNSBMaW51eCAoeDg2XzY0KSAocmV2aXNpb24gaWQ6IDZiZWI0YjQ5KTwvcD48
cD4yNDAxMjAgMDU6NTc6NDMmbmJzcDsgdmVyc2lvbl9jaGVjayBDb25uZWN0aW5nIHRvIE15U1FM
IHNlcnZlciB3aXRoIERTTiAnZGJpOm15c3FsOjtteXNxbF9yZWFkX2RlZmF1bHRfZ3JvdXA9eHRy
YWJhY2t1cCcgYXMgJ3Jvb3QnJm5ic3A7ICh1c2luZyBwYXNzd29yZDogTk8pLjwvcD48cD4yNDAx
MjAgMDU6NTc6NDMmbmJzcDsgdmVyc2lvbl9jaGVjayBDb25uZWN0ZWQgdG8gTXlTUUwgc2VydmVy
PC9wPjxwPjI0MDEyMCAwNTo1Nzo0MyZuYnNwOyB2ZXJzaW9uX2NoZWNrIEV4ZWN1dGluZyBhIHZl
cnNpb24gY2hlY2sgYWdhaW5zdCB0aGUgc2VydmVyLi4uPC9wPjxwPjI0MDEyMCAwNTo1Nzo0MyZu
YnNwOyB2ZXJzaW9uX2NoZWNrIERvbmUuPC9wPjxwPjIwMjQtMDEtMjBUMDU6NTc6NDMuNDI1OTc4
LTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBDb25uZWN0aW5nIHRvIE15
U1FMIHNlcnZlciBob3N0OiBsb2NhbGhvc3QsIHVzZXI6IHJvb3QsIHBhc3N3b3JkOiBub3Qgc2V0
LCBwb3J0OiBub3Qgc2V0LCBzb2NrZXQ6IG5vdCBzZXQ8L3A+PHA+MjAyNC0wMS0yMFQwNTo1Nzo0
My40MjYwOTAtMDA6MDAgMCBbRVJST1JdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBGYWlsZWQg
dG8gY29ubmVjdCB0byBNeVNRTCBzZXJ2ZXI6IENhbid0IGNvbm5lY3QgdG8gbG9jYWwgTXlTUUwg
c2VydmVyIHRocm91Z2ggc29ja2V0ICcvdmFyL3J1bi9teXNxbGQvbXlzcWxkLnNvY2snICgyKTwv
cD48cD5gYGA8L3A+PHA+PGJyPjwvcD48cD7jgZ3jgoLjgZ3jgoJ0YXLjg5zjg7zjg6vniYjjgaDj
gaggYC0tc29ja2V0YCDjga7mmpfpu5njga7jg4fjg5Xjgqnjg6vjg4jjga7lgKTjgYzpgZXjgYbj
gII8L3A+PHA+PGJyPjwvcD48cD5gYGA8L3A+PHA+JCBzdWRvIC4vcGVyY29uYS14dHJhYmFja3Vw
LTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3L2Jpbi94dHJhYmFja3VwIC0tYmFja3Vw
IC11cm9vdCAtLXN0cmVhbT14YnN0cmVhbSAtLXNvY2tldD0vdmFyL2xpYi9teXNxbC9teXNxbC5z
b2NrIHwgcHpzdGQgLWMgJmd0OyB0ZXN0LnhiLnpzdDwvcD48cD4yMDI0LTAxLTIwVDA2OjAwOjA2
Ljc0NzA4Mi0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gcmVjb2duaXpl
ZCBzZXJ2ZXIgYXJndW1lbnRzOiAtLWRhdGFkaXI9L3Zhci9saWIvbXlzcWw8L3A+PHA+MjAyNC0w
MS0yMFQwNjowMDowNi43NDcxNzktMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNr
dXBdIHJlY29nbml6ZWQgY2xpZW50IGFyZ3VtZW50czogLS1iYWNrdXA9MSAtLXVzZXI9cm9vdCAt
LXN0cmVhbT14YnN0cmVhbSAtLXNvY2tldD0vdmFyL2xpYi9teXNxbC9teXNxbC5zb2NrPC9wPjxw
Pi4vcGVyY29uYS14dHJhYmFja3VwLTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3L2Jp
bi94dHJhYmFja3VwIHZlcnNpb24gOC4wLjM1LTMwIGJhc2VkIG9uIE15U1FMIHNlcnZlciA4LjAu
MzUgTGludXggKHg4Nl82NCkgKHJldmlzaW9uIGlkOiA2YmViNGI0OTwvcD48cD4uLjwvcD48cD4y
MDI0LTAxLTIwVDA2OjAwOjA2Ljg0Njc3NS0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRy
YWJhY2t1cF0gQWRkZWQgcGx1Z2luICdrZXlyaW5nX2ZpbGUuc28nIHRvIGxvYWQgbGlzdC48L3A+
PHA+MjAyNC0wMS0yMFQwNjowMDowNi44NDc4MTQtMDA6MDAgMCBbRVJST1JdIFtNWS0wMTA5MDFd
IFtTZXJ2ZXJdIENhbid0IG9wZW4gc2hhcmVkIGxpYnJhcnkgJy9tbnQvamVua2lucy93b3Jrc3Bh
Y2UvcGVyY29uYS14dHJhYmFja3VwLTguMC1SRUxFQVNFL3Rlc3QvVEFSR0VUL3h0cmFiYWNrdXAt
YnVpbGQuWFhQMkdYL3BlcmNvbmEteHRyYWJhY2t1cC04LjAuMzU8L3A+PHA+LTMwLUxpbnV4LXg4
Nl82NC5nbGliYzIuMTcvbGliL3BsdWdpbi9rZXlyaW5nX2ZpbGUuc28nIChlcnJubzogMiBjYW5u
b3Qgb3BlbiBzaGFyZWQgb2JqZWN0IGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkpLjwv
cD48cD4yMDI0LTAxLTIwVDA2OjAwOjA2Ljg0NzkxNC0wMDowMCAwIFtFUlJPUl0gW01ZLTAxMDcz
Nl0gW1NlcnZlcl0gQ291bGRuJ3QgbG9hZCBwbHVnaW4gbmFtZWQgJ2tleXJpbmdfZmlsZS5zbycg
d2l0aCBzb25hbWUgJ2tleXJpbmdfZmlsZS5zbycuPC9wPjxkaXY+Li48L2Rpdj48cD4yMDI0LTAx
LTIwVDA2OjAwOjA5LjU3MzA1OC0wMDowMCAwIFtFUlJPUl0gW01ZLTAxMTgyNV0gW1h0cmFiYWNr
dXBdIFNwYWNlIElEIDIgaXMgbWlzc2luZyBlbmNyeXB0aW9uIGluZm9ybWF0aW9uLjwvcD48ZGl2
PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44Gd44KC44Gd44KCIGBrZXlyaW5nX2ZpbGUu
c29gIOOBjOaOtOOCgeOBquOBhOOBqOiogOOCj+OCjOOCi+OAgjwvZGl2PjxkaXY+6KaL44KL44GL
44KJ44Gr44Kz44Oz44OR44Kk44Or44GX44Gf55Kw5aKD44GuIGBsaWIvcGx1Z2luYCDjgpLmjIfj
gZfjgabjgYTjgovjgaPjgb3jgYTjga7jgafjgIEgYC0teHRyYWJhY2t1cC1wbHVnaW4tZGlyYCDj
gaflsZXplovjgZfjgZ/jg4fjgqPjg6zjgq/jg4jjg6rjga4gYGxpYi9wbHVnaW5gIOOCkuaMh+OB
l+OBpuOChOOCi+W/heimgeOBjOOBguOCiuOBneOBhuOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2PiQgc3VkbyAuL3BlcmNvbmEteHRy
YWJhY2t1cC04LjAuMzUtMzAtTGludXgteDg2XzY0LmdsaWJjMi4xNy9iaW4veHRyYWJhY2t1cCAt
LWJhY2t1cCAtdXJvb3QgLS1zdHJlYW09eGJzdHJlYW0gLS1zb2NrZXQ9L3Zhci9saWIvbXlzcWwv
bXlzcWwuc29jayAtLXh0cmFiYWNrdXAtcGx1Z2luLWRpcj0vaG9tZS9vcGMvcGVyY29uYS14dHJh
YmFja3VwLTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3L2xpYi9wbHVnaW4gfCBwenN0
ZCAtYyAmZ3Q7IHRlc3QueGIuenN0PC9kaXY+PGRpdj4yMDI0LTAxLTIwVDA2OjAzOjU0LjU5Njc0
My0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gcmVjb2duaXplZCBzZXJ2
ZXIgYXJndW1lbnRzOiAtLWRhdGFkaXI9L3Zhci9saWIvbXlzcWw8L2Rpdj48ZGl2PjIwMjQtMDEt
MjBUMDY6MDM6NTQuNTk2ODMwLTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3Vw
XSByZWNvZ25pemVkIGNsaWVudCBhcmd1bWVudHM6IC0tYmFja3VwPTEgLS11c2VyPXJvb3QgLS1z
dHJlYW09eGJzdHJlYW0gLS1zb2NrZXQ9L3Zhci9saWIvbXlzcWwvbXlzcWwuc29jayAtLXh0cmFi
YWNrdXAtcGx1Z2luLWRpcj0vaG9tZS9vcGMvPC9kaXY+PGRpdj5wZXJjb25hLXh0cmFiYWNrdXAt
OC4wLjM1LTMwLUxpbnV4LXg4Nl82NC5nbGliYzIuMTcvbGliL3BsdWdpbjwvZGl2PjxkaXY+Li9w
ZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1LTMwLUxpbnV4LXg4Nl82NC5nbGliYzIuMTcvYmluL3h0
cmFiYWNrdXAgdmVyc2lvbiA4LjAuMzUtMzAgYmFzZWQgb24gTXlTUUwgc2VydmVyIDguMC4zNSBM
aW51eCAoeDg2XzY0KSAocmV2aXNpb24gaWQ6IDZiZWI0YjQ5KTxicj48L2Rpdj48L2Rpdj48ZGl2
Pi4uPC9kaXY+PGRpdj48ZGl2PjIwMjQtMDEtMjBUMDY6MDM6NTcuNDM1MzM1LTAwOjAwIDAgW05v
dGVdIFtNWS0wMTA3MzNdIFtTZXJ2ZXJdIFNodXR0aW5nIGRvd24gcGx1Z2luICdrZXlyaW5nX2Zp
bGUnPC9kaXY+PGRpdj4yMDI0LTAxLTIwVDA2OjAzOjU3LjQzNTU5NC0wMDowMCAwIFtOb3RlXSBb
TVktMDEwNzMzXSBbU2VydmVyXSBTaHV0dGluZyBkb3duIHBsdWdpbiAnZGFlbW9uX2tleXJpbmdf
cHJveHlfcGx1Z2luJzwvZGl2PjxkaXY+MjAyNC0wMS0yMFQwNjowMzo1Ny40MzYyNDUtMDA6MDAg
MCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIGNvbXBsZXRlZCBPSyE8L2Rpdj48L2Rp
dj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+5Y+W44KM44Gf44CCPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PiQgbWtkaXImbmJzcDtiaW5hcnlfdGFyYmFs
bDwvZGl2PjxkaXY+JCBjZCZuYnNwO2JpbmFyeV90YXJiYWxsPC9kaXY+PGRpdj4kJm5ic3A7cHpz
dGQgLWRjIC4uL3Rlc3QueGIuenN0IHwgeGJzdHJlYW0gLXg8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PjxkaXY+JCBzdWRvIC9ob21lL29wYy9wZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1LTMwLUxp
bnV4LXg4Nl82NC5nbGliYzIuMTcvYmluL3h0cmFiYWNrdXAgLS1wcmVwYXJlIC0tdGFyZ2V0LWRp
cj0uLyAtLWtleXJpbmctZmlsZS1kYXRhPS9ob21lL29wYy9teXNxbC1zZWNyZXQgLS14dHJhYmFj
a3VwLXBsdWdpbi1kaXI9L2hvbWUvb3BjL3BlcmNvbmEteHRyYWJhY2t1cC04LjAuMzUtMzAtTGlu
dXgteDg2XzY0LmdsaWJjMi4xNy9saWIvcGx1Z2luPC9kaXY+PGRpdj4yMDI0LTAxLTIwVDA2OjEw
OjU3Ljc0NTA5Ni0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gcmVjb2du
aXplZCBzZXJ2ZXIgYXJndW1lbnRzOiAtLWlubm9kYl9jaGVja3N1bV9hbGdvcml0aG09Y3JjMzIg
LS1pbm5vZGJfbG9nX2NoZWNrc3Vtcz0xIC0taW5ub2RiX2RhdGFfZmlsZV9wYXRoPWliZGF0YTE6
MTJNOmF1dG9leHRlbmQgLS1pbjwvZGl2PjxkaXY+bm9kYl9sb2dfZmlsZV9zaXplPTUwMzMxNjQ4
IC0taW5ub2RiX3BhZ2Vfc2l6ZT0xNjM4NCAtLWlubm9kYl91bmRvX2RpcmVjdG9yeT0uLyAtLWlu
bm9kYl91bmRvX3RhYmxlc3BhY2VzPTIgLS1zZXJ2ZXItaWQ9MCAtLWlubm9kYl9sb2dfY2hlY2tz
dW1zPU9OIC0taW5ub2RiX3JlZG9fbG9nX2VuY3J5cHQ9MCAtLWlubm9kYl91bmRvX2xvZ19lbmNy
eXB0PTA8L2Rpdj48ZGl2PjIwMjQtMDEtMjBUMDY6MTA6NTcuNzQ1MjA1LTAwOjAwIDAgW05vdGVd
IFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSByZWNvZ25pemVkIGNsaWVudCBhcmd1bWVudHM6IC0t
cHJlcGFyZT0xIC0tdGFyZ2V0LWRpcj0uLyAtLWtleXJpbmctZmlsZS1kYXRhPS9ob21lL29wYy9t
eXNxbC1zZWNyZXQgLS14dHJhYmFja3VwLXBsdWdpbi1kaXI9L2hvbWUvb3BjL3BlcmNvPC9kaXY+
PGRpdj5uYS14dHJhYmFja3VwLTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3L2xpYi9w
bHVnaW48L2Rpdj48ZGl2Pi9ob21lL29wYy9wZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1LTMwLUxp
bnV4LXg4Nl82NC5nbGliYzIuMTcvYmluL3h0cmFiYWNrdXAgdmVyc2lvbiA4LjAuMzUtMzAgYmFz
ZWQgb24gTXlTUUwgc2VydmVyIDguMC4zNSBMaW51eCAoeDg2XzY0KSAocmV2aXNpb24gaWQ6IDZi
ZWI0YjQ5KTwvZGl2PjwvZGl2PjxkaXY+Li48L2Rpdj48ZGl2PjxkaXY+MjAyNC0wMS0yMFQwNjox
MDo1OS4yNTYxMjQtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMjk4MF0gW0lubm9EQl0gU2h1dGRvd24g
Y29tcGxldGVkOyBsb2cgc2VxdWVuY2UgbnVtYmVyIDI0NTA2OTAyPC9kaXY+PGRpdj4yMDI0LTAx
LTIwVDA2OjEwOjU5LjI1ODEzNC0wMDowMCAwIFtOb3RlXSBbTVktMDEwNzMzXSBbU2VydmVyXSBT
aHV0dGluZyBkb3duIHBsdWdpbiAna2V5cmluZ19maWxlJzwvZGl2PjxkaXY+MjAyNC0wMS0yMFQw
NjoxMDo1OS4yNTgzOTYtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMDczM10gW1NlcnZlcl0gU2h1dHRp
bmcgZG93biBwbHVnaW4gJ2RhZW1vbl9rZXlyaW5nX3Byb3h5X3BsdWdpbic8L2Rpdj48ZGl2PjIw
MjQtMDEtMjBUMDY6MTA6NTkuMjU4NzgwLTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJh
YmFja3VwXSBjb21wbGV0ZWQgT0shPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48
L2Rpdj48ZGl2PmAtLXh0cmFiYWNrdXAtcGx1Z2luLWRpcmAg44Gu5oyH5a6a44KS5b+Y44KM44Gm
44Ko44Op44O844Gr44GX44Gf44KK44GX44Gf44GR44Gp44CB5b+Y44KM44Gq44GR44KM44Gw5aSn
5LiI5aSr44Gj44G944GE44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgaHjgarjgb/jgat4
YiAtLXByZXBhcmXjgatzdWRv44Gk44GR44KL44Gu5b+Y44KM44GmICggYC9ob21lL29wYy9teXNx
bC1zZWNyZXRgIOOBr29wY+OCouOCq+OCpuODs+ODiOOBp+OBr+iqreOCgeOBquOBhOODkeODvOOD
n+ODg+OCt+ODp+ODsyAp5a6f6KGM44GX44Gf44KJ5a656LWm44Gq44GPU0VHVuOBl+OBn+OAguOC
guOBhuWwkeOBl+WEquOBl+OBj+aVmeOBiOOBpuOBj+OCjOOBpuOCguKApu+8iO+8iTwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4kJm5ic3A7L2hvbWUvb3BjL3BlcmNvbmEt
eHRyYWJhY2t1cC04LjAuMzUtMzAtTGludXgteDg2XzY0LmdsaWJjMi4xNy9iaW4veHRyYWJhY2t1
cCAtLXByZXBhcmUgLS10YXJnZXQtZGlyPS4vIC0ta2V5cmluZy1maWxlLWRhdGE9L2hvbWUvb3Bj
L215c3FsLXNlY3JldCAtLXh0cmFiYWNrdXAtcGx1Z2luLWRpcj0vaG9tZS9vcGMvcGVyY29uYS14
dHJhYmFja3VwLTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3L2xpYi9wbHVnaW48L2Rp
dj48ZGl2PjxkaXY+MjAyNC0wMS0yMFQwNjowOTowNS43NzA1MzMtMDA6MDAgMCBbTm90ZV0gW01Z
LTAxMTgyNV0gW1h0cmFiYWNrdXBdIHJlY29nbml6ZWQgc2VydmVyIGFyZ3VtZW50czogLS1pbm5v
ZGJfY2hlY2tzdW1fYWxnb3JpdGhtPWNyYzMyIC0taW5ub2RiX2xvZ19jaGVja3N1bXM9MSAtLWlu
bm9kYl9kYXRhX2ZpbGVfcGF0aD1pYmRhdGExOjEyTTphdXRvZXh0ZW5kIC0taW5ub2RiX2xvZ19m
aWxlX3NpemU9NTAzMzE2NDggLS1pbm5vZGJfcGFnZV9zaXplPTE2Mzg0IC0taW5ub2RiX3VuZG9f
ZGlyZWN0b3J5PS4vIC0taW5ub2RiX3VuZG9fdGFibGVzcGFjZXM9MiAtLXNlcnZlci1pZD0wIC0t
aW5ub2RiX2xvZ19jaGVja3N1bXM9T04gLS1pbm5vZGJfcmVkb19sb2dfZW5jcnlwdD0wIC0taW5u
b2RiX3VuZG9fbG9nX2VuY3J5cHQ9MDwvZGl2PjxkaXY+MjAyNC0wMS0yMFQwNjowOTowNS43NzA4
NTctMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIHJlY29nbml6ZWQgY2xp
ZW50IGFyZ3VtZW50czogLS1wcmVwYXJlPTEgLS10YXJnZXQtZGlyPS4vIC0ta2V5cmluZy1maWxl
LWRhdGE9L2hvbWUvb3BjL215c3FsLXNlY3JldCAtLXh0cmFiYWNrdXAtcGx1Z2luLWRpcj0vaG9t
ZS9vcGMvcGVyY29uYS14dHJhYmFja3VwLTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3
L2xpYi9wbHVnaW48L2Rpdj48ZGl2Pi9ob21lL29wYy9wZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1
LTMwLUxpbnV4LXg4Nl82NC5nbGliYzIuMTcvYmluL3h0cmFiYWNrdXAgdmVyc2lvbiA4LjAuMzUt
MzAgYmFzZWQgb24gTXlTUUwgc2VydmVyIDguMC4zNSBMaW51eCAoeDg2XzY0KSAocmV2aXNpb24g
aWQ6IDZiZWI0YjQ5KTwvZGl2PjxkaXY+MjAyNC0wMS0yMFQwNjowOTowNS43NzA5MTktMDA6MDAg
MCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIGNkIHRvIC9ob21lL29wYy9iaW5hcnlf
dGFyYmFsbC88L2Rpdj48ZGl2PjIwMjQtMDEtMjBUMDY6MDk6MDUuNzcxMTQ4LTAwOjAwIDAgW05v
dGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBUaGlzIHRhcmdldCBzZWVtcyB0byBiZSBub3Qg
cHJlcGFyZWQgeWV0LjwvZGl2PjxkaXY+MjAyNC0wMS0yMFQwNjowOTowNS43ODA5ODYtMDA6MDAg
MCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIHh0cmFiYWNrdXBfbG9nZmlsZSBkZXRl
Y3RlZDogc2l6ZT04Mzg4NjA4LCBzdGFydF9sc249KDI0NDIxMzUxKTwvZGl2PjxkaXY+MjAyNC0w
MS0yMFQwNjowOTowNS43ODE1NDUtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNr
dXBdIHVzaW5nIHRoZSBmb2xsb3dpbmcgSW5ub0RCIGNvbmZpZ3VyYXRpb24gZm9yIHJlY292ZXJ5
OjwvZGl2PjxkaXY+MjAyNC0wMS0yMFQwNjowOTowNS43ODE2MjQtMDA6MDAgMCBbTm90ZV0gW01Z
LTAxMTgyNV0gW1h0cmFiYWNrdXBdIGlubm9kYl9kYXRhX2hvbWVfZGlyID0gLjwvZGl2PjxkaXY+
MjAyNC0wMS0yMFQwNjowOTowNS43ODE2MzUtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0
cmFiYWNrdXBdIGlubm9kYl9kYXRhX2ZpbGVfcGF0aCA9IGliZGF0YTE6MTJNOmF1dG9leHRlbmQ8
L2Rpdj48ZGl2PjIwMjQtMDEtMjBUMDY6MDk6MDUuNzgxNzMwLTAwOjAwIDAgW05vdGVdIFtNWS0w
MTE4MjVdIFtYdHJhYmFja3VwXSBpbm5vZGJfbG9nX2dyb3VwX2hvbWVfZGlyID0gLjwvZGl2Pjxk
aXY+MjAyNC0wMS0yMFQwNjowOTowNS43ODE4MjQtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0g
W1h0cmFiYWNrdXBdIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAgPSAxPC9kaXY+PGRpdj4yMDI0
LTAxLTIwVDA2OjA5OjA1Ljc4MTg5Ni0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJh
Y2t1cF0gaW5ub2RiX2xvZ19maWxlX3NpemUgPSA4Mzg4NjA4PC9kaXY+PGRpdj4yMDI0LTAxLTIw
VDA2OjA5OjA1Ljc4MjUwNi0wMDowMCAwIFtXYXJuaW5nXSBbTVktMDEzMzYwXSBbSW5ub0RCXSBQ
bHVnaW4ga2V5cmluZ19maWxlIHJlcG9ydGVkOiAnJ2tleXJpbmdfZmlsZSBwbHVnaW4nIGlzIGRl
cHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2Ug
dXNlIGNvbXBvbmVudF9rZXlyaW5nX2ZpbGUgaW5zdGVhZCc8L2Rpdj48ZGl2PjIwMjQtMDEtMjBU
MDY6MDk6MDUuNzgyNzcxLTAwOjAwIDAgW0VSUk9SXSBbTVktMDExMzcwXSBbSW5ub0RCXSBQbHVn
aW4ga2V5cmluZ19maWxlIHJlcG9ydGVkOiAnRmlsZSAnL2hvbWUvb3BjL215c3FsLXNlY3JldCcg
bm90IGZvdW5kIChPUyBlcnJubyAxMyAtIFBlcm1pc3Npb24gZGVuaWVkKSc8L2Rpdj48ZGl2PjIw
MjQtMDEtMjBUMDY6MDk6MDUuNzgyODM3LTAwOjAwIDAgW0VSUk9SXSBbTVktMDExMzU1XSBbSW5u
b0RCXSBQbHVnaW4ga2V5cmluZ19maWxlIHJlcG9ydGVkOiAna2V5cmluZ19maWxlIGluaXRpYWxp
emF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19maWxlX2RhdGEgcG9p
bnRzIHRvIHJlYWRhYmxlIGtleXJpbmcgZmlsZSBvciBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0
ZWQgaW4gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4gVGhlIGtleXJpbmdfZmlsZSB3aWxsIHN0YXkg
dW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGZpbGUgZ2V0cyBwcm92
aWRlZCc8L2Rpdj48ZGl2PjIwMjQtMDEtMjBUMDY6MDk6MDUuNzgyODk1LTAwOjAwIDAgW0VSUk9S
XSBbTVktMDEwMjAyXSBbU2VydmVyXSBQbHVnaW4gJ2tleXJpbmdfZmlsZScgaW5pdCBmdW5jdGlv
biByZXR1cm5lZCBlcnJvci48L2Rpdj48ZGl2PjIwMjQtMDEtMjBUMDY6MDk6MDUuNzgzMjAzLTAw
OjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBpbml0aXRpYWxpemVfc2Vydmlj
ZV9oYW5kbGVzIHN1Y2VlZGVkPC9kaXY+PGRpdj4yMDI0LTAxLTIwVDA2OjA5OjA1WiBVVEMgLSBt
eXNxbGQgZ290IHNpZ25hbCAxMSA7PC9kaXY+PGRpdj5Nb3N0IGxpa2VseSwgeW91IGhhdmUgaGl0
IGEgYnVnLCBidXQgdGhpcyBlcnJvciBjYW4gYWxzbyBiZSBjYXVzZWQgYnkgbWFsZnVuY3Rpb25p
bmcgaGFyZHdhcmUuPC9kaXY+PGRpdj5CdWlsZElEW3NoYTFdPTwvZGl2PjxkaXY+VGhyZWFkIHBv
aW50ZXI6IDB4NGJkYzNhMDwvZGl2PjxkaXY+QXR0ZW1wdGluZyBiYWNrdHJhY2UuIFlvdSBjYW4g
dXNlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gdG8gZmluZCBvdXQ8L2Rpdj48ZGl2PndoZXJl
IG15c3FsZCBkaWVkLiBJZiB5b3Ugc2VlIG5vIG1lc3NhZ2VzIGFmdGVyIHRoaXMsIHNvbWV0aGlu
ZyB3ZW50PC9kaXY+PGRpdj50ZXJyaWJseSB3cm9uZy4uLjwvZGl2PjxkaXY+c3RhY2tfYm90dG9t
ID0gN2ZmZDhjNWM0ZWYwIHRocmVhZF9zdGFjayAweDEwMDAwMDwvZGl2PjxkaXY+L2hvbWUvb3Bj
L3BlcmNvbmEteHRyYWJhY2t1cC04LjAuMzUtMzAtTGludXgteDg2XzY0LmdsaWJjMi4xNy9iaW4v
eHRyYWJhY2t1cChteV9wcmludF9zdGFja3RyYWNlKHVuc2lnbmVkIGNoYXIgY29uc3QqLCB1bnNp
Z25lZCBsb25nKSsweDNkKSBbMHgyNTg1YjRkXTwvZGl2PjxkaXY+L2hvbWUvb3BjL3BlcmNvbmEt
eHRyYWJhY2t1cC04LjAuMzUtMzAtTGludXgteDg2XzY0LmdsaWJjMi4xNy9iaW4veHRyYWJhY2t1
cChwcmludF9mYXRhbF9zaWduYWwoaW50KSsweDM5MykgWzB4MTJjNDg5M108L2Rpdj48ZGl2Pi9o
b21lL29wYy9wZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1LTMwLUxpbnV4LXg4Nl82NC5nbGliYzIu
MTcvYmluL3h0cmFiYWNrdXAoaGFuZGxlX2ZhdGFsX3NpZ25hbCsweDk1KSBbMHgxMmM0OTc1XTwv
ZGl2PjxkaXY+L2xpYjY0L2xpYnB0aHJlYWQuc28uMCgrMHgxMmQ0MCkgWzB4N2ZiNjgxNTQzZDQw
XTwvZGl2PjxkaXY+L2hvbWUvb3BjL3BlcmNvbmEteHRyYWJhY2t1cC04LjAuMzUtMzAtTGludXgt
eDg2XzY0LmdsaWJjMi4xNy9iaW4veHRyYWJhY2t1cChhZGRfcGx1Z2luX29wdGlvbnMoc3RkOjp2
ZWN0b3ImbHQ7bXlfb3B0aW9uLCBzdGQ6OmFsbG9jYXRvciZsdDtteV9vcHRpb24mZ3Q7ICZndDsq
LCBNRU1fUk9PVCopKzB4NjgpIFsweDExN2JhMzhdPC9kaXY+PGRpdj4vaG9tZS9vcGMvcGVyY29u
YS14dHJhYmFja3VwLTguMC4zNS0zMC1MaW51eC14ODZfNjQuZ2xpYmMyLjE3L2Jpbi94dHJhYmFj
a3VwKCkgWzB4ZDBkODM1XTwvZGl2PjxkaXY+L2hvbWUvb3BjL3BlcmNvbmEteHRyYWJhY2t1cC04
LjAuMzUtMzAtTGludXgteDg2XzY0LmdsaWJjMi4xNy9iaW4veHRyYWJhY2t1cCgpIFsweGQxNWYy
M108L2Rpdj48ZGl2Pi9ob21lL29wYy9wZXJjb25hLXh0cmFiYWNrdXAtOC4wLjM1LTMwLUxpbnV4
LXg4Nl82NC5nbGliYzIuMTcvYmluL3h0cmFiYWNrdXAobWFpbisweDFhZjUpIFsweGNjNzJiNV08
L2Rpdj48ZGl2Pi9saWI2NC9saWJjLnNvLjYoX19saWJjX3N0YXJ0X21haW4rMHhlNSkgWzB4N2Zi
NjdlZmEwZTQ1XTwvZGl2PjxkaXY+L2hvbWUvb3BjL3BlcmNvbmEteHRyYWJhY2t1cC04LjAuMzUt
MzAtTGludXgteDg2XzY0LmdsaWJjMi4xNy9iaW4veHRyYWJhY2t1cCgpIFsweGNmZDExNV08L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRyeWluZyB0byBnZXQgc29tZSB2YXJpYWJsZXMuPC9kaXY+
PGRpdj5Tb21lIHBvaW50ZXJzIG1heSBiZSBpbnZhbGlkIGFuZCBjYXVzZSB0aGUgZHVtcCB0byBh
Ym9ydC48L2Rpdj48ZGl2PlF1ZXJ5ICgwKTogQ29ubmVjdGlvbiBJRCAodGhyZWFkIElEKTogMDwv
ZGl2PjxkaXY+U3RhdHVzOiBOT1RfS0lMTEVEPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj5QbGVhc2UgcmVwb3J0IGEgYnVnIGF0IGh0dHBzOi8vamlyYS5wZXJjb25hLmNv
bS9wcm9qZWN0cy9QWEI8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+SW5ub0RC44Ot44Kw44GoVU5ET+ODreOCsOOBruaal+WPt+WMluS4
reOBruOBr+ippuOBleOBquOBj+OBpuOCguWkp+S4iOWkq+OBi+OBquOAgeOBk+OCjOOBquOCieOA
gjwvZGl2Pg=="></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-31235355913553852612024-01-19T23:21:00.002+09:002024-01-19T23:27:18.844+09:00xtrabackup + InnoDB TDE / keyring_file_dataで--prepareと--move-back<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/3123535591355385261" markdown-here-wrapper-content-modified="true"><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><a href="https://yoku0825.blogspot.com/2024/01/keyringfiledatadatadir.html" target="_blank">日々の覚書: keyring_file_dataに相対パスを指定したらdatadirからの相対パスで作られてしまった</a> の続き</li>
</ul>
<p style="margin: 0px 0px 1.2em;">xtrabackupの準備</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">
$ sudo dnf install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm
$ sudo percona-release enable-only tools
$ sudo dnf install -y percona-xtrabackup-80
</code></pre><p style="margin: 0px 0px 1.2em;">元記事の順番をかっ飛ばして、元記事の順番その3、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">keyring_file_data</code> を相対パスで指定した時のバックアップとリストア(ちなみに標準パスを使おうと絶対パスを使おうと相対パスを使おうと同じだったので他の2つはもうやらない)</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">
$ sudo xtrabackup --backup -uroot --stream=xbstream | pzstd -c > test.xb.zst
2024-01-19T13:48:33.194738-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql
2024-01-19T13:48:33.194819-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --backup=1 --user=root --stream=xbstream
xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
240119 13:48:33 version_check Connecting to MySQL server with DSN 'dbi:mysql:;mysql_read_default_group=xtrabackup' as 'root' (using password: NO).
240119 13:48:33 version_check Connected to MySQL server
240119 13:48:33 version_check Executing a version check against the server...
240119 13:48:33 version_check Done.
..
2024-01-19T13:48:36.010152-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'keyring_file'
2024-01-19T13:48:36.010214-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'daemon_keyring_proxy_plugin'
2024-01-19T13:48:36.010958-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!
$ sudo cp /var/lib/mysql/path_to_key ./ ### keyring_fileを他のところにバックアップした風で
</code></pre><p style="margin: 0px 0px 1.2em;">prepare</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">$ mkdir relpath_restore
$ cd relpath_restore
$ pzstd -dc ../test.xb.zst | xbstream -x
../test.xb.zst : 74104109 bytes
$ xtrabackup --prepare --target-dir=./
2024-01-19T13:51:15.518235-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_log_checksums=1 --innodb_data_file_path=ibdata1:12M:autoextend --innodb_log_file_size=50331648 --innodb_page_size=16384 --innodb_undo_directory=./ --innodb_undo_tablespaces=2 --server-id=0 --innodb_log_checksums=ON --innodb_redo_log_encrypt=0 --innodb_undo_log_encrypt=0
2024-01-19T13:51:15.518345-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --prepare=1 --target-dir=./
xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
2024-01-19T13:51:15.518376-00:00 0 [Note] [MY-011825] [Xtrabackup] cd to /home/opc/relpath_restore/
2024-01-19T13:51:15.518447-00:00 0 [Note] [MY-011825] [Xtrabackup] This target seems to be not prepared yet.
2024-01-19T13:51:15.523548-00:00 0 [Note] [MY-011825] [Xtrabackup] xtrabackup_logfile detected: size=8388608, start_lsn=(20333076)
2024-01-19T13:51:15.523969-00:00 0 [Note] [MY-011825] [Xtrabackup] using the following InnoDB configuration for recovery:
2024-01-19T13:51:15.523988-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_data_home_dir = .
2024-01-19T13:51:15.523999-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_data_file_path = ibdata1:12M:autoextend
2024-01-19T13:51:15.524024-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_log_group_home_dir = .
2024-01-19T13:51:15.524034-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_log_files_in_group = 1
2024-01-19T13:51:15.524043-00:00 0 [Note] [MY-011825] [Xtrabackup] innodb_log_file_size = 8388608
2024-01-19T13:51:15.524506-00:00 0 [Warning] [MY-013360] [InnoDB] Plugin keyring_file reported: ''keyring_file plugin' is deprecated and will be removed in a future release. Please use component_keyring_file instead'
2024-01-19T13:51:15.524574-00:00 0 [ERROR] [MY-011370] [InnoDB] Plugin keyring_file reported: 'File '/usr/keyring/keyring' not found (OS errno 2 - No such file or directory)'
2024-01-19T13:51:15.524604-00:00 0 [ERROR] [MY-011355] [InnoDB] Plugin keyring_file reported: 'keyring_file initialization failure. Please check if the keyring_file_data points to readable keyring file or keyring file can be created in the specified location. The keyring_file will stay unusable until correct path to the keyring file gets provided'
2024-01-19T13:51:15.524621-00:00 0 [ERROR] [MY-010202] [Server] Plugin 'keyring_file' init function returned error.
2024-01-19T13:51:15.524698-00:00 0 [Note] [MY-011825] [Xtrabackup] inititialize_service_handles suceeded
2024-01-19T13:51:15Z UTC - mysqld got signal 11 ;
Most likely, you have hit a bug, but this error can also be caused by malfunctioning hardware.
BuildID[sha1]=
Thread pointer: 0x5f22260
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
stack_bottom = 7ffed0918140 thread_stack 0x100000
xtrabackup(my_print_stacktrace(unsigned char const*, unsigned long)+0x41) [0x259c331]
xtrabackup(print_fatal_signal(int)+0x3c3) [0x13a0bf3]
xtrabackup(handle_fatal_signal+0x6d) [0x13a0c6d]
/lib64/libpthread.so.0(+0x12d40) [0x7f1ca4875d40]
xtrabackup(add_plugin_options(std::vector<my_option, std::allocator<my_option> >*, MEM_ROOT*)+0x70) [0x1256220]
xtrabackup() [0xdec882]
xtrabackup() [0xdf89c2]
xtrabackup(main+0x1d65) [0xdaa285]
/lib64/libc.so.6(__libc_start_main+0xe5) [0x7f1ca21fce45]
xtrabackup(_start+0x2e) [0xddfe2e]
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (0): Connection ID (thread ID): 0
Status: NOT_KILLED
Please report a bug at https://jira.percona.com/projects/PXB
</code></pre><p style="margin: 0px 0px 1.2em;">SEGVした。もう少し優しく、keyring_fileを指定していないよって教えてくれても良いとは思う。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">2024-01-19T13:51:15.524574-00:00 0 [ERROR] [MY-011370] [InnoDB] Plugin keyring_file reported: 'File '/usr/keyring/keyring' not found (OS errno 2 - No such file or directory)'
2024-01-19T13:51:15.524604-00:00 0 [ERROR] [MY-011355] [InnoDB] Plugin keyring_file reported: 'keyring_file initialization failure. Please check if the keyring_file_data points to readable keyring file or keyring file can be created in the specified location. The keyring_file will stay unusable until correct path to the keyring file gets provided'
</code></pre><p style="margin: 0px 0px 1.2em;">なんで `/usr/keyring/keyringなんかを見に行こうとしているのかは謎。backup-my.cnfにもそんなパスは書いてない。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">$ cat backup-my.cnf
# This MySQL options file was generated by innobackupex.
# The MySQL server
[mysqld]
innodb_checksum_algorithm=crc32
innodb_log_checksums=1
innodb_data_file_path=ibdata1:12M:autoextend
innodb_log_file_size=50331648
innodb_page_size=16384
innodb_undo_directory=./
innodb_undo_tablespaces=2
server_id=0
innodb_log_checksums=ON
innodb_redo_log_encrypt=OFF
innodb_undo_log_encrypt=OFF
plugin_load=keyring_file.so
server_uuid=d1e91ab6-b6ac-11ee-89b6-0200170399a5
master_key_id=1
</code></pre><p style="margin: 0px 0px 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">--keyring-file-data</code> でもとの場所からコピーしてきたキーを指定するとリストアできている(風味)</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">$ xtrabackup --prepare --target-dir=./ --keyring-file-data=/home/opc/path_to_keyr
2024-01-19T13:53:28.950744-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_log_checksums=1 --innodb_data_file_path=ibdata1:12M:autoextend --innodb_log_file_size=50331648 --innodb_page_size=16384 --innodb_undo_directory=./ --innodb_undo_tablespaces=2 --server-id=0 --innodb_log_checksums=ON --innodb_redo_log_encrypt=0 --innodb_undo_log_encrypt=0
2024-01-19T13:53:28.950826-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --prepare=1 --target-dir=./ --keyring-file-data=~/path_to_keyring
xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
..
2024-01-19T13:53:30.463107-00:00 0 [Note] [MY-012980] [InnoDB] Shutdown completed; log sequence number 20333590
2024-01-19T13:53:30.464894-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'keyring_file'
2024-01-19T13:53:30.464952-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'daemon_keyring_proxy_plugin'
2024-01-19T13:53:30.465292-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!
</code></pre><p style="margin: 0px 0px 1.2em;">しかしこれ、存在しもしないkeyring_fileを指定してもcompleted OKになっちゃうんだけど大丈夫…?</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">$ mkdir dummy
$ cd dummy
$ pzstd -dc ../test.xb.zst | xbstream -x
$ xtrabackup --prepare --target-dir=./ --keyring-file-data=/tmp/dummy
2024-01-19T14:06:18.136573-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --innodb_checksum_algorithm=crc32 --innodb_log_checksums=1 --innodb_data_file_path=ibdata1:12M:autoextend --innodb_log_file_size=50331648 --innodb_page_size=16384 --innodb_undo_directory=./ --innodb_undo_tablespaces=2 --server-id=0 --innodb_log_checksums=ON --innodb_redo_log_encrypt=0 --innodb_undo_log_encrypt=0
2024-01-19T14:06:18.136675-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --prepare=1 --target-dir=./ --keyring-file-data=/tmp/dummy
..
2024-01-19T14:06:19.718228-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'keyring_file'
2024-01-19T14:06:19.718266-00:00 0 [Note] [MY-010733] [Server] Shutting down plugin 'daemon_keyring_proxy_plugin'
2024-01-19T14:06:19.718610-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!
$ ll /tmp/dummy
-rw-r-----. 1 opc opc 0 Jan 19 14:06 /tmp/dummy
</code></pre><p style="margin: 0px 0px 1.2em;">一応起動してみる。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em; white-space: pre;">$ sudo systemctl stop mysqld
$ sudo rm -r /var/lib/mysql*
$ sudo xtrabackup --move-back --target-dir=./
2024-01-19T14:08:12.872319-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized server arguments: --datadir=/var/lib/mysql
2024-01-19T14:08:12.872402-00:00 0 [Note] [MY-011825] [Xtrabackup] recognized client arguments: --move-back=1 --target-dir=./
xtrabackup version 8.0.35-30 based on MySQL server 8.0.35 Linux (x86_64) (revision id: 6beb4b49)
..
2024-01-19T14:08:12.884466-00:00 1 [Note] [MY-011825] [Xtrabackup] Moving ./ibtmp1 to /var/lib/mysql/ibtmp1
2024-01-19T14:08:12.884512-00:00 1 [Note] [MY-011825] [Xtrabackup] Done: Moving file ./ibtmp1 to /var/lib/mysql/ibtmp1
2024-01-19T14:08:12.975071-00:00 0 [Note] [MY-011825] [Xtrabackup] completed OK!
$ sudo chown -R mysql. /var/lib/mysql
$ sudo cp ~/path_to_key /var/lib/mysql/path_to_key ### 本来のkeyring_fileの戻し
$ sudo chown mysql. /var/lib/mysql/path_to_key
$ sudo systemctl start mysqld
$ sudo mysql -e "SHOW CREATE TABLE d1.t1\G SELECT * FROM d1.t1"
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`num` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ENCRYPTION='Y'
+------+
| num |
+------+
| 1 |
| 2 |
| 3 |
+------+
</code></pre><p style="margin: 0px 0px 1.2em;">起動できたし読み込めてしまった? Σ(゚д゚lll)</p>
<p style="margin: 0px 0px 1.2em;">何故…と思ったけど、これは静止点でxtrabackup取ったからInnoDBログの適用が要らなかったから <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">--prepare</code> の時点では別に復号化の必要が全く無かったから存在しないものを指定したとして何も不都合がなかったということのなのかな。</p>
<p style="margin: 0px 0px 1.2em;">ちゃんと何か書き込みしながらの <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">--backup</code> もあとでやる。</p><p style="margin: 0px 0px 1.2em;"><br /></p><p style="margin: 0px 0px 1.2em;">取り敢えず、元のパスが相対だろうとなんだろうと、別途コピーしたkeyring_fileがまともならちゃんと動くはずだということは分かった。</p>
<div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+I1RMO0RSPC9wPjxwPjxicj48L3A+PHA+PGJyPjwvcD48cD48YnI+PC9wPjxwPi0tLS08L3A+
PHA+Jm5ic3A7LSZuYnNwO1vml6XjgIXjga7opprmm7g6IGtleXJpbmdcX2ZpbGVcX2RhdGHjgavn
m7jlr77jg5HjgrnjgpLmjIflrprjgZfjgZ/jgolkYXRhZGly44GL44KJ44Gu55u45a++44OR44K5
44Gn5L2c44KJ44KM44Gm44GX44G+44Gj44GfXShodHRwczovL3lva3UwODI1LmJsb2dzcG90LmNv
bS8yMDI0LzAxL2tleXJpbmdmaWxlZGF0YWRhdGFkaXIuaHRtbCkg44Gu57aa44GNPC9wPjxwPjxi
cj48L3A+PHA+eHRyYWJhY2t1cOOBrua6luWCmTwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4k
IHN1ZG8gZG5mIGluc3RhbGwgLXkgaHR0cHM6Ly9yZXBvLnBlcmNvbmEuY29tL3l1bS9wZXJjb25h
LXJlbGVhc2UtbGF0ZXN0Lm5vYXJjaC5ycG08L3A+PHA+JCZuYnNwO3N1ZG8gcGVyY29uYS1yZWxl
YXNlIGVuYWJsZS1vbmx5IHRvb2xzPC9wPjxwPiQmbmJzcDtzdWRvIGRuZiBpbnN0YWxsIC15IHBl
cmNvbmEteHRyYWJhY2t1cC04MDwvcD48cD5gYGA8L3A+PHA+PGJyPjwvcD48cD7lhYPoqJjkuovj
ga7poIbnlarjgpLjgYvjgaPpo5vjgbDjgZfjgabjgIHlhYPoqJjkuovjga7poIbnlarjgZ3jga4z
44CBIGBrZXlyaW5nX2ZpbGVfZGF0YWAg44KS55u45a++44OR44K544Gn5oyH5a6a44GX44Gf5pmC
44Gu44OQ44OD44Kv44Ki44OD44OX44Go44Oq44K544OI44Ki44CCPC9wPjxwPjxicj48L3A+PHA+
YGBgPC9wPjxwPiQgc3VkbyB4dHJhYmFja3VwIC0tYmFja3VwIC11cm9vdCAtLXN0cmVhbT14YnN0
cmVhbSB8IHB6c3RkIC1jICZndDsgdGVzdC54Yi56c3Q8L3A+PHA+MjAyNC0wMS0xOVQxMzo0ODoz
My4xOTQ3MzgtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIHJlY29nbml6
ZWQgc2VydmVyIGFyZ3VtZW50czogLS1kYXRhZGlyPS92YXIvbGliL215c3FsPC9wPjxwPjIwMjQt
MDEtMTlUMTM6NDg6MzMuMTk0ODE5LTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFj
a3VwXSByZWNvZ25pemVkIGNsaWVudCBhcmd1bWVudHM6IC0tYmFja3VwPTEgLS11c2VyPXJvb3Qg
LS1zdHJlYW09eGJzdHJlYW08L3A+PHA+eHRyYWJhY2t1cCB2ZXJzaW9uIDguMC4zNS0zMCBiYXNl
ZCBvbiBNeVNRTCBzZXJ2ZXIgOC4wLjM1IExpbnV4ICh4ODZfNjQpIChyZXZpc2lvbiBpZDogNmJl
YjRiNDkpPC9wPjxwPjI0MDExOSAxMzo0ODozMyZuYnNwOyB2ZXJzaW9uX2NoZWNrIENvbm5lY3Rp
bmcgdG8gTXlTUUwgc2VydmVyIHdpdGggRFNOICdkYmk6bXlzcWw6O215c3FsX3JlYWRfZGVmYXVs
dF9ncm91cD14dHJhYmFja3VwJyBhcyAncm9vdCcmbmJzcDsgKHVzaW5nIHBhc3N3b3JkOiBOTyku
PC9wPjxwPjI0MDExOSAxMzo0ODozMyZuYnNwOyB2ZXJzaW9uX2NoZWNrIENvbm5lY3RlZCB0byBN
eVNRTCBzZXJ2ZXI8L3A+PHA+MjQwMTE5IDEzOjQ4OjMzJm5ic3A7IHZlcnNpb25fY2hlY2sgRXhl
Y3V0aW5nIGEgdmVyc2lvbiBjaGVjayBhZ2FpbnN0IHRoZSBzZXJ2ZXIuLi48L3A+PHA+MjQwMTE5
IDEzOjQ4OjMzJm5ic3A7IHZlcnNpb25fY2hlY2sgRG9uZS48L3A+PGRpdj4uLjwvZGl2PjxkaXY+
PGRpdj4yMDI0LTAxLTE5VDEzOjQ4OjM2LjAxMDE1Mi0wMDowMCAwIFtOb3RlXSBbTVktMDEwNzMz
XSBbU2VydmVyXSBTaHV0dGluZyBkb3duIHBsdWdpbiAna2V5cmluZ19maWxlJzwvZGl2PjxkaXY+
MjAyNC0wMS0xOVQxMzo0ODozNi4wMTAyMTQtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMDczM10gW1Nl
cnZlcl0gU2h1dHRpbmcgZG93biBwbHVnaW4gJ2RhZW1vbl9rZXlyaW5nX3Byb3h5X3BsdWdpbic8
L2Rpdj48ZGl2PjIwMjQtMDEtMTlUMTM6NDg6MzYuMDEwOTU4LTAwOjAwIDAgW05vdGVdIFtNWS0w
MTE4MjVdIFtYdHJhYmFja3VwXSBjb21wbGV0ZWQgT0shPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj4kIHN1ZG8gY3AgL3Zhci9saWIvbXlzcWwvcGF0aF90b19rZXkgLi8mbmJzcDsgJm5i
c3A7ICMjIyBrZXlyaW5nX2ZpbGXjgpLku5bjga7jgajjgZPjgo3jgavjg5Djg4Pjgq/jgqLjg4Pj
g5fjgZfjgZ/poqjjgac8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+cHJl
cGFyZTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4kIG1rZGlyIHJlbHBh
dGhfcmVzdG9yZTwvZGl2PjxkaXY+JCBjZCByZWxwYXRoX3Jlc3RvcmU8L2Rpdj48ZGl2PiQgcHpz
dGQgLWRjIC4uL3Rlc3QueGIuenN0IHwgeGJzdHJlYW0gLXg8L2Rpdj48ZGl2Pi4uL3Rlc3QueGIu
enN0Jm5ic3A7ICZuYnNwOyAmbmJzcDsgOiA3NDEwNDEwOSBieXRlczwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+PGRpdj4kIHh0cmFiYWNrdXAgLS1wcmVwYXJlIC0tdGFyZ2V0LWRpcj0uLzwvZGl2
PjxkaXY+MjAyNC0wMS0xOVQxMzo1MToxNS41MTgyMzUtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgy
NV0gW1h0cmFiYWNrdXBdIHJlY29nbml6ZWQgc2VydmVyIGFyZ3VtZW50czogLS1pbm5vZGJfY2hl
Y2tzdW1fYWxnb3JpdGhtPWNyYzMyIC0taW5ub2RiX2xvZ19jaGVja3N1bXM9MSAtLWlubm9kYl9k
YXRhX2ZpbGVfcGF0aD1pYmRhdGExOjEyTTphdXRvZXh0ZW5kIC0taW5ub2RiX2xvZ19maWxlX3Np
emU9NTAzMzE2NDggLS1pbm5vZGJfcGFnZV9zaXplPTE2Mzg0IC0taW5ub2RiX3VuZG9fZGlyZWN0
b3J5PS4vIC0taW5ub2RiX3VuZG9fdGFibGVzcGFjZXM9MiAtLXNlcnZlci1pZD0wIC0taW5ub2Ri
X2xvZ19jaGVja3N1bXM9T04gLS1pbm5vZGJfcmVkb19sb2dfZW5jcnlwdD0wIC0taW5ub2RiX3Vu
ZG9fbG9nX2VuY3J5cHQ9MDwvZGl2PjxkaXY+MjAyNC0wMS0xOVQxMzo1MToxNS41MTgzNDUtMDA6
MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIHJlY29nbml6ZWQgY2xpZW50IGFy
Z3VtZW50czogLS1wcmVwYXJlPTEgLS10YXJnZXQtZGlyPS4vPC9kaXY+PGRpdj54dHJhYmFja3Vw
IHZlcnNpb24gOC4wLjM1LTMwIGJhc2VkIG9uIE15U1FMIHNlcnZlciA4LjAuMzUgTGludXggKHg4
Nl82NCkgKHJldmlzaW9uIGlkOiA2YmViNGI0OSk8L2Rpdj48ZGl2PjIwMjQtMDEtMTlUMTM6NTE6
MTUuNTE4Mzc2LTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBjZCB0byAv
aG9tZS9vcGMvcmVscGF0aF9yZXN0b3JlLzwvZGl2PjxkaXY+MjAyNC0wMS0xOVQxMzo1MToxNS41
MTg0NDctMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIFRoaXMgdGFyZ2V0
IHNlZW1zIHRvIGJlIG5vdCBwcmVwYXJlZCB5ZXQuPC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUx
OjE1LjUyMzU0OC0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0geHRyYWJh
Y2t1cF9sb2dmaWxlIGRldGVjdGVkOiBzaXplPTgzODg2MDgsIHN0YXJ0X2xzbj0oMjAzMzMwNzYp
PC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUxOjE1LjUyMzk2OS0wMDowMCAwIFtOb3RlXSBbTVkt
MDExODI1XSBbWHRyYWJhY2t1cF0gdXNpbmcgdGhlIGZvbGxvd2luZyBJbm5vREIgY29uZmlndXJh
dGlvbiBmb3IgcmVjb3Zlcnk6PC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUxOjE1LjUyMzk4OC0w
MDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gaW5ub2RiX2RhdGFfaG9tZV9k
aXIgPSAuPC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUxOjE1LjUyMzk5OS0wMDowMCAwIFtOb3Rl
XSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gaW5ub2RiX2RhdGFfZmlsZV9wYXRoID0gaWJkYXRh
MToxMk06YXV0b2V4dGVuZDwvZGl2PjxkaXY+MjAyNC0wMS0xOVQxMzo1MToxNS41MjQwMjQtMDA6
MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIGlubm9kYl9sb2dfZ3JvdXBfaG9t
ZV9kaXIgPSAuPC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUxOjE1LjUyNDAzNC0wMDowMCAwIFtO
b3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gaW5ub2RiX2xvZ19maWxlc19pbl9ncm91cCA9
IDE8L2Rpdj48ZGl2PjIwMjQtMDEtMTlUMTM6NTE6MTUuNTI0MDQzLTAwOjAwIDAgW05vdGVdIFtN
WS0wMTE4MjVdIFtYdHJhYmFja3VwXSBpbm5vZGJfbG9nX2ZpbGVfc2l6ZSA9IDgzODg2MDg8L2Rp
dj48ZGl2PjIwMjQtMDEtMTlUMTM6NTE6MTUuNTI0NTA2LTAwOjAwIDAgW1dhcm5pbmddIFtNWS0w
MTMzNjBdIFtJbm5vREJdIFBsdWdpbiBrZXlyaW5nX2ZpbGUgcmVwb3J0ZWQ6ICcna2V5cmluZ19m
aWxlIHBsdWdpbicgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJl
IHJlbGVhc2UuIFBsZWFzZSB1c2UgY29tcG9uZW50X2tleXJpbmdfZmlsZSBpbnN0ZWFkJzwvZGl2
PjxkaXY+MjAyNC0wMS0xOVQxMzo1MToxNS41MjQ1NzQtMDA6MDAgMCBbRVJST1JdIFtNWS0wMTEz
NzBdIFtJbm5vREJdIFBsdWdpbiBrZXlyaW5nX2ZpbGUgcmVwb3J0ZWQ6ICdGaWxlICcvdXNyL2tl
eXJpbmcva2V5cmluZycgbm90IGZvdW5kIChPUyBlcnJubyAyIC0gTm8gc3VjaCBmaWxlIG9yIGRp
cmVjdG9yeSknPC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUxOjE1LjUyNDYwNC0wMDowMCAwIFtF
UlJPUl0gW01ZLTAxMTM1NV0gW0lubm9EQl0gUGx1Z2luIGtleXJpbmdfZmlsZSByZXBvcnRlZDog
J2tleXJpbmdfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgaWYgdGhl
IGtleXJpbmdfZmlsZV9kYXRhIHBvaW50cyB0byByZWFkYWJsZSBrZXlyaW5nIGZpbGUgb3Iga2V5
cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkIGluIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uIFRoZSBr
ZXlyaW5nX2ZpbGUgd2lsbCBzdGF5IHVudXNhYmxlIHVudGlsIGNvcnJlY3QgcGF0aCB0byB0aGUg
a2V5cmluZyBmaWxlIGdldHMgcHJvdmlkZWQnPC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUxOjE1
LjUyNDYyMS0wMDowMCAwIFtFUlJPUl0gW01ZLTAxMDIwMl0gW1NlcnZlcl0gUGx1Z2luICdrZXly
aW5nX2ZpbGUnIGluaXQgZnVuY3Rpb24gcmV0dXJuZWQgZXJyb3IuPC9kaXY+PGRpdj4yMDI0LTAx
LTE5VDEzOjUxOjE1LjUyNDY5OC0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1
cF0gaW5pdGl0aWFsaXplX3NlcnZpY2VfaGFuZGxlcyBzdWNlZWRlZDwvZGl2PjxkaXY+MjAyNC0w
MS0xOVQxMzo1MToxNVogVVRDIC0gbXlzcWxkIGdvdCBzaWduYWwgMTEgOzwvZGl2PjxkaXY+TW9z
dCBsaWtlbHksIHlvdSBoYXZlIGhpdCBhIGJ1ZywgYnV0IHRoaXMgZXJyb3IgY2FuIGFsc28gYmUg
Y2F1c2VkIGJ5IG1hbGZ1bmN0aW9uaW5nIGhhcmR3YXJlLjwvZGl2PjxkaXY+QnVpbGRJRFtzaGEx
XT08L2Rpdj48ZGl2PlRocmVhZCBwb2ludGVyOiAweDVmMjIyNjA8L2Rpdj48ZGl2PkF0dGVtcHRp
bmcgYmFja3RyYWNlLiBZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIHRvIGZp
bmQgb3V0PC9kaXY+PGRpdj53aGVyZSBteXNxbGQgZGllZC4gSWYgeW91IHNlZSBubyBtZXNzYWdl
cyBhZnRlciB0aGlzLCBzb21ldGhpbmcgd2VudDwvZGl2PjxkaXY+dGVycmlibHkgd3JvbmcuLi48
L2Rpdj48ZGl2PnN0YWNrX2JvdHRvbSA9IDdmZmVkMDkxODE0MCB0aHJlYWRfc3RhY2sgMHgxMDAw
MDA8L2Rpdj48ZGl2Pnh0cmFiYWNrdXAobXlfcHJpbnRfc3RhY2t0cmFjZSh1bnNpZ25lZCBjaGFy
IGNvbnN0KiwgdW5zaWduZWQgbG9uZykrMHg0MSkgWzB4MjU5YzMzMV08L2Rpdj48ZGl2Pnh0cmFi
YWNrdXAocHJpbnRfZmF0YWxfc2lnbmFsKGludCkrMHgzYzMpIFsweDEzYTBiZjNdPC9kaXY+PGRp
dj54dHJhYmFja3VwKGhhbmRsZV9mYXRhbF9zaWduYWwrMHg2ZCkgWzB4MTNhMGM2ZF08L2Rpdj48
ZGl2Pi9saWI2NC9saWJwdGhyZWFkLnNvLjAoKzB4MTJkNDApIFsweDdmMWNhNDg3NWQ0MF08L2Rp
dj48ZGl2Pnh0cmFiYWNrdXAoYWRkX3BsdWdpbl9vcHRpb25zKHN0ZDo6dmVjdG9yJmx0O215X29w
dGlvbiwgc3RkOjphbGxvY2F0b3ImbHQ7bXlfb3B0aW9uJmd0OyAmZ3Q7KiwgTUVNX1JPT1QqKSsw
eDcwKSBbMHgxMjU2MjIwXTwvZGl2PjxkaXY+eHRyYWJhY2t1cCgpIFsweGRlYzg4Ml08L2Rpdj48
ZGl2Pnh0cmFiYWNrdXAoKSBbMHhkZjg5YzJdPC9kaXY+PGRpdj54dHJhYmFja3VwKG1haW4rMHgx
ZDY1KSBbMHhkYWEyODVdPC9kaXY+PGRpdj4vbGliNjQvbGliYy5zby42KF9fbGliY19zdGFydF9t
YWluKzB4ZTUpIFsweDdmMWNhMjFmY2U0NV08L2Rpdj48ZGl2Pnh0cmFiYWNrdXAoX3N0YXJ0KzB4
MmUpIFsweGRkZmUyZV08L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRyeWluZyB0byBnZXQgc29t
ZSB2YXJpYWJsZXMuPC9kaXY+PGRpdj5Tb21lIHBvaW50ZXJzIG1heSBiZSBpbnZhbGlkIGFuZCBj
YXVzZSB0aGUgZHVtcCB0byBhYm9ydC48L2Rpdj48ZGl2PlF1ZXJ5ICgwKTogQ29ubmVjdGlvbiBJ
RCAodGhyZWFkIElEKTogMDwvZGl2PjxkaXY+U3RhdHVzOiBOT1RfS0lMTEVEPC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5QbGVhc2UgcmVwb3J0IGEgYnVnIGF0IGh0dHBz
Oi8vamlyYS5wZXJjb25hLmNvbS9wcm9qZWN0cy9QWEI8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+U0VHVuOBl+OBn+OAguOCguOBhuWwkeOBl+WEquOBl+OBj+OA
gWtleXJpbmdfZmlsZeOCkuaMh+WumuOBl+OBpuOBhOOBquOBhOOCiOOBo+OBpuaVmeOBiOOBpuOB
j+OCjOOBpuOCguiJr+OBhOOBqOOBr+aAneOBhuOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48ZGl2PjIwMjQtMDEtMTlUMTM6NTE6MTUuNTI0NTc0LTAwOjAwIDAgW0VS
Uk9SXSBbTVktMDExMzcwXSBbSW5ub0RCXSBQbHVnaW4ga2V5cmluZ19maWxlIHJlcG9ydGVkOiAn
RmlsZSAnL3Vzci9rZXlyaW5nL2tleXJpbmcnIG5vdCBmb3VuZCAoT1MgZXJybm8gMiAtIE5vIHN1
Y2ggZmlsZSBvciBkaXJlY3RvcnkpJzwvZGl2PjxkaXY+MjAyNC0wMS0xOVQxMzo1MToxNS41MjQ2
MDQtMDA6MDAgMCBbRVJST1JdIFtNWS0wMTEzNTVdIFtJbm5vREJdIFBsdWdpbiBrZXlyaW5nX2Zp
bGUgcmVwb3J0ZWQ6ICdrZXlyaW5nX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4gUGxlYXNl
IGNoZWNrIGlmIHRoZSBrZXlyaW5nX2ZpbGVfZGF0YSBwb2ludHMgdG8gcmVhZGFibGUga2V5cmlu
ZyBmaWxlIG9yIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZCBpbiB0aGUgc3BlY2lmaWVkIGxv
Y2F0aW9uLiBUaGUga2V5cmluZ19maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0
IHBhdGggdG8gdGhlIGtleXJpbmcgZmlsZSBnZXRzIHByb3ZpZGVkJzwvZGl2PjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgarjgpPjgacgYC91c3Iva2V5cmluZy9rZXly
aW5n44Gq44KT44GL44KS6KaL44Gr6KGM44GT44GG44Go44GX44Gm44GE44KL44Gu44GL44Gv6KyO
44CCYmFja3VwLW15LmNuZuOBq+OCguOBneOCk+OBquODkeOCueOBr+abuOOBhOOBpuOBquOBhOOA
gjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2PiQgY2F0IGJhY2t1
cC1teS5jbmY8L2Rpdj48ZGl2PiMgVGhpcyBNeVNRTCBvcHRpb25zIGZpbGUgd2FzIGdlbmVyYXRl
ZCBieSBpbm5vYmFja3VwZXguPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4jIFRoZSBNeVNRTCBz
ZXJ2ZXI8L2Rpdj48ZGl2PltteXNxbGRdPC9kaXY+PGRpdj5pbm5vZGJfY2hlY2tzdW1fYWxnb3Jp
dGhtPWNyYzMyPC9kaXY+PGRpdj5pbm5vZGJfbG9nX2NoZWNrc3Vtcz0xPC9kaXY+PGRpdj5pbm5v
ZGJfZGF0YV9maWxlX3BhdGg9aWJkYXRhMToxMk06YXV0b2V4dGVuZDwvZGl2PjxkaXY+aW5ub2Ri
X2xvZ19maWxlX3NpemU9NTAzMzE2NDg8L2Rpdj48ZGl2Pmlubm9kYl9wYWdlX3NpemU9MTYzODQ8
L2Rpdj48ZGl2Pmlubm9kYl91bmRvX2RpcmVjdG9yeT0uLzwvZGl2PjxkaXY+aW5ub2RiX3VuZG9f
dGFibGVzcGFjZXM9MjwvZGl2PjxkaXY+c2VydmVyX2lkPTA8L2Rpdj48ZGl2Pmlubm9kYl9sb2df
Y2hlY2tzdW1zPU9OPC9kaXY+PGRpdj5pbm5vZGJfcmVkb19sb2dfZW5jcnlwdD1PRkY8L2Rpdj48
ZGl2Pmlubm9kYl91bmRvX2xvZ19lbmNyeXB0PU9GRjwvZGl2PjxkaXY+cGx1Z2luX2xvYWQ9a2V5
cmluZ19maWxlLnNvPC9kaXY+PGRpdj5zZXJ2ZXJfdXVpZD1kMWU5MWFiNi1iNmFjLTExZWUtODli
Ni0wMjAwMTcwMzk5YTU8L2Rpdj48ZGl2Pm1hc3Rlcl9rZXlfaWQ9MTwvZGl2PjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gLS1rZXlyaW5nLWZpbGUtZGF0YWAg44Gn44KC
44Go44Gu5aC05omA44GL44KJ44Kz44OU44O844GX44Gm44GN44Gf44Kt44O844KS5oyH5a6a44GZ
44KL44Go44Oq44K544OI44Ki44Gn44GN44Gm44GE44KL77yI6aKo5ZGz77yJPC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCB4dHJhYmFja3VwIC0tcHJlcGFyZSAt
LXRhcmdldC1kaXI9Li8gLS1rZXlyaW5nLWZpbGUtZGF0YT0vaG9tZS9vcGMvcGF0aF90b19rZXly
PC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUzOjI4Ljk1MDc0NC0wMDowMCAwIFtOb3RlXSBbTVkt
MDExODI1XSBbWHRyYWJhY2t1cF0gcmVjb2duaXplZCBzZXJ2ZXIgYXJndW1lbnRzOiAtLWlubm9k
Yl9jaGVja3N1bV9hbGdvcml0aG09Y3JjMzIgLS1pbm5vZGJfbG9nX2NoZWNrc3Vtcz0xIC0taW5u
b2RiX2RhdGFfZmlsZV9wYXRoPWliZGF0YTE6MTJNOmF1dG9leHRlbmQgLS1pbm5vZGJfbG9nX2Zp
bGVfc2l6ZT01MDMzMTY0OCAtLWlubm9kYl9wYWdlX3NpemU9MTYzODQgLS1pbm5vZGJfdW5kb19k
aXJlY3Rvcnk9Li8gLS1pbm5vZGJfdW5kb190YWJsZXNwYWNlcz0yIC0tc2VydmVyLWlkPTAgLS1p
bm5vZGJfbG9nX2NoZWNrc3Vtcz1PTiAtLWlubm9kYl9yZWRvX2xvZ19lbmNyeXB0PTAgLS1pbm5v
ZGJfdW5kb19sb2dfZW5jcnlwdD0wPC9kaXY+PGRpdj4yMDI0LTAxLTE5VDEzOjUzOjI4Ljk1MDgy
Ni0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gcmVjb2duaXplZCBjbGll
bnQgYXJndW1lbnRzOiAtLXByZXBhcmU9MSAtLXRhcmdldC1kaXI9Li8gLS1rZXlyaW5nLWZpbGUt
ZGF0YT1+L3BhdGhfdG9fa2V5cmluZzwvZGl2PjxkaXY+eHRyYWJhY2t1cCB2ZXJzaW9uIDguMC4z
NS0zMCBiYXNlZCBvbiBNeVNRTCBzZXJ2ZXIgOC4wLjM1IExpbnV4ICh4ODZfNjQpIChyZXZpc2lv
biBpZDogNmJlYjRiNDkpPC9kaXY+PC9kaXY+PGRpdj4uLjwvZGl2PjxkaXY+PGRpdj4yMDI0LTAx
LTE5VDEzOjUzOjMwLjQ2MzEwNy0wMDowMCAwIFtOb3RlXSBbTVktMDEyOTgwXSBbSW5ub0RCXSBT
aHV0ZG93biBjb21wbGV0ZWQ7IGxvZyBzZXF1ZW5jZSBudW1iZXIgMjAzMzM1OTA8L2Rpdj48ZGl2
PjIwMjQtMDEtMTlUMTM6NTM6MzAuNDY0ODk0LTAwOjAwIDAgW05vdGVdIFtNWS0wMTA3MzNdIFtT
ZXJ2ZXJdIFNodXR0aW5nIGRvd24gcGx1Z2luICdrZXlyaW5nX2ZpbGUnPC9kaXY+PGRpdj4yMDI0
LTAxLTE5VDEzOjUzOjMwLjQ2NDk1Mi0wMDowMCAwIFtOb3RlXSBbTVktMDEwNzMzXSBbU2VydmVy
XSBTaHV0dGluZyBkb3duIHBsdWdpbiAnZGFlbW9uX2tleXJpbmdfcHJveHlfcGx1Z2luJzwvZGl2
PjxkaXY+MjAyNC0wMS0xOVQxMzo1MzozMC40NjUyOTItMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgy
NV0gW1h0cmFiYWNrdXBdIGNvbXBsZXRlZCBPSyE8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+44GX44GL44GX44GT44KM44CB5a2Y5Zyo44GX44KC44GX44Gq44GE
a2V5cmluZ19maWxl44KS5oyH5a6a44GX44Gm44KCY29tcGxldGVkIE9L44Gr44Gq44Gj44Gh44KD
44GG44KT44Gg44GR44Gp5aSn5LiI5aSr4oCm77yfPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5g
YGA8L2Rpdj48ZGl2PiQgbWtkaXIgZHVtbXk8L2Rpdj48ZGl2PiQgY2QgZHVtbXk8L2Rpdj48ZGl2
PiQmbmJzcDtwenN0ZCAtZGMgLi4vdGVzdC54Yi56c3QgfCB4YnN0cmVhbSAteDwvZGl2PjxkaXY+
JCB4dHJhYmFja3VwIC0tcHJlcGFyZSAtLXRhcmdldC1kaXI9Li8gLS1rZXlyaW5nLWZpbGUtZGF0
YT0vdG1wL2R1bW15PC9kaXY+PGRpdj4yMDI0LTAxLTE5VDE0OjA2OjE4LjEzNjU3My0wMDowMCAw
IFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gcmVjb2duaXplZCBzZXJ2ZXIgYXJndW1l
bnRzOiAtLWlubm9kYl9jaGVja3N1bV9hbGdvcml0aG09Y3JjMzIgLS1pbm5vZGJfbG9nX2NoZWNr
c3Vtcz0xIC0taW5ub2RiX2RhdGFfZmlsZV9wYXRoPWliZGF0YTE6MTJNOmF1dG9leHRlbmQgLS1p
bm5vZGJfbG9nX2ZpbGVfc2l6ZT01MDMzMTY0OCAtLWlubm9kYl9wYWdlX3NpemU9MTYzODQgLS1p
bm5vZGJfdW5kb19kaXJlY3Rvcnk9Li8gLS1pbm5vZGJfdW5kb190YWJsZXNwYWNlcz0yIC0tc2Vy
dmVyLWlkPTAgLS1pbm5vZGJfbG9nX2NoZWNrc3Vtcz1PTiAtLWlubm9kYl9yZWRvX2xvZ19lbmNy
eXB0PTAgLS1pbm5vZGJfdW5kb19sb2dfZW5jcnlwdD0wPC9kaXY+PGRpdj4yMDI0LTAxLTE5VDE0
OjA2OjE4LjEzNjY3NS0wMDowMCAwIFtOb3RlXSBbTVktMDExODI1XSBbWHRyYWJhY2t1cF0gcmVj
b2duaXplZCBjbGllbnQgYXJndW1lbnRzOiAtLXByZXBhcmU9MSAtLXRhcmdldC1kaXI9Li8gLS1r
ZXlyaW5nLWZpbGUtZGF0YT0vdG1wL2R1bW15PC9kaXY+PGRpdj4uLjwvZGl2PjxkaXY+PGRpdj4y
MDI0LTAxLTE5VDE0OjA2OjE5LjcxODIyOC0wMDowMCAwIFtOb3RlXSBbTVktMDEwNzMzXSBbU2Vy
dmVyXSBTaHV0dGluZyBkb3duIHBsdWdpbiAna2V5cmluZ19maWxlJzwvZGl2PjxkaXY+MjAyNC0w
MS0xOVQxNDowNjoxOS43MTgyNjYtMDA6MDAgMCBbTm90ZV0gW01ZLTAxMDczM10gW1NlcnZlcl0g
U2h1dHRpbmcgZG93biBwbHVnaW4gJ2RhZW1vbl9rZXlyaW5nX3Byb3h5X3BsdWdpbic8L2Rpdj48
ZGl2PjIwMjQtMDEtMTlUMTQ6MDY6MTkuNzE4NjEwLTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVd
IFtYdHJhYmFja3VwXSBjb21wbGV0ZWQgT0shPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj48ZGl2PiQgbGwgL3RtcC9kdW1teTwvZGl2PjxkaXY+LXJ3LXItLS0tLS4gMSBvcGMgb3BjIDAg
SmFuIDE5IDE0OjA2IC90bXAvZHVtbXk8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+5LiA5b+c6LW35YuV44GX44Gm44G/44KL44CCPC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBzdWRvIHN5c3RlbWN0bCBzdG9wIG15c3FsZDwv
ZGl2PjxkaXY+JCBzdWRvIHJtIC1yIC92YXIvbGliL215c3FsKjwvZGl2PjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+PGRpdj4kIHN1ZG8geHRyYWJhY2t1cCAtLW1vdmUtYmFjayAtLXRhcmdldC1k
aXI9Li88L2Rpdj48ZGl2PjIwMjQtMDEtMTlUMTQ6MDg6MTIuODcyMzE5LTAwOjAwIDAgW05vdGVd
IFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSByZWNvZ25pemVkIHNlcnZlciBhcmd1bWVudHM6IC0t
ZGF0YWRpcj0vdmFyL2xpYi9teXNxbDwvZGl2PjxkaXY+MjAyNC0wMS0xOVQxNDowODoxMi44NzI0
MDItMDA6MDAgMCBbTm90ZV0gW01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIHJlY29nbml6ZWQgY2xp
ZW50IGFyZ3VtZW50czogLS1tb3ZlLWJhY2s9MSAtLXRhcmdldC1kaXI9Li88L2Rpdj48ZGl2Pnh0
cmFiYWNrdXAgdmVyc2lvbiA4LjAuMzUtMzAgYmFzZWQgb24gTXlTUUwgc2VydmVyIDguMC4zNSBM
aW51eCAoeDg2XzY0KSAocmV2aXNpb24gaWQ6IDZiZWI0YjQ5KTwvZGl2PjwvZGl2PjxkaXY+Li48
L2Rpdj48ZGl2PjxkaXY+MjAyNC0wMS0xOVQxNDowODoxMi44ODQ0NjYtMDA6MDAgMSBbTm90ZV0g
W01ZLTAxMTgyNV0gW1h0cmFiYWNrdXBdIE1vdmluZyAuL2lidG1wMSB0byAvdmFyL2xpYi9teXNx
bC9pYnRtcDE8L2Rpdj48ZGl2PjIwMjQtMDEtMTlUMTQ6MDg6MTIuODg0NTEyLTAwOjAwIDEgW05v
dGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBEb25lOiBNb3ZpbmcgZmlsZSAuL2lidG1wMSB0
byAvdmFyL2xpYi9teXNxbC9pYnRtcDE8L2Rpdj48ZGl2PjIwMjQtMDEtMTlUMTQ6MDg6MTIuOTc1
MDcxLTAwOjAwIDAgW05vdGVdIFtNWS0wMTE4MjVdIFtYdHJhYmFja3VwXSBjb21wbGV0ZWQgT0sh
PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4kJm5ic3A7c3VkbyBjaG93biAtUiBteXNx
bC4gL3Zhci9saWIvbXlzcWw8L2Rpdj48ZGl2PiQmbmJzcDtzdWRvIGNwIH4vcGF0aF90b19rZXkg
L3Zhci9saWIvbXlzcWwvcGF0aF90b19rZXkmbmJzcDsgJm5ic3A7IyMjIOacrOadpeOBrmtleXJp
bmdfZmlsZeOBruaIu+OBlzwvZGl2PjxkaXY+JCBzdWRvIGNob3duIG15c3FsLiAvdmFyL2xpYi9t
eXNxbC9wYXRoX3RvX2tleTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+JCBzdWRvIHN5c3RlbWN0
bCBzdGFydCBteXNxbGQ8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+JCBzdWRvIG15c3Fs
IC1lICJTSE9XIENSRUFURSBUQUJMRSBkMS50MVxHIFNFTEVDVCAqIEZST00gZDEudDEiPC9kaXY+
PGRpdj4qKioqKioqKioqKioqKioqKioqKioqKioqKiogMS4gcm93ICoqKioqKioqKioqKioqKioq
KioqKioqKioqKjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7VGFibGU6IHQx
PC9kaXY+PGRpdj5DcmVhdGUgVGFibGU6IENSRUFURSBUQUJMRSBgdDFgICg8L2Rpdj48ZGl2PiZu
YnNwOyBgbnVtYCBpbnQgREVGQVVMVCBOVUxMPC9kaXY+PGRpdj4pIEVOR0lORT1Jbm5vREIgREVG
QVVMVCBDSEFSU0VUPXV0ZjhtYjQgQ09MTEFURT11dGY4bWI0XzA5MDBfYWlfY2kgRU5DUllQVElP
Tj0nWSc8L2Rpdj48ZGl2PistLS0tLS0rPC9kaXY+PGRpdj58IG51bSZuYnNwOyB8PC9kaXY+PGRp
dj4rLS0tLS0tKzwvZGl2PjxkaXY+fCZuYnNwOyAmbmJzcDsgMSB8PC9kaXY+PGRpdj58Jm5ic3A7
ICZuYnNwOyAyIHw8L2Rpdj48ZGl2PnwmbmJzcDsgJm5ic3A7IDMgfDwvZGl2PjxkaXY+Ky0tLS0t
LSs8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+6LW35YuV44Gn
44GN44Gf44GX6Kqt44G/6L6844KB44Gm44GX44G+44Gj44Gf77yfIM6jKO++n9C0776fbGxsKTwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+5L2V5pWF4oCm44Go5oCd44Gj44Gf44GR44Gp44CB44GT
44KM44Gv6Z2Z5q2i54K544GneHRyYWJhY2t1cOWPluOBo+OBn+OBi+OCiUlubm9EQuODreOCsOOB
rumBqeeUqOOBjOimgeOCieOBquOBi+OBo+OBn+OBi+OCiSBgLS1wcmVwYXJlYCDjga7mmYLngrnj
gafjga/liKXjgavlvqnlj7fljJbjga7lv4XopoHjgYzlhajjgY/nhKHjgYvjgaPjgZ/jgYvjgonl
rZjlnKjjgZfjgarjgYTjgoLjga7jgpLmjIflrprjgZfjgZ/jgajjgZfjgabkvZXjgoLkuI3pg73l
kIjjgYzjgarjgYvjgaPjgZ/jgajjgYTjgYbjgZPjgajjga7jgarjga7jgYvjgarjgII8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PuOBoeOCg+OCk+OBqOS9leOBi+abuOOBjei+vOOBv+OBl+OBquOB
jOOCieOBriBgLS1iYWNrdXBgIOOCguOBguOBqOOBp+OChOOCi+OAgjwvZGl2Pg=="></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-60998957123488265942024-01-19T16:08:00.058+09:002024-01-19T23:01:26.845+09:00keyring_file_dataに相対パスを指定したらdatadirからの相対パスで作られてしまった<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/6099895712348826594"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;"><br />TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/keyring-system-variables.html#sysvar_keyring_file_data" target="_blank">keyring_file_data</a> に絶対パスを指定したら面倒なことになった</li>
<li style="margin: 0.5em 0px;">相対パスを指定するとdatadirの真下に作りやがる</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em;">準備。 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">keyring_file_data</code> を指定しない場合はコンパイル時デフォルト (rpmは <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">/var/lib/mysql-keyring</code> 、 Standaloneは <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">basedir/keyring</code> ) に作る。</p>
<pre style="line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em;"><span style="font-family: Consolas, Inconsolata, Courier, monospace;"><span style="font-size: 0.85em;">$ sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
$ sudo dnf module -y disable mysql
$ sudo dnf install -y mysql-community-server
$ sudo vim /etc/my.cnf
..
user=mysql
early_plugin_load=keyring_file.so
$ sudo mysqld --initialize-insecure
$ sudo systemctl start mysqld
$ sudo mysql -e "CREATE DATABASE d1; CREATE TABLE d1.t1 (num int) ENCRYPTION='Y'; INSERT INTO d1.t1 VALUES(1), (2), (3)"
$ sudo ls -l /var/lib/mysql-keyring/keyring
</span><span style="font-size: 13.6px;">-rw-r-----. 1 mysql mysql 187 Jan 19 09:10 /var/lib/mysql-keyring/keyring</span><span style="font-size: 0.85em;">
</span></span></code></pre><p style="margin: 0px 0px 1.2em;">絶対パスに書き換えてみる。そのままだと自動生成に失敗するので先にディレクトリを作っておく。 ディレクトリには少なくとも700のパーミッションがないとkeyring_fileを掴むのに失敗して、MySQLは起動するけど ERROR 3185 (HY000) at line 1: Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully. のエラーを吐かれる</p>
<pre style="line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em;"><span style="font-family: Consolas, Inconsolata, Courier, monospace;"><span style="font-size: 0.85em;">$ sudo systemctl stop mysqld
$ sudo dnf remove -y mysql-community-server
$ sudo rm -r /var/lib/mysql*
$ sudo dnf install -y mysql-community-server
$ sudo vim /etc/my.cnf
..
user=mysql
early_plugin_load=keyring_file.so
keyring_file_data=/mysql/mysql-secret
$ sudo mkdir -m 700 /mysql
$ sudo chown -R mysql. /mysql
$ sudo mysqld --initialize-insecure
$ sudo systemctl start mysqld
$ sudo mysql -e "CREATE DATABASE d1; CREATE TABLE d1.t1 (num int) ENCRYPTION='Y'; INSERT INTO d1.t1 VALUES(1), (2), (3)"
</span><span style="font-size: 13.6px;">$ sudo ls -l /mysql/mysql-secret
-rw-r-----. 1 mysql mysql 187 Jan 19 09:23 /mysql/mysql-secret
</span><span style="font-size: 0.85em;">
</span></span></code></pre><p style="margin: 0px 0px 1.2em;">相対パスに書き換えてみる。</p>
<pre style="line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: block; margin: 0px 0.15em; overflow: auto; padding: 0px 0.3em;"><span style="font-family: Consolas, Inconsolata, Courier, monospace;"><span style="font-size: 0.85em;">$ sudo systemctl stop mysqld
$ sudo dnf remove -y mysql-community-server
$ sudo rm -r /var/lib/mysql* /mysql
$ sudo dnf install -y mysql-community-server
$ sudo vim /etc/my.cnf
..
user=mysql
early_plugin_load=keyring_file.so
keyring_file_data=./path_to_key
$ sudo mysqld --initialize-insecure
$ sudo systemctl start mysqld
</span></span><span style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 13.6px;">$ sudo mysql -e "CREATE DATABASE d1; CREATE TABLE d1.t1 (num int) ENCRYPTION='Y'; INSERT INTO d1.t1 VALUES(1), (2), (3)"</span><span style="font-family: Consolas, Inconsolata, Courier, monospace;"><span style="font-size: 0.85em;">
$ sudo ls -l /var/lib/mysql/path_to_key
</span><span style="font-size: 13.6px;">-rw-r-----. 1 mysql mysql 187 Jan 19 09:26 /var/lib/mysql/path_to_key
</span><span style="font-size: 0.85em;">
</span></span></code></pre><p style="margin: 0px 0px 1.2em;">Σ(゚д゚lll) えっ、datadirからの相対パスだと解釈しちゃうの…?</p>
<div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+I1RMO0RSPC9wPjxwPi0gW2tleXJpbmdfZmlsZV9kYXRhXShodHRwczovL2Rldi5teXNxbC5j
b20vZG9jL3JlZm1hbi84LjAvZW4va2V5cmluZy1zeXN0ZW0tdmFyaWFibGVzLmh0bWwjc3lzdmFy
X2tleXJpbmdfZmlsZV9kYXRhKSDjgavntbblr77jg5HjgrnjgpLmjIflrprjgZfjgZ/jgonpnaLl
gJLjgarjgZPjgajjgavjgarjgaPjgZ88L3A+PHA+LSDnm7jlr77jg5HjgrnjgpLmjIflrprjgZnj
govjgahkYXRhZGly44Gu55yf5LiL44Gr5L2c44KK44KE44GM44KLPC9wPjxwPjxicj48L3A+PHA+
LS0tLTwvcD48cD48YnI+PC9wPjxwPua6luWCmeOAgiBga2V5cmluZ19maWxlX2RhdGFgIOOCkuaM
h+WumuOBl+OBquOBhOWgtOWQiOOBr+OCs+ODs+ODkeOCpOODq+aZguODh+ODleOCqeODq+ODiCAo
cnBt44GvIGAvdmFyL2xpYi9teXNxbC1rZXlyaW5nYCDjgIEgU3RhbmRhbG9uZeOBryBgYmFzZWRp
ci9rZXlyaW5nYCApIOOBq+S9nOOCi+OAgjwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIHN1
ZG8gZG5mIGluc3RhbGwgLXkgaHR0cHM6Ly9kZXYubXlzcWwuY29tL2dldC9teXNxbDgwLWNvbW11
bml0eS1yZWxlYXNlLWVsOC05Lm5vYXJjaC5ycG08L3A+PHA+JCZuYnNwO3N1ZG8gZG5mIG1vZHVs
ZSAteSBkaXNhYmxlIG15c3FsPC9wPjxwPiQmbmJzcDtzdWRvIGRuZiBpbnN0YWxsIC15IG15c3Fs
LWNvbW11bml0eS1zZXJ2ZXI8L3A+PHA+JCBzdWRvIHZpbSAvZXRjL215LmNuZjwvcD48cD4uLjwv
cD48cD51c2VyPW15c3FsPC9wPjxwPmVhcmx5X3BsdWdpbl9sb2FkPWtleXJpbmdfZmlsZS5zbzwv
cD48cD48YnI+PC9wPjxwPiQgc3VkbyBteXNxbGQgLS1pbml0aWFsaXplLWluc2VjdXJlPC9wPjxk
aXY+JCZuYnNwO3N1ZG8gc3lzdGVtY3RsIHN0YXJ0IG15c3FsZDwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+PGRpdj4kIHN1ZG8gbHMgLWwgL3Zhci9saWIvbXlzcWwta2V5cmluZy9rZXlyaW5nPC9k
aXY+PGRpdj4tcnctci0tLS0tLiAxIG15c3FsIG15c3FsIDAgSmFuIDE5IDA2OjUzIC92YXIvbGli
L215c3FsLWtleXJpbmcva2V5cmluZzwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj7ntbblr77jg5Hjgrnjgavmm7jjgY3mj5vjgYjjgabjgb/jgovjgILjgZ3jga7j
gb7jgb7jgaDjgajoh6rli5XnlJ/miJDjgavlpLHmlZfjgZnjgovjga7jgaflhYjjgavjg5XjgqHj
gqTjg6vjgaDjgZHkvZzjgaPjgabjgYrjgY/jgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBg
YDwvZGl2PjxkaXY+JCBzdWRvIHZpbSAvZXRjL215LmNuZjwvZGl2PjxkaXY+Li48L2Rpdj48ZGl2
PjxkaXY+dXNlcj1teXNxbDwvZGl2PjxkaXY+ZWFybHlfcGx1Z2luX2xvYWQ9a2V5cmluZ19maWxl
LnNvPC9kaXY+PGRpdj5rZXlyaW5nX2ZpbGVfZGF0YT0vdmFyL2xpYi9teXNxbC1zZWNyZXQ8L2Rp
dj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiQgc3VkbyB0b3VjaCAvdmFyL2xpYi9teXNxbC1z
ZWNyZXQ8L2Rpdj48ZGl2PiQgc3VkbyBjaG93biBteXNxbC4gL3Zhci9saWIvbXlzcWwtc2VjcmV0
PC9kaXY+PGRpdj4kIHN1ZG8gY2htb2QgNjAwIC92YXIvbGliL215c3FsLXNlY3JldDwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+JCZuYnNwO3N1ZG8gc3lzdGVtY3RsIHJlc3RhcnQgbXlzcWxkPC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2PiQgc3VkbyBscyAtbCAvdmFyL2xpYi9teXNxbC1z
ZWNyZXQ8L2Rpdj48ZGl2Pi1ydy0tLS0tLS0uIDEgbXlzcWwgbXlzcWwgMCBKYW4gMTkgMDY6NTcg
L3Zhci9saWIvbXlzcWwtc2VjcmV0PC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48
L2Rpdj48ZGl2PuebuOWvvuODkeOCueOBq+abuOOBjeaPm+OBiOOBpuOBv+OCi+OAgjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2PiQgc3VkbyB2aW0gL2V0Yy9teS5j
bmY8L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48ZGl2PjxkaXY+dXNlcj1teXNxbDwvZGl2PjxkaXY+
ZWFybHlfcGx1Z2luX2xvYWQ9a2V5cmluZ19maWxlLnNvPC9kaXY+PGRpdj5rZXlyaW5nX2ZpbGVf
ZGF0YT0uL3BhdGhfdG9fa2V5PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj4kIHN1ZG8gcm0gL3Zhci9saWIvbXlzcWwtc2VjcmV0Jm5ic3A7ICZuYnNwOyAjIyMg5raI
44GX44Gm44GK44GL44Gq44GE44Go5L2/44Gj44Gm44Gq44GP44Gm44KC44Kz44Kk44OE44KS5o60
44KT44Gn5raI44Gd44GG44Go44GX44Gm6Lui44GR44KLPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj4kIHN1ZG8gc3lzdGVtY3RsIHJlc3RhcnQgbXlzcWxkPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj4kIHN1ZG8gbHMgLWwgL3Zhci9saWIvbXlzcWwvcGF0aF90b19rZXk8L2Rpdj48ZGl2Pi1ydy1y
LS0tLS0uIDEgbXlzcWwgbXlzcWwgMCBKYW4gMTkgMDc6MDUgL3Zhci9saWIvbXlzcWwvcGF0aF90
b19rZXk8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+zqMo776f0LTvvp9s
bGwpIGRhdGFkaXLjgYvjgonjga7nm7jlr77jg5HjgrnjgaDjgajop6Pph4jjgZfjgaHjgoPjgYbj
ga7igKbvvJ88L2Rpdj4="></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-14723048486833097432024-01-12T20:52:00.000+09:002024-01-12T20:52:37.070+09:00MySQL ShellのloadDumpが MySQL Error 1449 (HY000): The user specified as a definer ('xxx'@'%') does not exist で転けたり転けなかったりする<p> </p><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">DEFINERが存在しないSQL SECURITY DEFINERなビューと、そのビューを使ったビューがある時にMySQL ShellのloadDumpが転けることも転けないこともある<ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;">mysqldumpからのリストアは100%転ける</li></ul></li><li style="margin: 0.5em 0px;">転けるのが正しい気がするけど何故か転けずに完了してしまうのが気になったのでこのエントリ</li></ul><hr /><p style="margin: 0px 0px 1.2em !important;">参考: <a href="https://yoku0825.blogspot.com/2024/01/mysql2view.html" target="_blank">日々の覚書: MySQLの論理バックアップにおける2段階のViewのリストア</a></p><p style="margin: 0px 0px 1.2em !important;">下準備。<br />ビューのDEFINERになっているアカウントをDROPして、「DEFINERが存在しないビュー」「そのビューを使ったビュー」を作る。<br />(先にアカウントを作ってからDROPしないと、「DEFINERが存在しないビュー」までは無理矢理作れるけれども「そのビューを使ったビュー」が作れない)</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">CREATE USER dummy;
CREATE DATABASE d1;
CREATE definer=dummy VIEW d1.v1 AS SELECT 1;
CREATE VIEW d1.v2 AS SELECT * FROM d1.v1;
DROP USER dummy;
SHOW WARNINGS;
</code></pre><p style="margin: 0px 0px 1.2em !important;">DROP USERした時にちゃんとワーニングは出る。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">mysql> SHOW WARNINGS;
+---------+------+----------------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------------+
| Warning | 4005 | User 'dummy'@'%' is referenced as a definer account in a view. |
+---------+------+----------------------------------------------------------------+
1 row in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">比較のためにmysqldumpも取っておく。ちなみに <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">--single-transaction</code> を省くと個別にLOCK TABLEしようとして転ける。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysqldump -h172.17.0.2 -B d1 --single-transaction > /tmp/d1.sql
</code></pre><p style="margin: 0px 0px 1.2em !important;">このダンプをリストアしようとすると必ず転ける。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysql -h172.17.0.3 -vv < /tmp/d1.sql
..
--------------
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`%` SQL SECURITY DEFINER */
/*!50001 VIEW `v2` AS select `v1`.`1` AS `1` from `v1` */
--------------
ERROR 1449 (HY000) at line 85: The user specified as a definer ('dummy'@'%') does not exist
Bye
</code></pre><p style="margin: 0px 0px 1.2em !important;">MySQL ShellでdumpInstanceする。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysqlsh -h172.17.0.2 -- util dumpInstance '/tmp/dump'
Please provide the password for 'root@172.17.0.2':
Save password for 'root@172.17.0.2'? [Y]es/[N]o/Ne[v]er (default No):
Acquiring global read lock
Global read lock acquired
Initializing - done
1 out of 5 schemas will be dumped and within them 0 tables, 2 views.
3 out of 6 users will be dumped.
Gathering information - done
All transactions have been started
Locking instance for backup
Global read lock has been released
Writing global DDL files
Writing users DDL
Running data dump using 4 threads.
NOTE: Progress information uses estimated values and may not be accurate.
Writing schema metadata - done
Writing DDL - done
Writing table metadata - done
Starting data dump
?% (0 rows / ?), 0.00 rows/s, 0.00 B/s uncompressed, 0.00 B/s compressed
Dump duration: 00:00:00s
Total duration: 00:00:00s
Schemas dumped: 1
Tables dumped: 0
Uncompressed data size: 0 bytes
Compressed data size: 0 bytes
Compression ratio: 0.0
Rows written: 0
Bytes written: 0 bytes
Average uncompressed throughput: 0.00 B/s
Average compressed throughput: 0.00 B/s
</code></pre><p style="margin: 0px 0px 1.2em !important;">この時、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">/tmp/dump/d1.json</code> に入っている views の順番も多少関係する。v1が先に来ていれば転ける確率の方が高くなり、v2が先に来ていれば転けない可能性の方が高かった。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ cat /tmp/dump/d1.json
{
"schema": "d1",
"includesDdl": true,
"includesViewsDdl": true,
"includesData": true,
"tables": [],
"views": [
"v2",
"v1"
],
"events": [],
"functions": [],
"procedures": [],
"basenames": {
"v2": "d1@v2",
"v1": "d1@v1"
}
}
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">--threads</code> を大きめにすると転ける可能性が高くなる。</p><p style="margin: 0px 0px 1.2em !important;">転けない時はこんな感じ。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysqlsh -h172.17.0.4 -- util loadDump '/tmp/dump' --threads=10
Please provide the password for 'root@172.17.0.2':
Save password for 'root@172.17.0.2'? [Y]es/[N]o/Ne[v]er (default No):
Loading DDL and Data from '/tmp/dump' using 10 threads.
Opening dump...
Target is MySQL 8.0.35. Dump was produced from MySQL 8.0.35
Scanning metadata - done
Checking for pre-existing objects...
Executing common preamble SQL
Executing DDL - done
Executing view DDL - done
Executing common postamble SQL
Starting data load
?% (0 bytes / ?), 0.00 B/s, 0 / 0 tables done
Recreating indexes - done
No data loaded.
0 warnings were reported during the load.
</code></pre><p style="margin: 0px 0px 1.2em !important;">転ける時はこんな感じ。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysqlsh -h172.17.0.5 -- util loadDump '/tmp/dump' --threads=20
Please provide the password for 'root@172.17.0.2':
Save password for 'root@172.17.0.2'? [Y]es/[N]o/Ne[v]er (default No):
Loading DDL and Data from '/tmp/dump' using 20 threads.
Opening dump...
Target is MySQL 8.0.35. Dump was produced from MySQL 8.0.35
Scanning metadata - done
Checking for pre-existing objects...
Executing common preamble SQL
Executing DDL - done
ERROR: Error executing DDL script for view `d1`.`v2`: MySQL Error 1449 (HY000): The user specified as a definer ('dummy'@'%') does not exist: /*!50001 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`%` SQL SECURITY DEFINER VIEW `v2` AS select `v1`.`1` AS `1` from `v1` */
Executing view DDL - done
ERROR: The user specified as a definer ('dummy'@'%') does not exist
</code></pre><p style="margin: 0px 0px 1.2em !important;">ビューを2段階リストアしているので、mysqldumpとかで直列にやった場合はこうなる。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">CREATE VIEW v1 AS SELECT 1 AS 1;
CREATE VIEW v2 AS SELECT 1 AS 1;
DROP VIEW v1;
CREATE DEFINER=dummy VIEW v1 AS SELECT 1;
DROP VIEW v2;
CREATE VIEW v2 AS SELECT * FROM v1; -- ここでER_NO_SUCH_USER(=1449)で転ける
</code></pre><p style="margin: 0px 0px 1.2em !important;">しかしパラレルにリストアすると、まれに v2 と v1 のタイミングがひっくり返る。MySQL Shellはd1.jsonのviewsに順番に読もうとする(んだと思う)ので、v2が先に来ているとよくこの順番になるんではないか。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">CREATE VIEW v1 AS SELECT 1 AS 1;
CREATE VIEW v2 AS SELECT 1 AS 1;
DROP VIEW v2;
CREATE VIEW v2 AS SELECT * FROM v1; -- この時点ではv1は不正なビューではないので転けない
DROP VIEW v1;
CREATE DEFINER=dummy VIEW v1 AS SELECT 1; -- 不正なビューだがワーニング止まりなので転けはしない
</code></pre><p style="margin: 0px 0px 1.2em !important;">なので、転けたり転けなかったりするという違いが生まれている模様。<br />たぶん、動作としては常に転けるのが正しいとは思う。</p><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+I1RMO0RSPC9wPjxwPi0gREVGSU5FUuOBjOWtmOWcqOOBl+OBquOBhFNRTCBTRUNVUklUWSBE
RUZJTkVS44Gq44OT44Ol44O844Go44CB44Gd44Gu44OT44Ol44O844KS5L2/44Gj44Gf44OT44Ol
44O844GM44GC44KL5pmC44GrTXlTUUwgU2hlbGzjga5sb2FkRHVtcOOBjOi7ouOBkeOCi+OBk+OB
qOOCgui7ouOBkeOBquOBhOOBk+OBqOOCguOBguOCizwvcD48cD4mbmJzcDsgLSBteXNxbGR1bXDj
gYvjgonjga7jg6rjgrnjg4jjgqLjga8xMDAl6Lui44GR44KLPC9wPjxwPi0g6Lui44GR44KL44Gu
44GM5q2j44GX44GE5rCX44GM44GZ44KL44GR44Gp5L2V5pWF44GL6Lui44GR44Ga44Gr5a6M5LqG
44GX44Gm44GX44G+44GG44Gu44GM5rCX44Gr44Gq44Gj44Gf44Gu44Gn44GT44Gu44Ko44Oz44OI
44OqPC9wPjxwPjxicj48L3A+PHA+LS0tLTwvcD48cD48YnI+PC9wPjxwPuWPguiAgzombmJzcDtb
5pel44CF44Gu6Kaa5pu4OiBNeVNRTOOBruirlueQhuODkOODg+OCr+OCouODg+ODl+OBq+OBiuOB
keOCizLmrrXpmo7jga5WaWV344Gu44Oq44K544OI44KiXShodHRwczovL3lva3UwODI1LmJsb2dz
cG90LmNvbS8yMDI0LzAxL215c3FsMnZpZXcuaHRtbCk8L3A+PHA+PGJyPjwvcD48cD7kuIvmupbl
gpnjgII8L3A+PHA+44OT44Ol44O844GuREVGSU5FUuOBq+OBquOBo+OBpuOBhOOCi+OCouOCq+OC
puODs+ODiOOCkkRST1DjgZfjgabjgIHjgIxERUZJTkVS44GM5a2Y5Zyo44GX44Gq44GE44OT44Ol
44O844CN44CM44Gd44Gu44OT44Ol44O844KS5L2/44Gj44Gf44OT44Ol44O844CN44KS5L2c44KL
44CCPC9wPjxwPu+8iOWFiOOBq+OCouOCq+OCpuODs+ODiOOCkuS9nOOBo+OBpuOBi+OCiURST1Dj
gZfjgarjgYTjgajjgIHjgIxERUZJTkVS44GM5a2Y5Zyo44GX44Gq44GE44OT44Ol44O844CN44G+
44Gn44Gv54Sh55CG55+i55CG5L2c44KM44KL44GR44KM44Gp44KC44CM44Gd44Gu44OT44Ol44O8
44KS5L2/44Gj44Gf44OT44Ol44O844CN44GM5L2c44KM44Gq44GE77yJPC9wPjxwPjxicj48L3A+
PHA+YGBgPC9wPjxwPkNSRUFURSBVU0VSIGR1bW15OzwvcD48cD5DUkVBVEUgREFUQUJBU0UgZDE7
PC9wPjxwPkNSRUFURSBkZWZpbmVyPWR1bW15IFZJRVcgZDEudjEgQVMgU0VMRUNUIDE7PC9wPjxw
PkNSRUFURSBWSUVXIGQxLnYyIEFTIFNFTEVDVCAqIEZST00gZDEudjE7PC9wPjxwPkRST1AgVVNF
UiBkdW1teTs8L3A+PHA+U0hPVyBXQVJOSU5HUzs8L3A+PHA+YGBgPC9wPjxwPjxicj48L3A+PHA+
RFJPUCBVU0VS44GX44Gf5pmC44Gr44Gh44KD44KT44Go44Ov44O844OL44Oz44Kw44Gv5Ye644KL
44CCPC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPm15c3FsJmd0OyBTSE9XIFdBUk5JTkdTOzwv
cD48cD4rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48cD58IExldmVsJm5ic3A7ICZuYnNw
O3wgQ29kZSB8IE1lc3NhZ2UmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDwvcD48cD4rLS0tLS0t
LS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48cD58IFdhcm5pbmcgfCA0MDA1IHwgVXNlciAnZHVtbXkn
QCclJyBpcyByZWZlcmVuY2VkIGFzIGEgZGVmaW5lciBhY2NvdW50IGluIGEgdmlldy4gfDwvcD48
cD4rLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48cD4xIHJvdyBpbiBzZXQgKDAuMDAgc2Vj
KTwvcD48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+5q+U6LyD44Gu44Gf44KB44Gr
bXlzcWxkdW1w44KC5Y+W44Gj44Gm44GK44GP44CC44Gh44Gq44G/44GrIGAtLXNpbmdsZS10cmFu
c2FjdGlvbmAg44KS55yB44GP44Go5YCL5Yil44GrTE9DSyBUQUJMReOBl+OCiOOBhuOBqOOBl+OB
pui7ouOBkeOCi+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2
PiQgbXlzcWxkdW1wIC1oMTcyLjE3LjAuMiAtQiBkMSAtLXNpbmdsZS10cmFuc2FjdGlvbiAmZ3Q7
IC90bXAvZDEuc3FsPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
PuOBk+OBruODgOODs+ODl+OCkuODquOCueODiOOCouOBl+OCiOOBhuOBqOOBmeOCi+OBqOW/heOB
mui7ouOBkeOCi+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2
PiQgbXlzcWwgLWgxNzIuMTcuMC4zIC12diAmbHQ7IC90bXAvZDEuc3FsPC9kaXY+PGRpdj4uLjwv
ZGl2PjxkaXY+PGRpdj4tLS0tLS0tLS0tLS0tLTwvZGl2PjxkaXY+LyohNTAwMDEgQ1JFQVRFIEFM
R09SSVRITT1VTkRFRklORUQgKi88L2Rpdj48ZGl2Pi8qITUwMDEzIERFRklORVI9YHJvb3RgQGAl
YCBTUUwgU0VDVVJJVFkgREVGSU5FUiAqLzwvZGl2PjxkaXY+LyohNTAwMDEgVklFVyBgdjJgIEFT
IHNlbGVjdCBgdjFgLmAxYCBBUyBgMWAgZnJvbSBgdjFgICovPC9kaXY+PGRpdj4tLS0tLS0tLS0t
LS0tLTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+RVJST1IgMTQ0OSAoSFkwMDApIGF0IGxpbmUg
ODU6IFRoZSB1c2VyIHNwZWNpZmllZCBhcyBhIGRlZmluZXIgKCdkdW1teSdAJyUnKSBkb2VzIG5v
dCBleGlzdDwvZGl2PjxkaXY+QnllPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2Pk15U1FMIFNoZWxs44GnZHVtcEluc3RhbmNl44GZ44KL44CCPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBteXNxbHNoIC1oMTcyLjE3
LjAuMiAtLSB1dGlsIGR1bXBJbnN0YW5jZSAnL3RtcC9kdW1wJzwvZGl2PjxkaXY+UGxlYXNlIHBy
b3ZpZGUgdGhlIHBhc3N3b3JkIGZvciAncm9vdEAxNzIuMTcuMC4yJzo8L2Rpdj48ZGl2PlNhdmUg
cGFzc3dvcmQgZm9yICdyb290QDE3Mi4xNy4wLjInPyBbWV1lcy9bTl1vL05lW3ZdZXIgKGRlZmF1
bHQgTm8pOjwvZGl2PjxkaXY+QWNxdWlyaW5nIGdsb2JhbCByZWFkIGxvY2s8L2Rpdj48ZGl2Pkds
b2JhbCByZWFkIGxvY2sgYWNxdWlyZWQ8L2Rpdj48ZGl2PkluaXRpYWxpemluZyAtIGRvbmU8L2Rp
dj48ZGl2PjEgb3V0IG9mIDUgc2NoZW1hcyB3aWxsIGJlIGR1bXBlZCBhbmQgd2l0aGluIHRoZW0g
MCB0YWJsZXMsIDIgdmlld3MuPC9kaXY+PGRpdj4zIG91dCBvZiA2IHVzZXJzIHdpbGwgYmUgZHVt
cGVkLjwvZGl2PjxkaXY+R2F0aGVyaW5nIGluZm9ybWF0aW9uIC0gZG9uZTwvZGl2PjxkaXY+QWxs
IHRyYW5zYWN0aW9ucyBoYXZlIGJlZW4gc3RhcnRlZDwvZGl2PjxkaXY+TG9ja2luZyBpbnN0YW5j
ZSBmb3IgYmFja3VwPC9kaXY+PGRpdj5HbG9iYWwgcmVhZCBsb2NrIGhhcyBiZWVuIHJlbGVhc2Vk
PC9kaXY+PGRpdj5Xcml0aW5nIGdsb2JhbCBEREwgZmlsZXM8L2Rpdj48ZGl2PldyaXRpbmcgdXNl
cnMgRERMPC9kaXY+PGRpdj5SdW5uaW5nIGRhdGEgZHVtcCB1c2luZyA0IHRocmVhZHMuPC9kaXY+
PGRpdj5OT1RFOiBQcm9ncmVzcyBpbmZvcm1hdGlvbiB1c2VzIGVzdGltYXRlZCB2YWx1ZXMgYW5k
IG1heSBub3QgYmUgYWNjdXJhdGUuPC9kaXY+PGRpdj5Xcml0aW5nIHNjaGVtYSBtZXRhZGF0YSAt
IGRvbmU8L2Rpdj48ZGl2PldyaXRpbmcgRERMIC0gZG9uZTwvZGl2PjxkaXY+V3JpdGluZyB0YWJs
ZSBtZXRhZGF0YSAtIGRvbmU8L2Rpdj48ZGl2PlN0YXJ0aW5nIGRhdGEgZHVtcDwvZGl2PjxkaXY+
PyUgKDAgcm93cyAvID8pLCAwLjAwIHJvd3MvcywgMC4wMCBCL3MgdW5jb21wcmVzc2VkLCAwLjAw
IEIvcyBjb21wcmVzc2VkPC9kaXY+PGRpdj5EdW1wIGR1cmF0aW9uOiAwMDowMDowMHM8L2Rpdj48
ZGl2PlRvdGFsIGR1cmF0aW9uOiAwMDowMDowMHM8L2Rpdj48ZGl2PlNjaGVtYXMgZHVtcGVkOiAx
PC9kaXY+PGRpdj5UYWJsZXMgZHVtcGVkOiAwPC9kaXY+PGRpdj5VbmNvbXByZXNzZWQgZGF0YSBz
aXplOiAwIGJ5dGVzPC9kaXY+PGRpdj5Db21wcmVzc2VkIGRhdGEgc2l6ZTogMCBieXRlczwvZGl2
PjxkaXY+Q29tcHJlc3Npb24gcmF0aW86IDAuMDwvZGl2PjxkaXY+Um93cyB3cml0dGVuOiAwPC9k
aXY+PGRpdj5CeXRlcyB3cml0dGVuOiAwIGJ5dGVzPC9kaXY+PGRpdj5BdmVyYWdlIHVuY29tcHJl
c3NlZCB0aHJvdWdocHV0OiAwLjAwIEIvczwvZGl2PjxkaXY+QXZlcmFnZSBjb21wcmVzc2VkIHRo
cm91Z2hwdXQ6IDAuMDAgQi9zPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2PuOBk+OBruaZguOAgSBgL3RtcC9kdW1wL2QxLmpzb25gIOOBq+WFpeOBo+OBpuOBhOOC
iyB2aWV3cyDjga7poIbnlarjgoLlpJrlsJHplqLkv4LjgZnjgovjgIJ2MeOBjOWFiOOBq+adpeOB
puOBhOOCjOOBsOi7ouOBkeOCi+eiuueOh+OBruaWueOBjOmrmOOBj+OBquOCiuOAgXYy44GM5YWI
44Gr5p2l44Gm44GE44KM44Gw6Lui44GR44Gq44GE5Y+v6IO95oCn44Gu5pa544GM6auY44GL44Gj
44Gf44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBjYXQg
L3RtcC9kdW1wL2QxLmpzb248L2Rpdj48ZGl2Pns8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgInNj
aGVtYSI6ICJkMSIsPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICJpbmNsdWRlc0RkbCI6IHRydWUs
PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICJpbmNsdWRlc1ZpZXdzRGRsIjogdHJ1ZSw8L2Rpdj48
ZGl2PiZuYnNwOyAmbmJzcDsgImluY2x1ZGVzRGF0YSI6IHRydWUsPC9kaXY+PGRpdj4mbmJzcDsg
Jm5ic3A7ICJ0YWJsZXMiOiBbXSw8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgInZpZXdzIjogWzwv
ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICJ2MiIsPC9kaXY+PGRpdj4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgInYxIjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBdLDwv
ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAiZXZlbnRzIjogW10sPC9kaXY+PGRpdj4mbmJzcDsgJm5i
c3A7ICJmdW5jdGlvbnMiOiBbXSw8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgInByb2NlZHVyZXMi
OiBbXSw8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgImJhc2VuYW1lcyI6IHs8L2Rpdj48ZGl2PiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAidjIiOiAiZDFAdjIiLDwvZGl2PjxkaXY+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICJ2MSI6ICJkMUB2MSI8L2Rpdj48ZGl2PiZuYnNwOyAmbmJz
cDsgfTwvZGl2PjxkaXY+fTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5gLS10aHJlYWRzYCDjgpLlpKfjgY3jgoHjgavjgZnjgovjgajou6LjgZHjgovlj6/og73m
gKfjgYzpq5jjgY/jgarjgovjgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pui7ouOBkeOBquOB
hOaZguOBr+OBk+OCk+OBquaEn+OBmOOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9k
aXY+PGRpdj48ZGl2PiQgbXlzcWxzaCAtaDE3Mi4xNy4wLjQgLS0gdXRpbCBsb2FkRHVtcCAnL3Rt
cC9kdW1wJyAtLXRocmVhZHM9MTA8L2Rpdj48ZGl2PlBsZWFzZSBwcm92aWRlIHRoZSBwYXNzd29y
ZCBmb3IgJ3Jvb3RAMTcyLjE3LjAuMic6PC9kaXY+PGRpdj5TYXZlIHBhc3N3b3JkIGZvciAncm9v
dEAxNzIuMTcuMC4yJz8gW1ldZXMvW05dby9OZVt2XWVyIChkZWZhdWx0IE5vKTo8L2Rpdj48ZGl2
PkxvYWRpbmcgRERMIGFuZCBEYXRhIGZyb20gJy90bXAvZHVtcCcgdXNpbmcgMTAgdGhyZWFkcy48
L2Rpdj48ZGl2Pk9wZW5pbmcgZHVtcC4uLjwvZGl2PjxkaXY+VGFyZ2V0IGlzIE15U1FMIDguMC4z
NS4gRHVtcCB3YXMgcHJvZHVjZWQgZnJvbSBNeVNRTCA4LjAuMzU8L2Rpdj48ZGl2PlNjYW5uaW5n
IG1ldGFkYXRhIC0gZG9uZTwvZGl2PjxkaXY+Q2hlY2tpbmcgZm9yIHByZS1leGlzdGluZyBvYmpl
Y3RzLi4uPC9kaXY+PGRpdj5FeGVjdXRpbmcgY29tbW9uIHByZWFtYmxlIFNRTDwvZGl2PjxkaXY+
RXhlY3V0aW5nIERETCAtIGRvbmU8L2Rpdj48ZGl2PkV4ZWN1dGluZyB2aWV3IERETCAtIGRvbmU8
L2Rpdj48ZGl2PkV4ZWN1dGluZyBjb21tb24gcG9zdGFtYmxlIFNRTDwvZGl2PjxkaXY+U3RhcnRp
bmcgZGF0YSBsb2FkPC9kaXY+PGRpdj4/JSAoMCBieXRlcyAvID8pLCAwLjAwIEIvcywgMCAvIDAg
dGFibGVzIGRvbmU8L2Rpdj48ZGl2PlJlY3JlYXRpbmcgaW5kZXhlcyAtIGRvbmU8L2Rpdj48ZGl2
Pk5vIGRhdGEgbG9hZGVkLjwvZGl2PjxkaXY+MCB3YXJuaW5ncyB3ZXJlIHJlcG9ydGVkIGR1cmlu
ZyB0aGUgbG9hZC48L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
6Lui44GR44KL5pmC44Gv44GT44KT44Gq5oSf44GY44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj5gYGA8L2Rpdj48ZGl2PiQgbXlzcWxzaCAtaDE3Mi4xNy4wLjUgLS0gdXRpbCBsb2FkRHVtcCAn
L3RtcC9kdW1wJyAtLXRocmVhZHM9MjA8L2Rpdj48ZGl2PlBsZWFzZSBwcm92aWRlIHRoZSBwYXNz
d29yZCBmb3IgJ3Jvb3RAMTcyLjE3LjAuMic6PC9kaXY+PGRpdj5TYXZlIHBhc3N3b3JkIGZvciAn
cm9vdEAxNzIuMTcuMC4yJz8gW1ldZXMvW05dby9OZVt2XWVyIChkZWZhdWx0IE5vKTo8L2Rpdj48
ZGl2PkxvYWRpbmcgRERMIGFuZCBEYXRhIGZyb20gJy90bXAvZHVtcCcgdXNpbmcgMjAgdGhyZWFk
cy48L2Rpdj48ZGl2Pk9wZW5pbmcgZHVtcC4uLjwvZGl2PjxkaXY+VGFyZ2V0IGlzIE15U1FMIDgu
MC4zNS4gRHVtcCB3YXMgcHJvZHVjZWQgZnJvbSBNeVNRTCA4LjAuMzU8L2Rpdj48ZGl2PlNjYW5u
aW5nIG1ldGFkYXRhIC0gZG9uZTwvZGl2PjxkaXY+Q2hlY2tpbmcgZm9yIHByZS1leGlzdGluZyBv
YmplY3RzLi4uPC9kaXY+PGRpdj5FeGVjdXRpbmcgY29tbW9uIHByZWFtYmxlIFNRTDwvZGl2Pjxk
aXY+RXhlY3V0aW5nIERETCAtIGRvbmU8L2Rpdj48ZGl2PkVSUk9SOiBFcnJvciBleGVjdXRpbmcg
RERMIHNjcmlwdCBmb3IgdmlldyBgZDFgLmB2MmA6IE15U1FMIEVycm9yIDE0NDkgKEhZMDAwKTog
VGhlIHVzZXIgc3BlY2lmaWVkIGFzIGEgZGVmaW5lciAoJ2R1bW15J0AnJScpIGRvZXMgbm90IGV4
aXN0OiAvKiE1MDAwMSBDUkVBVEUgQUxHT1JJVEhNPVVOREVGSU5FRCBERUZJTkVSPWByb290YEBg
JWAgU1FMIFNFQ1VSSVRZIERFRklORVIgVklFVyBgdjJgIEFTIHNlbGVjdCBgdjFgLmAxYCBBUyBg
MWAgZnJvbSBgdjFgICovPC9kaXY+PGRpdj5FeGVjdXRpbmcgdmlldyBEREwgLSBkb25lPC9kaXY+
PGRpdj5FUlJPUjogVGhlIHVzZXIgc3BlY2lmaWVkIGFzIGEgZGVmaW5lciAoJ2R1bW15J0AnJScp
IGRvZXMgbm90IGV4aXN0PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOD
k+ODpeODvOOCkjLmrrXpmo7jg6rjgrnjg4jjgqLjgZfjgabjgYTjgovjga7jgafjgIFteXNxbGR1
bXDjgajjgYvjgafnm7TliJfjgavjgoTjgaPjgZ/loLTlkIjjga/jgZPjgYbjgarjgovjgII8L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+Q1JFQVRFIFZJRVcgdjEgQVMgU0VM
RUNUIDEgQVMgMTs8L2Rpdj48ZGl2PkNSRUFURSBWSUVXIHYyIEFTIFNFTEVDVCAxIEFTIDE7PC9k
aXY+PGRpdj5EUk9QIFZJRVcgdjE7PC9kaXY+PGRpdj5DUkVBVEUgREVGSU5FUj1kdW1teSBWSUVX
IHYxIEFTIFNFTEVDVCAxOzwvZGl2PjxkaXY+RFJPUCBWSUVXIHYyOzwvZGl2PjxkaXY+Q1JFQVRF
IFZJRVcgdjIgQVMgU0VMRUNUICogRlJPTSB2MTsmbmJzcDsgJm5ic3A7IC0tIOOBk+OBk+OBp0VS
X05PX1NVQ0hfVVNFUig9MTQ0OSnjgafou6LjgZHjgos8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+
PGJyPjwvZGl2PjxkaXY+44GX44GL44GX44OR44Op44Os44Or44Gr44Oq44K544OI44Ki44GZ44KL
44Go44CB44G+44KM44GrIHYyIOOBqCB2MSDjga7jgr/jgqTjg5/jg7PjgrDjgYzjgbLjgaPjgY/j
gorov5TjgovjgIJNeVNRTCBTaGVsbOOBr2QxLmpzb27jga52aWV3c+OBq+mghueVquOBq+iqreOC
guOBhuOBqOOBmeOCi++8iOOCk+OBoOOBqOaAneOBhu+8ieOBruOBp+OAgXYy44GM5YWI44Gr5p2l
44Gm44GE44KL44Go44KI44GP44GT44Gu6aCG55Wq44Gr44Gq44KL44KT44Gn44Gv44Gq44GE44GL
44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+Q1JFQVRFIFZJ
RVcgdjEgQVMgU0VMRUNUIDEgQVMgMTs8L2Rpdj48ZGl2PkNSRUFURSBWSUVXIHYyIEFTIFNFTEVD
VCAxIEFTIDE7PC9kaXY+PGRpdj48ZGl2PjxkaXY+RFJPUCBWSUVXIHYyOzwvZGl2PjxkaXY+Q1JF
QVRFIFZJRVcgdjIgQVMgU0VMRUNUICogRlJPTSB2MTsmbmJzcDsgJm5ic3A7IC0tIOOBk+OBruaZ
gueCueOBp+OBr3Yx44Gv5LiN5q2j44Gq44OT44Ol44O844Gn44Gv44Gq44GE44Gu44Gn6Lui44GR
44Gq44GEPC9kaXY+PC9kaXY+PGRpdj5EUk9QIFZJRVcgdjE7PC9kaXY+PC9kaXY+PGRpdj5DUkVB
VEUgREVGSU5FUj1kdW1teSBWSUVXIHYxIEFTIFNFTEVDVCAxOyZuYnNwOyAtLSDkuI3mraPjgarj
g5Pjg6Xjg7zjgaDjgYzjg6/jg7zjg4vjg7PjgrDmraLjgb7jgorjgarjga7jgafou6LjgZHjga/j
gZfjgarjgYQ8L2Rpdj48ZGl2PmBgYDwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+44Gq44Gu44Gn44CB6Lui44GR44Gf44KK6Lui44GR44Gq44GL44Gj44Gf44KK
44GZ44KL44Go44GE44GG6YGV44GE44GM55Sf44G+44KM44Gm44GE44KL5qih5qeY44CCPC9kaXY+
PGRpdj7jgZ/jgbbjgpPjgIHli5XkvZzjgajjgZfjgabjga/luLjjgavou6LjgZHjgovjga7jgYzm
raPjgZfjgYTjgajjga/mgJ3jgYbjgII8L2Rpdj4="></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-68332894736014595682024-01-09T14:57:00.001+09:002024-01-09T14:57:04.470+09:00MySQLの論理バックアップにおける2段階のViewのリストア<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/6833289473601459568" markdown-here-wrapper-content-modified="true"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;"><ul style="font-size: medium; font-weight: 400; margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">mysqldump</code> とかが <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE VIEW v1 AS SELECT 1 AS num, 1 AS val</code> とかいう一見VIEW定義となんの関係もない <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE VIEW</code> 文を吐く理由</li></ul><hr style="font-size: medium; font-weight: 400;" /><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">mysqldumpは単にアルファベット順にテーブルやビューの定義を取得するので、シンプルに直接 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE VIEW</code> を書いてしまうと順番によってはリストアに転ける。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">mysql80 38> CREATE TABLE t1 (num serial, val varchar(32));
Query OK, 0 rows affected (0.04 sec)
mysql80 38> INSERT INTO t1 VALUES (1, 'one'), (2, 'two');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql80 38> CREATE VIEW v1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.01 sec)
mysql80 38> CREATE VIEW a_v1 AS SELECT val FROM v1 WHERE num = 1;
Query OK, 0 rows affected (0.02 sec)
mysql80 38> SHOW TABLES;
+--------------+
| Tables_in_d2 |
+--------------+
| a_v1 | <-- ビューv1を参照しているのでアルファベット順にリストアすると転ける
| t1 |
| v1 |
+--------------+
3 rows in set (0.00 sec)
mysql80 38> use d3
Database changed
mysql80 38> CREATE VIEW a_v1 AS SELECT val FROM v1 WHERE num = 1;
ERROR 1146 (42S02): Table 'd3.v1' doesn't exist
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">なのでこれを避けるために、</p><ul style="font-size: medium; font-weight: 400; margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">Base Tableの <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE TABLE</code> と ダミーの <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE VIEW</code> を流す</li><li style="margin: 0.5em 0px;">↑が流れ終わった後に本物の <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE VIEW</code> を流す<br />という2ステップで実行している。</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysqldump80 d2
..
--
-- Temporary view structure for view `a_v1`
--
DROP TABLE IF EXISTS `a_v1`;
/*!50001 DROP VIEW IF EXISTS `a_v1`*/;
/*!50001 CREATE VIEW `a_v1` AS SELECT
1 AS `val`*/;
--
-- Table structure for table `t1`
--
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
`num` bigint unsigned NOT NULL AUTO_INCREMENT,
`val` varchar(32) DEFAULT NULL,
UNIQUE KEY `num` (`num`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- Temporary view structure for view `v1`
--
DROP TABLE IF EXISTS `v1`;
/*!50001 DROP VIEW IF EXISTS `v1`*/;
SET @saved_cs_client = @@character_set_client;
/*!50001 CREATE VIEW `v1` AS SELECT
1 AS `num`,
1 AS `val`*/;
--
-- Final view structure for view `a_v1`
--
/*!50001 DROP VIEW IF EXISTS `a_v1`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `a_v1` AS select `v1`.`val` AS `val` from `v1` where (`v1`.`num` = 1) */;
--
-- Final view structure for view `v1`
--
/*!50001 DROP VIEW IF EXISTS `v1`*/;
/*!50001 CREATE ALGORITHM=UNDEFINED */
/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */
/*!50001 VIEW `v1` AS select `t1`.`num` AS `num`,`t1`.`val` AS `val` from `t1` */;
..
</code></pre><ol style="font-size: medium; font-weight: 400; margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">最初のTemporary view structureの時点では <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE VIEW</code> では固定値を列挙するだけなのでビューのビュー ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">a_v1</code> )でも依存関係は問題はなくリストアできて</li><li style="margin: 0.5em 0px;">Final view structureの時点でダミーを <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">DROP VIEW</code> して本来の定義を <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">CREATE VIEW</code> することで復元できる、たとえ順番が入れ違って <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">a_v1</code> が先にリストアされても、カラムの定義まではダミーの方で作成済みなのでビューのビューでもリストアできる</li></ol><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">という仕組み。</p><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">意外とよくできてる。</p><div style="font-size: 0em; font-weight: 400; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+Jm5ic3A7I1RMO0RSPC9wPjxwPi0gYG15c3FsZHVtcGAg44Go44GL44GMIGBDUkVBVEUgVklF
VyB2MSBBUyBTRUxFQ1QgMSBBUyBudW0sIDEgQVMgdmFsYCDjgajjgYvjgYTjgYbkuIDopotWSUVX
5a6a576p44Go44Gq44KT44Gu6Zai5L+C44KC44Gq44GEIGBDUkVBVEUgVklFV2Ag5paH44KS5ZCQ
44GP55CG55SxPC9wPjxwPjxicj48L3A+PHA+LS0tLTwvcD48cD48YnI+PC9wPjxwPm15c3FsZHVt
cOOBr+WNmOOBq+OCouODq+ODleOCoeODmeODg+ODiOmghuOBq+ODhuODvOODluODq+OChOODk+OD
peODvOOBruWumue+qeOCkuWPluW+l+OBmeOCi+OBruOBp+OAgeOCt+ODs+ODl+ODq+OBq+ebtOaO
pSBgQ1JFQVRFIFZJRVdgIOOCkuabuOOBhOOBpuOBl+OBvuOBhuOBqOmghueVquOBq+OCiOOBo+OB
puOBr+ODquOCueODiOOCouOBq+i7ouOBkeOCi+OAgjwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48
cD5teXNxbDgwIDM4Jmd0OyBDUkVBVEUgVEFCTEUgdDEgKG51bSBzZXJpYWwsIHZhbCB2YXJjaGFy
KDMyKSk7PC9wPjxwPlF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDQgc2VjKTwvcD48cD48
YnI+PC9wPjxwPm15c3FsODAgMzgmZ3Q7IElOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMSwgJ29uZScp
LCAoMiwgJ3R3bycpOzwvcD48cD5RdWVyeSBPSywgMiByb3dzIGFmZmVjdGVkICgwLjAxIHNlYyk8
L3A+PHA+UmVjb3JkczogMiZuYnNwOyBEdXBsaWNhdGVzOiAwJm5ic3A7IFdhcm5pbmdzOiAwPC9w
PjxwPjxicj48L3A+PHA+bXlzcWw4MCAzOCZndDsgQ1JFQVRFIFZJRVcgdjEgQVMgU0VMRUNUICog
RlJPTSB0MTs8L3A+PHA+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMSBzZWMpPC9wPjxw
Pjxicj48L3A+PHA+bXlzcWw4MCAzOCZndDsgQ1JFQVRFIFZJRVcgYV92MSBBUyBTRUxFQ1QgdmFs
IEZST00gdjEgV0hFUkUgbnVtID0gMTs8L3A+PHA+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAo
MC4wMiBzZWMpPC9wPjxwPjxicj48L3A+PHA+bXlzcWw4MCAzOCZndDsgU0hPVyBUQUJMRVM7PC9w
PjxwPistLS0tLS0tLS0tLS0tLSs8L3A+PHA+fCBUYWJsZXNfaW5fZDIgfDwvcD48cD4rLS0tLS0t
LS0tLS0tLS0rPC9wPjxwPnwgYV92MSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZsdDstLSDj
g5Pjg6Xjg7x2MeOCkuWPgueFp+OBl+OBpuOBhOOCi+OBruOBp+OCouODq+ODleOCoeODmeODg+OD
iOmghuOBq+ODquOCueODiOOCouOBmeOCi+OBqOi7ouOBkeOCizwvcD48cD58IHQxJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgdjEmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+Ky0tLS0tLS0tLS0tLS0tKzwvcD48
cD4zIHJvd3MgaW4gc2V0ICgwLjAwIHNlYyk8L3A+PHA+PGJyPjwvcD48cD5teXNxbDgwIDM4Jmd0
OyB1c2UgZDM8L3A+PHA+RGF0YWJhc2UgY2hhbmdlZDwvcD48cD48YnI+PC9wPjxwPm15c3FsODAg
MzgmZ3Q7IENSRUFURSBWSUVXIGFfdjEgQVMgU0VMRUNUIHZhbCBGUk9NIHYxIFdIRVJFIG51bSA9
IDE7PC9wPjxwPkVSUk9SIDExNDYgKDQyUzAyKTogVGFibGUgJ2QzLnYxJyBkb2Vzbid0IGV4aXN0
PC9wPjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgarj
ga7jgafjgZPjgozjgpLpgb/jgZHjgovjgZ/jgoHjgavjgIE8L2Rpdj48ZGl2Pi0gQmFzZSBUYWJs
ZeOBriBgQ1JFQVRFIFRBQkxFYCDjgagg44OA44Of44O844GuIGBDUkVBVEUgVklFV2Ag44KS5rWB
44GZPC9kaXY+PGRpdj4tIOKGkeOBjOa1geOCjOe1guOCj+OBo+OBn+W+jOOBq+acrOeJqeOBriBg
Q1JFQVRFIFZJRVdgIOOCkua1geOBmTwvZGl2PjxkaXY+44Go44GE44GGMuOCueODhuODg+ODl+OB
p+Wun+ihjOOBl+OBpuOBhOOCi+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+
PGRpdj48ZGl2PiQgbXlzcWxkdW1wODAgZDI8L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48ZGl2Pi0t
PC9kaXY+PGRpdj4tLSBUZW1wb3JhcnkgdmlldyBzdHJ1Y3R1cmUgZm9yIHZpZXcgYGFfdjFgPC9k
aXY+PGRpdj4tLTwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+RFJPUCBUQUJMRSBJRiBF
WElTVFMgYGFfdjFgOzwvZGl2PjxkaXY+LyohNTAwMDEgRFJPUCBWSUVXIElGIEVYSVNUUyBgYV92
MWAqLzs8L2Rpdj48ZGl2Pi8qITUwMDAxIENSRUFURSBWSUVXIGBhX3YxYCBBUyBTRUxFQ1Q8L2Rp
dj48ZGl2PiZuYnNwOzEgQVMgYHZhbGAqLzs8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pi0tPC9k
aXY+PGRpdj4tLSBUYWJsZSBzdHJ1Y3R1cmUgZm9yIHRhYmxlIGB0MWA8L2Rpdj48ZGl2Pi0tPC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj5EUk9QIFRBQkxFIElGIEVYSVNUUyBgdDFgOzwvZGl2Pjxk
aXY+Q1JFQVRFIFRBQkxFIGB0MWAgKDwvZGl2PjxkaXY+Jm5ic3A7IGBudW1gIGJpZ2ludCB1bnNp
Z25lZCBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCw8L2Rpdj48ZGl2PiZuYnNwOyBgdmFsYCB2YXJj
aGFyKDMyKSBERUZBVUxUIE5VTEwsPC9kaXY+PGRpdj4mbmJzcDsgVU5JUVVFIEtFWSBgbnVtYCAo
YG51bWApPC9kaXY+PGRpdj4pIEVOR0lORT1Jbm5vREIgQVVUT19JTkNSRU1FTlQ9MyBERUZBVUxU
IENIQVJTRVQ9dXRmOG1iNCBDT0xMQVRFPXV0ZjhtYjRfMDkwMF9haV9jaTs8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+LS08L2Rpdj48ZGl2Pi0tIFRlbXBvcmFy
eSB2aWV3IHN0cnVjdHVyZSBmb3IgdmlldyBgdjFgPC9kaXY+PGRpdj4tLTwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+RFJPUCBUQUJMRSBJRiBFWElTVFMgYHYxYDs8L2Rpdj48ZGl2Pi8qITUwMDAx
IERST1AgVklFVyBJRiBFWElTVFMgYHYxYCovOzwvZGl2PjxkaXY+U0VUIEBzYXZlZF9jc19jbGll
bnQmbmJzcDsgJm5ic3A7ICZuYnNwOz0gQEBjaGFyYWN0ZXJfc2V0X2NsaWVudDs8L2Rpdj48ZGl2
Pi8qITUwMDAxIENSRUFURSBWSUVXIGB2MWAgQVMgU0VMRUNUPC9kaXY+PGRpdj4mbmJzcDsxIEFT
IGBudW1gLDwvZGl2PjxkaXY+Jm5ic3A7MSBBUyBgdmFsYCovOzwvZGl2PjxkaXY+PGJyPjwvZGl2
PjwvZGl2PjxkaXY+PGRpdj4tLTwvZGl2PjxkaXY+LS0gRmluYWwgdmlldyBzdHJ1Y3R1cmUgZm9y
IHZpZXcgYGFfdjFgPC9kaXY+PGRpdj4tLTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+LyohNTAw
MDEgRFJPUCBWSUVXIElGIEVYSVNUUyBgYV92MWAqLzs8L2Rpdj48ZGl2Pi8qITUwMDAxIENSRUFU
RSBBTEdPUklUSE09VU5ERUZJTkVEICovPC9kaXY+PGRpdj4vKiE1MDAxMyBERUZJTkVSPWByb290
YEBgbG9jYWxob3N0YCBTUUwgU0VDVVJJVFkgREVGSU5FUiAqLzwvZGl2PjxkaXY+LyohNTAwMDEg
VklFVyBgYV92MWAgQVMgc2VsZWN0IGB2MWAuYHZhbGAgQVMgYHZhbGAgZnJvbSBgdjFgIHdoZXJl
IChgdjFgLmBudW1gID0gMSkgKi87PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj48ZGl2Pi0tPC9kaXY+PGRpdj4tLSBGaW5hbCB2aWV3IHN0cnVjdHVyZSBmb3IgdmlldyBgdjFg
PC9kaXY+PGRpdj4tLTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+LyohNTAwMDEgRFJPUCBWSUVX
IElGIEVYSVNUUyBgdjFgKi87PC9kaXY+PGRpdj4vKiE1MDAwMSBDUkVBVEUgQUxHT1JJVEhNPVVO
REVGSU5FRCAqLzwvZGl2PjxkaXY+LyohNTAwMTMgREVGSU5FUj1gcm9vdGBAYGxvY2FsaG9zdGAg
U1FMIFNFQ1VSSVRZIERFRklORVIgKi88L2Rpdj48ZGl2Pi8qITUwMDAxIFZJRVcgYHYxYCBBUyBz
ZWxlY3QgYHQxYC5gbnVtYCBBUyBgbnVtYCxgdDFgLmB2YWxgIEFTIGB2YWxgIGZyb20gYHQxYCAq
Lzs8L2Rpdj48L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PjEuIOacgOWIneOBrlRlbXBvcmFyeSB2aWV3IHN0cnVjdHVyZeOBruaZgueCueOBp+OBryBg
Q1JFQVRFIFZJRVdgIOOBp+OBr+WbuuWumuWApOOCkuWIl+aMmeOBmeOCi+OBoOOBkeOBquOBruOB
p+ODk+ODpeODvOOBruODk+ODpeODvCAoIGBhX3YxYCAp44Gn44KC5L6d5a2Y6Zai5L+C44Gv5ZWP
6aGM44Gv44Gq44GP44Oq44K544OI44Ki44Gn44GN44GmPC9kaXY+PGRpdj4yLiBGaW5hbCB2aWV3
IHN0cnVjdHVyZeOBruaZgueCueOBp+ODgOODn+ODvOOCkiBgRFJPUCBWSUVXYCDjgZfjgabmnKzm
naXjga7lrprnvqnjgpIgYENSRUFURSBWSUVXYCDjgZnjgovjgZPjgajjgaflvqnlhYPjgafjgY3j
govjgIHjgZ/jgajjgYjpoIbnlarjgYzlhaXjgozpgZXjgaPjgaYgYGFfdjFgIOOBjOWFiOOBq+OD
quOCueODiOOCouOBleOCjOOBpuOCguOAgeOCq+ODqeODoOOBruWumue+qeOBvuOBp+OBr+ODgOOD
n+ODvOOBruaWueOBp+S9nOaIkOa4iOOBv+OBquOBruOBp+ODk+ODpeODvOOBruODk+ODpeODvOOB
p+OCguODquOCueODiOOCouOBp+OBjeOCizwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44Go44GE
44GG5LuV57WE44G/44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7mhI/lpJbjgajjgojjgY/j
gafjgY3jgabjgovjgII8L2Rpdj4="></div></h1></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-55028648544439919102023-12-10T10:52:00.004+09:002023-12-10T10:52:25.853+09:00MySQL公式のDockerリポジトリがcontainer-registry.oracle.comに引っ越していた<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/5502864854443991910" markdown-here-wrapper-content-modified="true"><p style="margin: 0px 0px 1.2em !important;">この記事は <a href="https://qiita.com/advent-calendar/2023/mysql" target="_blank">MySQLのカレンダー | Advent Calendar 2023</a> の10日目の記事です。昨日は <a href="https://twitter.com/meijik" target="_blank">meijik</a> さんの <a href="http://blog.kimuradb.com/?eid=877700" target="_blank">最新のSQL標準(SQL:2023)とFirebird/MySQL/PostgreSQL | キムラデービーブログ</a> でした。</p><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important;"><a href="https://hub.docker.com/r/mysql/mysql-server" target="_blank">dockerhub</a> のMySQLイメージはもうメンテナンスしていないっぽい</p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;">ややこしいのだけれど、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">docker pull mysql</code> で取得するのは「Docker社がビルドしたMySQLイメージ」で、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">docker pull mysql/mysql-server</code> で取得するのが「Oracle社がビルドしたMySQLイメージ」だった</li><li style="margin: 0.5em 0px;">引っ越したのは後者のみ</li></ul></li><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important;"><a href="https://container-registry.oracle.com/ords/f?p=113:4:12381340982311:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:2,2,MySQL%20Server%20Community%20Edition,MySQL%20Server%20Community%20Edition,1,0&cs=3WVM_zyTBKSuYIDJsTvrGlU4TijGU962dDuxjrPlGK3ghqgIS8_HpKaStgwcimJwzgfebmISW_3iQt8No9g_ECQ" target="_blank">MySQL Server Community Edition - Repository Detail</a></p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;">5.7は5.7.16と5.7.33だけ、8.0は8.0.22とそれ以降しかない</li></ul></li><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">docker login</code> が必要なのはEnterprise Editionのイメージを使おうとする時だけ(のはず)</p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/docker-mysql-getting-started.html" target="_blank">MySQL :: MySQL 8.0 Reference Manual :: 2.5.6.1 Basic Steps for MySQL Server Deployment with Docker</a></li></ul></li></ul><hr /><p style="margin: 0px 0px 1.2em !important;">Before</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo docker pull mysql/mysql-server
</code></pre><p style="margin: 0px 0px 1.2em !important;">After</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo docker pull container-registry.oracle.com/mysql/community-server
</code></pre><p style="margin: 0px 0px 1.2em !important;">これだけ。<br />イメージビルド用のDockerfileは変わっていないっぽいので、Oracle社ビルドのイメージを使っていたなら大した差はないはず(このDockerfileやentrypoint.shはDocker社ビルドのイメージとはそもそも盛大に違うので、もともとがDocker社ビルドのものだったりすると非互換がある)</p><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><a href="https://github.com/mysql/mysql-docker/tree/main/mysql-server/8.0" target="_blank">mysql-docker/mysql-server/8.0 at main · mysql/mysql-docker</a></li></ul><p style="margin: 0px 0px 1.2em !important;">ちなみにDocker社ビルドの方はこっち</p><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><a href="https://github.com/docker-library/mysql/tree/master/8.0" target="_blank">mysql/8.0 at master · docker-library/mysql</a></li></ul><p style="margin: 0px 0px 1.2em !important;">Oracle社ビルド用のイメージとして俺はこんなエイリアスを用意していて(そもそもMySQLのDockerコンテナはバージョンごとのちょっとした動作確認をするのに便利、くらいにしか使わない)</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">dmysql ()
{
sudo docker run -d -P -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_ROOT_PASSWORD="""" -e MYSQL_ROOT_HOST=""%"" --restart=on-failure mysql/mysql-server:$1
}
</code></pre><p style="margin: 0px 0px 1.2em !important;">このお引越しを経てこうなりました (バージョン番号の判定にまさに <a href="https://yoku0825.blogspot.com/2023/12/blog-post.html" target="_blank">日々の覚書: 明日使えない地味なシェルスクリプト用ワンライナー集</a> のやつを使っている…)</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">dmysql ()
{
version_str="$1";
[[ -z $version_str ]] && version_str="latest";
version_int=$(echo $version_str | awk -F"[.-]" '{printf("%d%02d%02d\n", $1, $2, $3)}');
if [[ $version_str = "latest" || $version_int -ge 80022 ]]; then
repo="container-registry.oracle.com/mysql/community-server";
else
repo="mysql/mysql-server";
fi;
docker run -d -P -e MYSQL_ALLOW_EMPTY_PASSWORD=1 -e MYSQL_ROOT_PASSWORD="""" -e MYSQL_ROOT_HOST=""%"" $repo:$1
}
</code></pre><p style="margin: 0px 0px 1.2em !important;">直近の5.7(5.7.44とか)はサポートしてない (そもそも引越し前にも引越し先にもないのでそうならざるを得ない)けどまあ仕方なし…</p><p style="margin: 0px 0px 1.2em !important;"></p><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+44GT44Gu6KiY5LqL44GvJm5ic3A7W015U1FM44Gu44Kr44Os44Oz44OA44O8IFx8IEFkdmVu
dCBDYWxlbmRhciAyMDIzXShodHRwczovL3FpaXRhLmNvbS9hZHZlbnQtY2FsZW5kYXIvMjAyMy9t
eXNxbCkg44GuMTDml6Xnm67jga7oqJjkuovjgafjgZnjgILmmKjml6Xjga8gW21laWppa10oaHR0
cHM6Ly90d2l0dGVyLmNvbS9tZWlqaWspIOOBleOCk+OBriBb5pyA5paw44GuU1FM5qiZ5rqWXChT
UUw6MjAyM1wp44GoRmlyZWJpcmQvTXlTUUwvUG9zdGdyZVNRTCBcfCDjgq3jg6Djg6njg4fjg7zj
g5Pjg7zjg5bjg63jgrBdKGh0dHA6Ly9ibG9nLmtpbXVyYWRiLmNvbS8/ZWlkPTg3NzcwMCkg44Gn
44GX44Gf44CCPC9wPjxwPjxicj48L3A+PHA+PGJyPjwvcD48cD4mbmJzcDsjIFRMO0RSPC9wPjxw
Pi0gW2RvY2tlcmh1Yl0oaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS9yL215c3FsL215c3FsLXNlcnZl
cikg44GuTXlTUUzjgqTjg6Hjg7zjgrjjga/jgoLjgYbjg6Hjg7Pjg4bjg4rjg7PjgrnjgZfjgabj
gYTjgarjgYTjgaPjgb3jgYQ8L3A+PHA+Jm5ic3A7IC0g44KE44KE44GT44GX44GE44Gu44Gg44GR
44KM44Gp44CBIGBkb2NrZXIgcHVsbCBteXNxbGAg44Gn5Y+W5b6X44GZ44KL44Gu44Gv44CMRG9j
a2Vy56S+44GM44OT44Or44OJ44GX44GfTXlTUUzjgqTjg6Hjg7zjgrjjgI3jgafjgIEgYGRvY2tl
ciBwdWxsIG15c3FsL215c3FsLXNlcnZlcmAg44Gn5Y+W5b6X44GZ44KL44Gu44GM44CMT3JhY2xl
56S+44GM44OT44Or44OJ44GX44GfTXlTUUzjgqTjg6Hjg7zjgrjjgI3jgaDjgaPjgZ88L3A+PHA+
Jm5ic3A7IC0g5byV44Gj6LaK44GX44Gf44Gu44Gv5b6M6ICF44Gu44G/PC9wPjxwPjxicj48L3A+
PHA+LSZuYnNwO1tNeVNRTCBTZXJ2ZXIgQ29tbXVuaXR5IEVkaXRpb24gXC0gUmVwb3NpdG9yeSBE
ZXRhaWxdKGh0dHBzOi8vY29udGFpbmVyLXJlZ2lzdHJ5Lm9yYWNsZS5jb20vb3Jkcy9mP3A9MTEz
OjQ6MTIzODEzNDA5ODIzMTE6Ojo0OlA0X1JFUE9TSVRPUlksQUlfUkVQT1NJVE9SWSxBSV9SRVBP
U0lUT1JZX05BTUUsUDRfUkVQT1NJVE9SWV9OQU1FLFA0X0VVTEFfSUQsUDRfQlVTSU5FU1NfQVJF
QV9JRDoyLDIsTXlTUUwlMjBTZXJ2ZXIlMjBDb21tdW5pdHklMjBFZGl0aW9uLE15U1FMJTIwU2Vy
dmVyJTIwQ29tbXVuaXR5JTIwRWRpdGlvbiwxLDAmYW1wO2NzPTNXVk1fenlUQktTdVlJREpzVHZy
R2xVNFRpakdVOTYyZER1eGpyUGxHSzNnaHFnSVM4X0hwS2FTdGd3Y2ltSnd6Z2ZlYm1JU1dfM2lR
dDhObzlnX0VDUSk8L3A+PHA+Jm5ic3A7IC0gNS4344GvNS43LjE244GoNS43LjMz44Gg44GR44CB
OC4w44GvOC4wLjIy44Go44Gd44KM5Lul6ZmN44GX44GL44Gq44GEPC9wPjxwPjxicj48L3A+PHA+
LSBgZG9ja2VyIGxvZ2luYCDjgYzlv4XopoHjgarjga7jga9FbnRlcnByaXNlIEVkaXRpb27jga7j
gqTjg6Hjg7zjgrjjgpLkvb/jgYrjgYbjgajjgZnjgovmmYLjgaDjgZHvvIjjga7jga/jgZrvvIk8
L3A+PHA+Jm5ic3A7IC0mbmJzcDtbTXlTUUwgOjogTXlTUUwgOFwuMCBSZWZlcmVuY2UgTWFudWFs
IDo6IDJcLjVcLjZcLjEgQmFzaWMgU3RlcHMgZm9yIE15U1FMIFNlcnZlciBEZXBsb3ltZW50IHdp
dGggRG9ja2VyXShodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi84LjAvZW4vZG9ja2Vy
LW15c3FsLWdldHRpbmctc3RhcnRlZC5odG1sKTwvcD48cD48YnI+PC9wPjxwPi0tLTwvcD48cD48
YnI+PC9wPjxwPkJlZm9yZTwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIHN1ZG8gZG9ja2Vy
IHB1bGwgbXlzcWwvbXlzcWwtc2VydmVyPC9wPjxwPmBgYDwvcD48cD48YnI+PC9wPjxwPkFmdGVy
PC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPiQgc3VkbyZuYnNwO2RvY2tlciBwdWxsIGNvbnRh
aW5lci1yZWdpc3RyeS5vcmFjbGUuY29tL215c3FsL2NvbW11bml0eS1zZXJ2ZXI8L3A+PHA+YGBg
PC9wPjxwPjxicj48L3A+PHA+44GT44KM44Gg44GR44CCPC9wPjxwPuOCpOODoeODvOOCuOODk+OD
q+ODieeUqOOBrkRvY2tlcmZpbGXjga/lpInjgo/jgaPjgabjgYTjgarjgYTjgaPjgb3jgYTjga7j
gafjgIFPcmFjbGXnpL7jg5Pjg6vjg4njga7jgqTjg6Hjg7zjgrjjgpLkvb/jgaPjgabjgYTjgZ/j
garjgonlpKfjgZfjgZ/lt67jga/jgarjgYTjga/jgZrvvIjjgZPjga5Eb2NrZXJmaWxl44KEZW50
cnlwb2ludC5zaOOBr0RvY2tlcuekvuODk+ODq+ODieOBruOCpOODoeODvOOCuOOBqOOBr+OBneOC
guOBneOCguebm+Wkp+OBq+mBleOBhuOBruOBp+OAgeOCguOBqOOCguOBqOOBjERvY2tlcuekvuOD
k+ODq+ODieOBruOCguOBruOBoOOBo+OBn+OCiuOBmeOCi+OBqOmdnuS6kuaPm+OBjOOBguOCi++8
iTwvcD48cD4tJm5ic3A7W215c3FsXC1kb2NrZXIvbXlzcWxcLXNlcnZlci84XC4wIGF0IG1haW4g
wrcgbXlzcWwvbXlzcWxcLWRvY2tlcl0oaHR0cHM6Ly9naXRodWIuY29tL215c3FsL215c3FsLWRv
Y2tlci90cmVlL21haW4vbXlzcWwtc2VydmVyLzguMCk8L3A+PHA+PGJyPjwvcD48cD7jgaHjgarj
gb/jgatEb2NrZXLnpL7jg5Pjg6vjg4njga7mlrnjga/jgZPjgaPjgaE8L3A+PHA+LSZuYnNwO1tt
eXNxbC84XC4wIGF0IG1hc3RlciDCtyBkb2NrZXJcLWxpYnJhcnkvbXlzcWxdKGh0dHBzOi8vZ2l0
aHViLmNvbS9kb2NrZXItbGlicmFyeS9teXNxbC90cmVlL21hc3Rlci84LjApPC9wPjxwPjxicj48
L3A+PHA+T3JhY2xl56S+44OT44Or44OJ55So44Gu44Kk44Oh44O844K444Go44GX44Gm5L+644Gv
44GT44KT44Gq44Ko44Kk44Oq44Ki44K544KS55So5oSP44GX44Gm44GE44Gm77yI44Gd44KC44Gd
44KCTXlTUUzjga5Eb2NrZXLjgrPjg7Pjg4bjg4rjga/jg5Djg7zjgrjjg6fjg7PjgZTjgajjga7j
gaHjgofjgaPjgajjgZfjgZ/li5XkvZznorroqo3jgpLjgZnjgovjga7jgavkvr/liKnjgIHjgY/j
gonjgYTjgavjgZfjgYvkvb/jgo/jgarjgYTvvIk8L3A+PHA+PGJyPjwvcD48cD5gYGA8L3A+PHA+
ZG15c3FsICgpPC9wPjxwPns8L3A+PHA+Jm5ic3A7ICZuYnNwOyBzdWRvIGRvY2tlciBydW4gLWQg
LVAgLWUgTVlTUUxfQUxMT1dfRU1QVFlfUEFTU1dPUkQ9MSAtZSBNWVNRTF9ST09UX1BBU1NXT1JE
PSIiIiIgLWUgTVlTUUxfUk9PVF9IT1NUPSIiJSIiIC0tcmVzdGFydD1vbi1mYWlsdXJlIG15c3Fs
L215c3FsLXNlcnZlcjokMTwvcD48cD59PC9wPjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj7jgZPjga7jgYrlvJXotorjgZfjgpLntYzjgabjgZPjgYbjgarjgorjgb7jgZfjgZ8gKOOD
kOODvOOCuOODp+ODs+eVquWPt+OBruWIpOWumuOBq+OBvuOBleOBqyZuYnNwO1vml6XjgIXjga7o
pprmm7g6IOaYjuaXpeS9v+OBiOOBquOBhOWcsOWRs+OBquOCt+OCp+ODq+OCueOCr+ODquODl+OD
iOeUqOODr+ODs+ODqeOCpOODiuODvOmbhl0oaHR0cHM6Ly95b2t1MDgyNS5ibG9nc3BvdC5jb20v
MjAyMy8xMi9ibG9nLXBvc3QuaHRtbCkg44Gu44KE44Gk44KS5L2/44Gj44Gm44GE44KL4oCmKTwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2
PmRteXNxbCAoKTwvZGl2PjxkaXY+ezwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyB2ZXJzaW9uX3N0
cj0iJDEiOzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBbWyAteiAkdmVyc2lvbl9zdHIgXV0gJmFt
cDsmYW1wOyB2ZXJzaW9uX3N0cj0ibGF0ZXN0Ijs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgdmVy
c2lvbl9pbnQ9JChlY2hvICR2ZXJzaW9uX3N0ciB8IGF3ayAtRiJbLi1dIiAne3ByaW50ZigiJWQl
MDJkJTAyZFxuIiwgJDEsICQyLCAkMyl9Jyk7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IGlmIFtb
ICR2ZXJzaW9uX3N0ciA9ICJsYXRlc3QiIHx8ICR2ZXJzaW9uX2ludCAtZ2UgODAwMjIgXV07IHRo
ZW48L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyByZXBvPSJjb250YWluZXIt
cmVnaXN0cnkub3JhY2xlLmNvbS9teXNxbC9jb21tdW5pdHktc2VydmVyIjs8L2Rpdj48ZGl2PiZu
YnNwOyAmbmJzcDsgZWxzZTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHJl
cG89Im15c3FsL215c3FsLXNlcnZlciI7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IGZpOzwvZGl2
PjxkaXY+Jm5ic3A7ICZuYnNwOyBkb2NrZXIgcnVuIC1kIC1QIC1lIE1ZU1FMX0FMTE9XX0VNUFRZ
X1BBU1NXT1JEPTEgLWUgTVlTUUxfUk9PVF9QQVNTV09SRD0iIiIiIC1lIE1ZU1FMX1JPT1RfSE9T
VD0iIiUiIiAkcmVwbzokMTwvZGl2PjxkaXY+fTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj7nm7Tov5Hjga41LjcoNS43LjQ044Go44GLKeOBr+OCteODneODvOOD
iOOBl+OBpuOBquOBhCAo44Gd44KC44Gd44KC5byV6LaK44GX5YmN44Gr44KC5byV6LaK44GX5YWI
44Gr44KC44Gq44GE44Gu44Gn44Gd44GG44Gq44KJ44GW44KL44KS5b6X44Gq44GE77yJ44GR44Gp
44G+44GC5LuV5pa544Gq44GX4oCmPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj7mmI7ml6Xjga8gW3l5YW1hc2FraTFdKGh0dHBzOi8vdHdpdHRl
ci5jb20veXlhbWFzYWtpMSkg44GV44KT44Gn44GZ77yBPC9kaXY+"></div><p></p><p style="-webkit-text-stroke-width: 0px; color: black; font-family: Meiryo; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1.2em !important; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">明日は<span> </span><a href="https://twitter.com/yyamasaki1" target="_blank">yyamasaki1</a><span> </span>さんです!</p></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-39280952831667771682023-12-07T09:57:00.008+09:002023-12-07T09:57:58.303+09:00明日使えない地味なシェルスクリプト用ワンライナー集<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/3928095283166777168" markdown-here-wrapper-content-modified="true"><p style="margin: 0px 0px 1.2em !important;">この記事は <a href="https://qiita.com/advent-calendar/2023/mysql" target="_blank">MySQLのカレンダー | Advent Calendar 2023</a> の7日目の記事です。<br />6日目は <a href="https://twitter.com/lrf141" target="_blank">けんつ</a> さんの <a href="https://rabbitfoot141.hatenablog.com/entry/2023/12/06/170449" target="_blank">MySQL いい感じにコントリビュートする方法(非公式) - それが僕には楽しかったんです。</a> でした。</p><hr /><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">なんの変哲もないよく使うワンライナーです。SQLだけでできたり使ったりするものは入っていない気がする</li></ul><h2 style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px; text-align: left;">バージョンxxx移行yyy未満、みたいなのをやりたい</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">MySQLは内部的にも <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">メジャーバージョン番号 * 10000 + マイナーバージョン番号 * 100 + リリース番号</code> みたいな計算式をよく使っているのでそれに倣う</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysql -sse "SELECT @@version" | awk -F"[.-]" '{printf("%d%02d%02d\n", $1, $2, $3)}'
</code></pre><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">MySQL 5.7とそれ以降に限定するなら <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">sys</code> スキーマの関数を使っても引ける<ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/sys-schema-functions.html" target="_blank">MySQL :: MySQL 8.0 Reference Manual :: 28.4.5 sys Schema Stored Functions</a></li></ul></li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysql -sse "SELECT sys.version_major() * 10000 + sys.version_minor() * 100 + sys.version_patch()"
</code></pre><h2 id="-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">バイナリログだけのサイズを合計したい</h2><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysql -sse "SHOW BYNARY LOGS" | awk '{i += $2}END{print i}' | numfmt --to=iec
</code></pre><h3 id="-" style="font-size: 1.3em; margin: 1.3em 0px 1em; padding: 0px;">(番外)リレーログだけのサイズを合計したい</h3><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">SHOW BINARY LOGS</code> みたいなのが無いので、厳密にやろうとすると大変 ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">relay_log_basename</code> をたどったりとか)。おとなしく <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">*relay*</code> で引いちゃうのが良いんではないか。</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ ls -l /path/to/datadir/*relay* | awk '{i += $5}END{print i}' | numfmt --to=iec
</code></pre><h2 id="master_info_repository-change-replication-source-to-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">master_info_repositoryからCHANGE REPLICATION SOURCE TOステートメントを作る</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">急に <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">perl</code> が出てくるのは <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">awk</code> だとシングルクォートが面倒だったから</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysql -sse "SELECT host, port, user_name, user_password, enabled_auto_position FROM mysql.slave_master_info WHERE channel_name = ''" | perl -nlaE 'printf(qq{CHANGE REPLICATION SOURCE TO source_host = "%s", source_port = %d, source_user = "%s", source_password = "%s", source_auto_position = %d;\n}, @F)'
</code></pre><h3 id="-master-info-change-replication-source-to-" style="font-size: 1.3em; margin: 1.3em 0px 1em; padding: 0px;">(番外) master.infoファイルからCHANGE REPLICATION SOURCE TOステートメントを作る</h3><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">cat</code> で取った内容を一度変数に詰めるとspace seperatedな1行に出来ることを利用している</p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;">ワンライナーじゃない(∩゚д゚)アーアーきこえなーい</li></ul></li><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">master.info</code> の並び順は一応ドキュメントに解説されているけれど、将来変わるかも知れないしそもそも <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">master_info_repository=FILE</code> 自体が非推奨になったので微妙。</p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/replica-logs-status.html" target="_blank">MySQL :: MySQL 8.0 Reference Manual :: 17.2.4.2 Replication Metadata Repositories</a></li></ul></li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ line=$(cat master.info)
$ echo $line | while read dummy dummy dummy master_host master_user master_password master_port dummy ; do
printf "CHANGE MASTER TO master_host = '%s', master_port = %d, master_user = '%s', master_password= '%s';\n" $master_host $master_port $master_user $master_password
done
</code></pre><h2 id="-cpu-kill-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">ダメなクエリが延々流れてきてCPUが詰まっているのでとにかく来た順番にKILLしたい</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">grep次第で特定のクエリに絞ったり絞らなかったりができるあたりがよく使う所以か</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysql -sse "SHOW PROCESSLIST" | grep -v 'system user' | grep -v 'Binlog Dump' | awk -F"\t" -v timelimit=10 '$6 > timelimit && $5 != "Sleep"{print $1}' | while read id ; do
mysql -e "KILL $id"
done
</code></pre><h2 id="mysql-8-0-mysql_native_password-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">MySQL 8.0とそれ以降でも mysql_native_passwordのハッシュを知りたい</h2><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ mysql -sse "SELECT CONCAT('*', UPPER(SHA1(UNHEX(SHA1('$raw_password')))));"
</code></pre><h2 id="read-vip-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">read用のVIPでちゃんと分散してるかどうか確かめる</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">forの外側で sort | uniq -cでちゃんと分散してるか数える</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ for n in {1..100}; do
mysql -h $read_vip -sse "SELECT @@hostname"
done | sort | uniq -c
</code></pre><h2 id="auto_increment-delete-update-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">auto_incrementなカラムで梳きながらDELETEなりUPDATEなりする</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><a href="https://yoku0825.blogspot.com/2017/11/mysql.html" target="_blank">日々の覚書: MySQLから大量のレコードをちまちま削除するメモ</a> の 「idが数値型」の時のやり方</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ for ((i=$min; i<=$max; i+=$limit)); do
mysql -ve "DELETE FROM t1 WHERE id BETWEEN $i AND $i+$limit AND $original_where_clause"
sleep $sleep
done
</code></pre><h2 id="-xtrabackup-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">圧縮しながらxtrabackupを取る</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">ファイルリダイレクトでなく <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">ssh "cat - > .."</code> とかにパイプすればリモートにも転送できる</li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ xtrabackup -uroot --stream=xbstream --backup | pzstd -c > xtrabackup.xb.zst
</code></pre><h2 id="-xbstream-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">圧縮済のxbstreamを展開する</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">↑の逆パターン<ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;">カレントディレクトリに色々ぶちまけるのでワーキングディレクトリを作った方が良いと思う</li></ul></li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ pzstd -dc xtrabackup.xb.zst | xbstream -xv
</code></pre><h2 id="-alter-table-1-" style="border-bottom: 1px solid rgb(238, 238, 238); font-size: 1.4em; margin: 1.3em 0px 1em; padding: 0px;">トランザクションがなかなか途切れないテーブルにどうしてもALTER TABLEしたくて1秒までなら何とか我慢しながら成功するまでひたすらリトライする</h2><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">1秒までの他のクエリのブロッキングは許す(でないといつまでも終わらない)</li><li style="margin: 0.5em 0px;">オンラインALTER TABLEは「2回」メタデータロックを取るので、開始前と終了直前どちらでタイムアウトする可能性もある<ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;">30分かかるALTER TABLEが終了処理のメタデータロックでタイムアウトしても泣かない</li></ul></li></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ while true ; do
mysql -sse "SET SESSION lock_wait_timeout= 1; ALTER TABLE t1 ADD KEY idx_something(some_column)" || break
sleep 1
done
</code></pre><p style="margin: 0px 0px 1.2em !important;"><del>バックアップしたりリストアしたりKILLしたりALTER TABLE無限リトライなんてことをしょっちゅうやってるんですねわかります!()</del></p><p style="margin: 0px 0px 1.2em !important;"></p><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+44GT44Gu6KiY5LqL44GvJm5ic3A7W015U1FM44Gu44Kr44Os44Oz44OA44O8IFx8IEFkdmVu
dCBDYWxlbmRhciAyMDIzXShodHRwczovL3FpaXRhLmNvbS9hZHZlbnQtY2FsZW5kYXIvMjAyMy9t
eXNxbCkg44GuN+aXpeebruOBruiomOS6i+OBp+OBmeOAgjwvcD48cD425pel55uu44GvIFvjgZHj
gpPjgaRdKGh0dHBzOi8vdHdpdHRlci5jb20vbHJmMTQxKSDjgZXjgpPjga4gW015U1FMIOOBhOOB
hOaEn+OBmOOBq+OCs+ODs+ODiOODquODk+ODpeODvOODiOOBmeOCi+aWueazlVwo6Z2e5YWs5byP
XCkgXC0g44Gd44KM44GM5YOV44Gr44Gv5qW944GX44GL44Gj44Gf44KT44Gn44GZ44CCXShodHRw
czovL3JhYmJpdGZvb3QxNDEuaGF0ZW5hYmxvZy5jb20vZW50cnkvMjAyMy8xMi8wNi8xNzA0NDkp
IOOBp+OBl+OBn+OAgjwvcD48cD48YnI+PC9wPjxwPi0tLS08L3A+PHA+PGJyPjwvcD48cD4jIFRM
O0RSPC9wPjxwPi0g44Gq44KT44Gu5aSJ5ZOy44KC44Gq44GE44KI44GP5L2/44GG44Ov44Oz44Op
44Kk44OK44O844Gn44GZ44CCU1FM44Gg44GR44Gn44Gn44GN44Gf44KK5L2/44Gj44Gf44KK44GZ
44KL44KC44Gu44Gv5YWl44Gj44Gm44GE44Gq44GE5rCX44GM44GZ44KLPC9wPjxwPjxicj48L3A+
PHA+IyMg44OQ44O844K444On44OzeHh456e76KGMeXl55pyq5rqA44CB44G/44Gf44GE44Gq44Gu
44KS44KE44KK44Gf44GEPC9wPjxwPi0gTXlTUUzjga/lhoXpg6jnmoTjgavjgoIgYOODoeOCuOOD
o+ODvOODkOODvOOCuOODp+ODs+eVquWPtyAqIDEwMDAwICsg44Oe44Kk44OK44O844OQ44O844K4
44On44Oz55Wq5Y+3ICogMTAwICsg44Oq44Oq44O844K555Wq5Y+3YCDjgb/jgZ/jgYTjgaroqIjn
rpflvI/jgpLjgojjgY/kvb/jgaPjgabjgYTjgovjga7jgafjgZ3jgozjgavlgKPjgYY8L3A+PHA+
PGJyPjwvcD48cD5gYGA8L3A+PHA+JCBteXNxbCAtc3NlICJTRUxFQ1QgQEB2ZXJzaW9uIiB8IGF3
ayAtRiJbLi1dIiAne3ByaW50ZigiJWQlMDJkJTAyZFxuIiwgJDEsICQyLCAkMyl9JzwvcD48cD5g
YGA8L3A+PHA+PGJyPjwvcD48cD4tIE15U1FMIDUuN+OBqOOBneOCjOS7pemZjeOBq+mZkOWumuOB
meOCi+OBquOCiSBgc3lzYCDjgrnjgq3jg7zjg57jga7plqLmlbDjgpLkvb/jgaPjgabjgoLlvJXj
gZHjgos8L3A+PHA+Jm5ic3A7IC0gW015U1FMIDo6IE15U1FMIDhcLjAgUmVmZXJlbmNlIE1hbnVh
bCA6OiAyOFwuNFwuNSBzeXMgU2NoZW1hIFN0b3JlZCBGdW5jdGlvbnNdKGh0dHBzOi8vZGV2Lm15
c3FsLmNvbS9kb2MvcmVmbWFuLzguMC9lbi9zeXMtc2NoZW1hLWZ1bmN0aW9ucy5odG1sKTwvcD48
cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIG15c3FsIC1zc2UgIlNFTEVDVCBzeXMudmVyc2lvbl9t
YWpvcigpICogMTAwMDAgKyBzeXMudmVyc2lvbl9taW5vcigpICogMTAwICsgc3lzLnZlcnNpb25f
cGF0Y2goKSI8L3A+PHA+YGBgPC9wPjxwPjxicj48L3A+PHA+IyMg44OQ44Kk44OK44Oq44Ot44Kw
44Gg44GR44Gu44K144Kk44K644KS5ZCI6KiI44GX44Gf44GEPC9wPjxwPjxicj48L3A+PHA+YGBg
PC9wPjxwPiQgbXlzcWwgLXNzZSAiU0hPVyBCWU5BUlkgTE9HUyIgfCBhd2sgJ3tpICs9ICQyfUVO
RHtwcmludCBpfScgfCBudW1mbXQgLS10bz1pZWM8L3A+PHA+YGBgPC9wPjxwPjxicj48L3A+PHA+
IyMjICjnlarlpJYp44Oq44Os44O844Ot44Kw44Gg44GR44Gu44K144Kk44K644KS5ZCI6KiI44GX
44Gf44GEPC9wPjxwPi0gYFNIT1cgQklOQVJZIExPR1NgIOOBv+OBn+OBhOOBquOBruOBjOeEoeOB
hOOBruOBp+OAgeWOs+WvhuOBq+OChOOCjeOBhuOBqOOBmeOCi+OBqOWkp+WkiSAoIGByZWxheV9s
b2dfYmFzZW5hbWVgIOOCkuOBn+OBqeOBo+OBn+OCiuOBqOOBiynjgILjgYrjgajjgarjgZfjgY8g
YCpyZWxheSpgIOOBp+W8leOBhOOBoeOCg+OBhuOBruOBjOiJr+OBhOOCk+OBp+OBr+OBquOBhOOB
i+OAgjwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIGxzIC1sIC9wYXRoL3RvL2RhdGFkaXIv
KnJlbGF5KiB8IGF3ayAne2kgKz0gJDV9RU5Ee3ByaW50IGl9JyB8IG51bWZtdCAtLXRvPWllYzwv
cD48cD5gYGA8L3A+PHA+PGJyPjwvcD48cD4jIyBtYXN0ZXJfaW5mb19yZXBvc2l0b3J544GL44KJ
Q0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUT+OCueODhuODvOODiOODoeODs+ODiOOCkuS9nOOC
izwvcD48cD48YnI+PC9wPjxwPi0g5oCl44GrIGBwZXJsYCDjgYzlh7rjgabjgY/jgovjga7jga8g
YGF3a2Ag44Gg44Go44K344Oz44Kw44Or44Kv44Kp44O844OI44GM6Z2i5YCS44Gg44Gj44Gf44GL
44KJPC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPiQgbXlzcWwgLXNzZSAiU0VMRUNUIGhvc3Qs
IHBvcnQsIHVzZXJfbmFtZSwgdXNlcl9wYXNzd29yZCwgZW5hYmxlZF9hdXRvX3Bvc2l0aW9uIEZS
T00gbXlzcWwuc2xhdmVfbWFzdGVyX2luZm8gV0hFUkUgY2hhbm5lbF9uYW1lID0gJyciIHwmbmJz
cDsgcGVybCAtbmxhRSAncHJpbnRmKHFxe0NIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gc291
cmNlX2hvc3QgPSAiJXMiLCBzb3VyY2VfcG9ydCA9ICVkLCBzb3VyY2VfdXNlciA9ICIlcyIsIHNv
dXJjZV9wYXNzd29yZCA9ICIlcyIsIHNvdXJjZV9hdXRvX3Bvc2l0aW9uID0gJWQ7XG59LCBARikn
PC9wPjxwPmBgYDwvcD48cD48YnI+PC9wPjxwPiMjIyAo55Wq5aSWKSBtYXN0ZXIuaW5mb+ODleOC
oeOCpOODq+OBi+OCiUNIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE/jgrnjg4bjg7zjg4jjg6Hj
g7Pjg4jjgpLkvZzjgos8L3A+PHA+PGJyPjwvcD48cD4tIGBjYXRgIOOBp+WPluOBo+OBn+WGheWu
ueOCkuS4gOW6puWkieaVsOOBq+ipsOOCgeOCi+OBqHNwYWNlIHNlcGVyYXRlZOOBqjHooYzjgavl
h7rmnaXjgovjgZPjgajjgpLliKnnlKjjgZfjgabjgYTjgos8L3A+PHA+Jm5ic3A7IC0g44Ov44Oz
44Op44Kk44OK44O844GY44KD44Gq44GEKOKIqe++n9C0776fKe+9se+9sO+9se+9sOOBjeOBk+OB
iOOBquODvOOBhDwvcD48cD48YnI+PC9wPjxwPi0gYG1hc3Rlci5pbmZvYCDjga7kuKbjgbPpoIbj
ga/kuIDlv5zjg4njgq3jg6Xjg6Hjg7Pjg4jjgavop6PoqqzjgZXjgozjgabjgYTjgovjgZHjgozj
ganjgIHlsIbmnaXlpInjgo/jgovjgYvjgoLnn6XjgozjgarjgYTjgZfjgZ3jgoLjgZ3jgoIgYG1h
c3Rlcl9pbmZvX3JlcG9zaXRvcnk9RklMRWAg6Ieq5L2T44GM6Z2e5o6o5aWo44Gr44Gq44Gj44Gf
44Gu44Gn5b6u5aaZ44CCPC9wPjxwPiZuYnNwOyAtJm5ic3A7W015U1FMIDo6IE15U1FMIDhcLjAg
UmVmZXJlbmNlIE1hbnVhbCA6OiAxN1wuMlwuNFwuMiBSZXBsaWNhdGlvbiBNZXRhZGF0YSBSZXBv
c2l0b3JpZXNdKGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzguMC9lbi9yZXBsaWNh
LWxvZ3Mtc3RhdHVzLmh0bWwpPC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPiQgbGluZT0kKGNh
dCBtYXN0ZXIuaW5mbyk8L3A+PHA+JCBlY2hvICRsaW5lIHwgd2hpbGUgcmVhZCBkdW1teSBkdW1t
eSBkdW1teSBtYXN0ZXJfaG9zdCBtYXN0ZXJfdXNlciBtYXN0ZXJfcGFzc3dvcmQgbWFzdGVyX3Bv
cnQgZHVtbXkgOyBkbzwvcD48cD4mbmJzcDsgcHJpbnRmICJDSEFOR0UgTUFTVEVSIFRPIG1hc3Rl
cl9ob3N0ID0gJyVzJywgbWFzdGVyX3BvcnQgPSAlZCwgbWFzdGVyX3VzZXIgPSAnJXMnLCBtYXN0
ZXJfcGFzc3dvcmQ9ICclcyc7XG4iICRtYXN0ZXJfaG9zdCAkbWFzdGVyX3BvcnQgJG1hc3Rlcl91
c2VyICRtYXN0ZXJfcGFzc3dvcmQ8L3A+PHA+ZG9uZTwvcD48ZGl2PmBgYDwvZGl2PjxwPjxicj48
L3A+PHA+IyMg44OA44Oh44Gq44Kv44Ko44Oq44GM5bu244CF5rWB44KM44Gm44GN44GmQ1BV44GM
6Kmw44G+44Gj44Gm44GE44KL44Gu44Gn44Go44Gr44GL44GP5p2l44Gf6aCG55Wq44GrS0lMTOOB
l+OBn+OBhDwvcD48cD48YnI+PC9wPjxwPi0gZ3JlcOasoeesrOOBp+eJueWumuOBruOCr+OCqOOD
quOBq+e1nuOBo+OBn+OCiue1nuOCieOBquOBi+OBo+OBn+OCiuOBjOOBp+OBjeOCi+OBguOBn+OC
iuOBjOOCiOOBj+S9v+OBhuaJgOS7peOBizwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIG15
c3FsIC1zc2UgIlNIT1cgUFJPQ0VTU0xJU1QiIHwgZ3JlcCAtdiAnc3lzdGVtIHVzZXInIHwgZ3Jl
cCAtdiAnQmlubG9nIER1bXAnIHwgYXdrIC1GIlx0IiAtdiB0aW1lbGltaXQ9MTAgJyQ2ICZndDsg
dGltZWxpbWl0ICZhbXA7JmFtcDsgJDUgIT0gIlNsZWVwIntwcmludCAkMX0nIHwgd2hpbGUgcmVh
ZCBpZCA7IGRvPC9wPjxwPiZuYnNwOyBteXNxbCAtZSAiS0lMTCAkaWQiPC9wPjxwPmRvbmU8L3A+
PHA+YGBgPC9wPjxwPjxicj48L3A+PHA+IyMgTXlTUUwgOC4w44Go44Gd44KM5Lul6ZmN44Gn44KC
IG15c3FsX25hdGl2ZV9wYXNzd29yZOOBruODj+ODg+OCt+ODpeOCkuefpeOCiuOBn+OBhDwvcD48
cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIG15c3FsIC1zc2UgIlNFTEVDVCBDT05DQVQoJyonLCBV
UFBFUihTSEExKFVOSEVYKFNIQTEoJyRyYXdfcGFzc3dvcmQnKSkpKSk7IjwvcD48cD5gYGA8L3A+
PHA+PGJyPjwvcD48cD4jIyByZWFk55So44GuVklQ44Gn44Gh44KD44KT44Go5YiG5pWj44GX44Gm
44KL44GL44Gp44GG44GL56K644GL44KB44KLPC9wPjxwPjxicj48L3A+PHA+LSBmb3Ljga7lpJbl
gbTjgacgc29ydCB8IHVuaXEgLWPjgafjgaHjgoPjgpPjgajliIbmlaPjgZfjgabjgovjgYvmlbDj
gYjjgos8L3A+PHA+PGJyPjwvcD48cD5gYGA8L3A+PHA+JCBmb3IgbiBpbiB7MS4uMTAwfTsgZG88
L3A+PHA+Jm5ic3A7IG15c3FsIC1oICRyZWFkX3ZpcCAtc3NlICJTRUxFQ1QgQEBob3N0bmFtZSI8
L3A+PHA+ZG9uZSB8IHNvcnQgfCB1bmlxIC1jPC9wPjxwPmBgYDwvcD48cD48YnI+PC9wPjxwPiMj
IGF1dG9faW5jcmVtZW5044Gq44Kr44Op44Og44Gn5qKz44GN44Gq44GM44KJREVMRVRF44Gq44KK
VVBEQVRF44Gq44KK44GZ44KLPC9wPjxwPi0mbmJzcDtb5pel44CF44Gu6Kaa5pu4OiBNeVNRTOOB
i+OCieWkp+mHj+OBruODrOOCs+ODvOODieOCkuOBoeOBvuOBoeOBvuWJiumZpOOBmeOCi+ODoeOD
ol0oaHR0cHM6Ly95b2t1MDgyNS5ibG9nc3BvdC5jb20vMjAxNy8xMS9teXNxbC5odG1sKSDjga4g
44CMaWTjgYzmlbDlgKTlnovjgI3jga7mmYLjga7jgoTjgormlrk8L3A+PHA+PGJyPjwvcD48cD5g
YGA8L3A+PHA+JCBmb3IgKChpPSRtaW47IGkmbHQ7PSRtYXg7IGkrPSRsaW1pdCkpOyBkbyZuYnNw
OzwvcD48cD4mbmJzcDsgbXlzcWwgLXZlICJERUxFVEUgRlJPTSB0MSBXSEVSRSBpZCBCRVRXRUVO
ICRpIEFORCAkaSskbGltaXQgQU5EICRvcmlnaW5hbF93aGVyZV9jbGF1c2UiPC9wPjxwPiZuYnNw
O3NsZWVwICRzbGVlcDwvcD48cD5kb25lPC9wPjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj4jIyDlnKfnuK7jgZfjgarjgYzjgol4dHJhYmFja3Vw44KS5Y+W
44KLPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4tIOODleOCoeOCpOODq+ODquODgOOCpOODrOOC
r+ODiOOBp+OBquOBjyBgc3NoICJjYXQgLSAmZ3Q7IC4uImAg44Go44GL44Gr44OR44Kk44OX44GZ
44KM44Gw44Oq44Oi44O844OI44Gr44KC6Lui6YCB44Gn44GN44KLPC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCB4dHJhYmFja3VwIC11
cm9vdCAtLXN0cmVhbT14YnN0cmVhbSAtLWJhY2t1cCB8IHB6c3RkIC1jICZndDsgeHRyYWJhY2t1
cC54Yi56c3Q8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+IyMg
5Zyn57iu5riI44GueGJzdHJlYW3jgpLlsZXplovjgZnjgos8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2Pi0g4oaR44Gu6YCG44OR44K/44O844OzPC9kaXY+PGRpdj4mbmJzcDsgLSDjgqvjg6zjg7Pj
g4jjg4fjgqPjg6zjgq/jg4jjg6rjgavoibLjgIXjgbbjgaHjgb7jgZHjgovjga7jgafjg6/jg7zj
gq3jg7PjgrDjg4fjgqPjg6zjgq/jg4jjg6rjgpLkvZzjgaPjgZ/mlrnjgYzoia/jgYTjgajmgJ3j
gYY8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+JCBwenN0ZCAtZGMgeHRy
YWJhY2t1cC54Yi56c3QgfCB4YnN0cmVhbSAteHY8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+IyMg44OI44Op44Oz44K244Kv44K344On44Oz44GM44Gq44GL44Gq44GL6YCU
5YiH44KM44Gq44GE44OG44O844OW44Or44Gr44Gp44GG44GX44Gm44KCQUxURVIgVEFCTEXjgZfj
gZ/jgY/jgaYx56eS44G+44Gn44Gq44KJ5L2V44Go44GL5oiR5oWi44GX44Gq44GM44KJ5oiQ5Yqf
44GZ44KL44G+44Gn44Gy44Gf44GZ44KJ44Oq44OI44Op44Kk44GZ44KLPC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj4tIDHnp5Ljgb7jgafjga7ku5bjga7jgq/jgqjjg6rjga7jg5bjg63jg4Pjgq3j
g7PjgrDjga/oqLHjgZnvvIjjgafjgarjgYTjgajjgYTjgaTjgb7jgafjgoLntYLjgo/jgonjgarj
gYTvvIk8L2Rpdj48ZGl2Pi0g44Kq44Oz44Op44Kk44OzQUxURVIgVEFCTEXjga/jgIwy5Zue44CN
44Oh44K/44OH44O844K/44Ot44OD44Kv44KS5Y+W44KL44Gu44Gn44CB6ZaL5aeL5YmN44Go57WC
5LqG55u05YmN44Gp44Gh44KJ44Gn44K/44Kk44Og44Ki44Km44OI44GZ44KL5Y+v6IO95oCn44KC
44GC44KLPC9kaXY+PGRpdj4mbmJzcDsgLSAzMOWIhuOBi+OBi+OCi0FMVEVSIFRBQkxF44GM57WC
5LqG5Yem55CG44Gu44Oh44K/44OH44O844K/44Ot44OD44Kv44Gn44K/44Kk44Og44Ki44Km44OI
44GX44Gm44KC5rOj44GL44Gq44GEPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2PiQgd2hpbGUgdHJ1ZSA7IGRvPC9kaXY+PGRpdj4mbmJzcDsgbXlzcWwgLXNzZSAiU0VUIFNF
U1NJT04gbG9ja193YWl0X3RpbWVvdXQ9IDE7IEFMVEVSIFRBQkxFIHQxIEFERCBLRVkgaWR4X3Nv
bWV0aGluZyhzb21lX2NvbHVtbikiIHx8IGJyZWFrPC9kaXY+PGRpdj4mbmJzcDsgc2xlZXAgMTwv
ZGl2PjxkaXY+ZG9uZTwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5+fuODkOODg+OCr+OCouODg+ODl+OBl+OBn+OCiuOD
quOCueODiOOCouOBl+OBn+OCiktJTEzjgZfjgZ/jgopBTFRFUiBUQUJMReeEoemZkOODquODiOOD
qeOCpOOBquOCk+OBpuOBk+OBqOOCkuOBl+OCh+OBo+OBoeOCheOBhuOChOOBo+OBpuOCi+OCk+OB
p+OBmeOBreOCj+OBi+OCiuOBvuOBme+8ge+8iO+8iX5+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj7mmI7ml6Xjga8gW3Rha2FfeXVraV8wNF0oaHR0cHM6Ly90d2l0dGVy
LmNvbS90YWthX3l1a2lfMDQpIOOBleOCk+OBp+OBme+8gTwvZGl2Pg=="></div><p></p><p style="-webkit-text-stroke-width: 0px; color: black; font-family: Meiryo; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1.2em !important; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">明日は<span> </span><a href="https://twitter.com/taka_yuki_04" target="_blank">taka_yuki_04</a><span> </span>さんです!</p></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-52439527176206037242023-12-05T00:08:00.006+09:002023-12-05T00:10:01.964+09:00ConoHaの上でひたすらMySQLをビルドする in 2023<p style="margin: 0px 0px 1.2em;">この記事は <a href="https://qiita.com/advent-calendar/2023/conoha" target="_blank">ConoHaのカレンダー | Advent Calendar 2023</a> と <a href="https://qiita.com/advent-calendar/2023/mysql" target="_blank">MySQLのカレンダー | Advent Calendar 2023</a> の5日目の記事です。</p><p style="margin: 0px 0px 1.2em;">去年は CentOS 9 Stream でビルドしたらしい。</p><ul style="margin: 1.2em 0px; padding-left: 2em; text-align: left;"><li style="margin: 0.5em 0px;"><a href="https://yoku0825.blogspot.com/2022/12/conohamysql.html" target="_blank">日々の覚書: また今年もConoHaの上でMySQLをビルドする季節がやってきた</a></li><li style="margin: 0.5em 0px; padding: 0px;">2021年 <a href="https://yoku0825.blogspot.com/2021/12/conohamysql-2021.html" style="color: #2288bb; text-decoration-line: none;" target="_blank">ConoHaの上でひたすらMySQLをビルドする 2021</a></li><li style="margin: 0.5em 0px; padding: 0px;"><p style="margin: 0px 0px 1.2em;">2020年 <a href="https://yoku0825.blogspot.com/2020/12/conoha-vpsmysql.html" style="color: #2288bb; text-decoration-line: none;" target="_blank">日々の覚書: 今年もConoHa VPSでひたすらMySQLをビルドする</a></p></li><li>2019年 <a href="https://yoku0825.blogspot.com/2019/12/conohamysql-in-2019.html" style="color: #2288bb; text-decoration-line: none;" target="_blank">日々の覚書: ConoHaの上でひたすらMySQLをビルドする簡単なおしごと in 2019年</a></li><li style="margin: 0.5em 0px; padding: 0px;"><p style="margin: 0px 0px 1.2em;">2018年 <a href="https://yoku0825.blogspot.com/2018/12/conohamysql-in-2018.html" style="color: #2288bb; text-decoration-line: none;" target="_blank">日々の覚書: ConoHaの上でひたすらMySQLをビルドする簡単なお仕事 in 2018</a></p></li><li>2017年 <a href="https://yoku0825.blogspot.com/2017/12/conohamysql.html" style="color: #2288bb; text-decoration-line: none;" target="_blank">日々の覚書: ConoHaの上でひたすらMySQLをビルドする簡単なお仕事</a></li><li>2016年 <a href="https://yoku0825.blogspot.com/2016/12/mysqlconoha.html" style="color: #2288bb; text-decoration-line: none;" target="_blank">日々の覚書: MySQLのビルド環境にConoHaを選んでいる理由</a></li></ul><p style="margin: 0px 0px 1.2em;">今年は Rocky Linux 8, 9 が正式にMySQLのSupported PlatformになったのでRocky Linux 9でやってみる。</p><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><a href="https://www.mysql.com/support/supportedplatforms/database.html" target="_blank">MySQL :: Supported Platforms: MySQL Database</a></li></ul><p style="margin: 0px 0px 1.2em;">(cppを足しておけば Rocky Linux 9でもビルドできた可能性がある)</p><hr /><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">
$ cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.2 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.2 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.2"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"
</code></pre><p style="margin: 0px 0px 1.2em;">MySQLは折角だから8.2.0を選ぶぜ!</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ wget https://dev.mysql.com/get/Downloads/MySQL-8.2/mysql-boost-8.2.0.tar.gz
$ tar xf mysql-boost-8.2.0.tar.gz
$ mkdir build
$ cd build
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
-bash: cmake: command not found
</code></pre><p style="margin: 0px 0px 1.2em;">まずはcmake</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install -y cmake
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
..
CMake Warning at CMakeLists.txt:397 (MESSAGE):
Could not find devtoolset compiler/linker in /opt/rh/gcc-toolset-12
CMake Warning at CMakeLists.txt:399 (MESSAGE):
You need to install the required packages:
yum install gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc
CMake Error at CMakeLists.txt:401 (MESSAGE):
Or you can set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER explicitly.
-- Configuring incomplete, errors occurred!
</code></pre><p style="margin: 0px 0px 1.2em;">メッセージの通りgcc, gcc-c++, binutilsとかを突っ込む</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install -y gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
..
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
--
Could not find system OpenSSL
Make sure you have specified a supported SSL version.
Valid options are :
openssl[0-9]+ (use alternative system library)
yes (synonym for system)
</path/to/custom/openssl/installation>
CMake Error at cmake/ssl.cmake:84 (MESSAGE):
Please install the appropriate openssl developer package.
Call Stack (most recent call first):
cmake/ssl.cmake:346 (FATAL_SSL_NOT_FOUND_ERROR)
cmake/ssl.cmake:518 (FIND_SYSTEM_OPENSSL)
CMakeLists.txt:1831 (MYSQL_CHECK_SSL)
</code></pre><p style="margin: 0px 0px 1.2em;">次はopenssl-devel</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install -y openssl-devel
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
..
CMake Error at cmake/readline.cmake:92 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:126 (FIND_CURSES)
cmake/readline.cmake:220 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:1934 (MYSQL_CHECK_EDITLINE)
</code></pre><p style="margin: 0px 0px 1.2em;">ncurses-devel. これはCMaKeCache.txt消してあげないといけないやつ。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install -y ncurses-devel
$ rm CMakeCache.txt
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
..
CMake Warning at cmake/rpc.cmake:40 (MESSAGE):
Cannot find RPC development libraries. You need to install the required
packages:
Debian/Ubuntu: apt install libtirpc-dev
RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
cmake/rpc.cmake:96 (WARN_MISSING_SYSTEM_TIRPC)
plugin/group_replication/libmysqlgcs/cmake/configure.cmake:34 (MYSQL_CHECK_RPC)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:31 (INCLUDE)
CMake Error at cmake/rpc.cmake:97 (MESSAGE):
Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/cmake/configure.cmake:34 (MYSQL_CHECK_RPC)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:31 (INCLUDE)
</code></pre><p style="margin: 0px 0px 1.2em;">毎年引っかかるrpc.h</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install -y libtirpc-devel
Last metadata expiration check: 0:10:10 ago on Mon Dec 4 15:11:45 2023.
No match for argument: libtirpc-devel
Error: Unable to find a match: libtirpc-devel
</code></pre><p style="margin: 0px 0px 1.2em;">エラーメッセージの通りにやるとそんなものないと言われる… <a href="https://yoku0825.blogspot.com/2022/12/conohamysql.html">去年の自分に助けられ</a> て、crbなるリポジトリにあることが判明。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install -y --enablerepo=crb libtirpc-devel
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
..
CMake Warning at cmake/rpc.cmake:29 (MESSAGE):
Cannot find rpcgen executable. You need to install the required packages:
Debian/Ubuntu: apt install rpcsvc-proto
RedHat/Fedora/Oracle Linux: yum install rpcgen
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:122 (WARN_MISSING_RPCGEN_EXECUTABLE)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:50 (INCLUDE)
CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:123 (MESSAGE):
Could not find rpcgen
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/CMakeLists.txt:50 (INCLUDE)
</code></pre><p style="margin: 0px 0px 1.2em;">rpcgenと同じものなのかと思ったらrpcgenはrpcgenでいるらしい。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install -y --enablerepo=crb rpcgen
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
..
-- Build files have been written to: /home/yoku0825/build
</code></pre><p style="margin: 0px 0px 1.2em;">cmake完了。 今年は ~さっさと終わらせたくて~ 奮発して4コア4GBのインスタンスを使ってるので少しは快適か</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ time make -j$(nproc)
..
[ 52%] Building CXX object plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/pax_msg.cc.o
In file included from /home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/pax_msg.cc:30:
/home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/app_data.h:43:1: error: ‘app_data_ptr’ does not name a type
43 | app_data_ptr clone_app_data(app_data_ptr a);
| ^~~~~~~~~~~~
/home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/app_data.h:44:1: error: ‘app_data_ptr’ does not name a type
44 | app_data_ptr clone_app_data_single(app_data_ptr a);
| ^~~~~~~~~~~~
/home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/app_data.h:45:1: error: ‘app_data_ptr’ does not name a type
45 | app_data_ptr new_app_data();
| ^~~~~~~~~~~~
..
/home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/site_def.h:67:22: warning: ‘node_no_exists’ defined but not used [-Wunused-variable]
67 | static inline bool_t node_no_exists(node_no n, site_def const *site) {
| ^~~~~~~~~~~~~~
/home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/synode_no.h:44:19: warning: ‘group_mismatch’ defined but not used [-Wunused-variable]
44 | static inline int group_mismatch(synode_no x, synode_no y) {
| ^~~~~~~~~~~~~~
make[2]: *** [plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/build.make:99: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/pax_msg.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:9709: plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/all] Error 2
make: *** [Makefile:166: all] Error 2
real 2m5.571s
user 7m22.443s
sys 0m50.147s
</code></pre><p style="margin: 0px 0px 1.2em;">あれ、転けた。。</p><p style="margin: 0px 0px 1.2em;">なんかどうもこれと同じような気がするけど解決方法が全く分からない…。</p><ul style="margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><a href="https://www.modb.pro/issue/25194" target="_blank">MYSQL 源码编译 8.0.24 无法找到app_data_ptr 类型定义 - 墨天轮问答</a></li></ul><p style="margin: 0px 0px 1.2em;">諦めてRocky Linux 8にすることにする!</p><p style="margin: 0px 0px 1.2em;">改めて。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ cat /etc/os-release
NAME="Rocky Linux"
VERSION="8.7 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.7"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.7 (Green Obsidian)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:8:GA"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-8"
ROCKY_SUPPORT_PRODUCT_VERSION="8.7"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.7"
$ sudo dnf install -y cmake gcc-toolset-12-gcc gcc-toolset-12-gcc-c++ gcc-toolset-12-binutils gcc-toolset-12-annobin-annocheck gcc-toolset-12-annobin-plugin-gcc openssl-devel ncurses-devel --enablerepo=powertools libtirpc-devel rpcgen
$ wget https://dev.mysql.com/get/Downloads/MySQL-8.2/mysql-boost-8.2.0.tar.gz
$ tar xf mysql-boost-8.2.0.tar.gz
$ mkdir build
$ cd build
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
$ time make -j$(nproc)
..
[ 13%] Generating xdr_gen/xcom_vp.h, xdr_gen/xcom_vp_xdr.c
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
[ 13%] Building CXX object extra/icu/CMakeFiles/icuuc.dir/icu-release-73-1/source/common/ucnv_lmb.cpp.o
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
[ 13%] Building CXX object mysys/CMakeFiles/mysys_objlib.dir/my_kdf.cc.o
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
[ 13%] Building CXX object extra/icu/CMakeFiles/icui18n.dir/icu-release-73-1/source/i18n/nortrans.cpp.o
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
cannot find C preprocessor: cpp
/usr/bin/rpcgen: C preprocessor failed with exit code 1
[ 13%] Building CXX object plugin/group_replication/libmysqlgcs/CMakeFiles/mysqlgcs.dir/src/bindings/xcom/xcom/pax_msg.cc.o
In file included from /home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/pax_msg.cc:30:
/home/yoku0825/mysql-8.2.0/plugin/group_replication/libmysqlgcs/src/bindings/xcom/xcom/app_data.h:43:1: error: 'app_data_ptr' does not name a type
43 | app_data_ptr clone_app_data(app_data_ptr a);
| ^~~~~~~~~~~~
..
</code></pre><p style="margin: 0px 0px 1.2em;">もしかして <span style="background-color: #f8f8f8; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 13.6px; white-space: pre;">cannot find C preprocessor: cpp を見落としてた?</span></p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo dnf install cpp
$ time make -j$(nproc)
..
</code></pre><p style="margin: 0px 0px 1.2em;"><strike>違った。</strike> なんかrpcgenをもう一度やってない気がしたのでビルドディレクトリを綺麗にしてもう一度makeしてみる。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ rm -r *
$ cmake -DWITH_BOOST=../mysql-8.2.0/boost ../mysql-8.2.0
$ make -j$(nproc)
..
[100%] Building CXX object unittest/gunit/CMakeFiles/merge_large_tests-t.dir/__/__/storage/example/ha_example.cc.o
[100%] Linking CXX executable ../../runtime_output_directory/merge_large_tests-t
[100%] Built target merge_large_tests-t
</code></pre><p style="margin: 0px 0px 1.2em;">上手くいったじゃん…。</p><p style="margin: 0px 0px 1.2em;">ということはcppを足してからやり直せばRocky Linux 9でも上手くいくかも知れない。初回で見落として繰り返してしまったか…。</p><p style="margin: 0px 0px 1.2em;">けど、それは来年にでもやるとして今年もお疲れさまでした。</p><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+44GT44Gu6KiY5LqL44GvJm5ic3A7W0Nvbm9IYeOBruOCq+ODrOODs+ODgOODvCBcfCBBZHZl
bnQgQ2FsZW5kYXIgMjAyM10oaHR0cHM6Ly9xaWl0YS5jb20vYWR2ZW50LWNhbGVuZGFyLzIwMjMv
Y29ub2hhKSDjgagmbmJzcDtbTXlTUUzjga7jgqvjg6zjg7Pjg4Djg7wgXHwgQWR2ZW50IENhbGVu
ZGFyIDIwMjNdKGh0dHBzOi8vcWlpdGEuY29tL2FkdmVudC1jYWxlbmRhci8yMDIzL215c3FsKSDj
ga415pel55uu44Gu6KiY5LqL44Gn44GZ44CCPC9wPjxwPjxicj48L3A+PHA+5Y675bm044GvIENl
bnRPUyA5IFN0cmVhbSDjgafjg5Pjg6vjg4njgZfjgZ/jgonjgZfjgYTjgII8L3A+PHA+LSBb5pel
44CF44Gu6Kaa5pu4OiDjgb7jgZ/ku4rlubTjgoJDb25vSGHjga7kuIrjgadNeVNRTOOCkuODk+OD
q+ODieOBmeOCi+Wto+evgOOBjOOChOOBo+OBpuOBjeOBn10oaHR0cHM6Ly95b2t1MDgyNS5ibG9n
c3BvdC5jb20vMjAyMi8xMi9jb25vaGFteXNxbC5odG1sKTwvcD48cD48YnI+PC9wPjxwPuS7iuW5
tOOBryBSb2NreSBMaW51eCA4LCA5IOOBjOato+W8j+OBq015U1FM44GuU3VwcG9ydGVkIFBsYXRm
b3Jt44Gr44Gq44Gj44Gf44Gu44GnUm9ja3kgTGludXggOeOBp+OChOOBo+OBpuOBv+OCi+OAgjwv
cD48cD4tIFtNeVNRTCA6OiBTdXBwb3J0ZWQgUGxhdGZvcm1zOiBNeVNRTCBEYXRhYmFzZV0oaHR0
cHM6Ly93d3cubXlzcWwuY29tL3N1cHBvcnQvc3VwcG9ydGVkcGxhdGZvcm1zL2RhdGFiYXNlLmh0
bWwpPC9wPjxwPjxicj48L3A+PHA+PGJyPjwvcD48cD4oY3Bw44KS6Laz44GX44Gm44GK44GR44Gw
IFJvY2t5IExpbnV4IDnjgafjgoLjg5Pjg6vjg4njgafjgY3jgZ/lj6/og73mgKfjgYzjgYLjgosp
PC9wPjxwPjxicj48L3A+PHA+LS0tLTwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIGNhdCAv
ZXRjL29zLXJlbGVhc2U8L3A+PHA+TkFNRT0iUm9ja3kgTGludXgiPC9wPjxwPlZFUlNJT049Ijku
MiAoQmx1ZSBPbnl4KSI8L3A+PHA+SUQ9InJvY2t5IjwvcD48cD5JRF9MSUtFPSJyaGVsIGNlbnRv
cyBmZWRvcmEiPC9wPjxwPlZFUlNJT05fSUQ9IjkuMiI8L3A+PHA+UExBVEZPUk1fSUQ9InBsYXRm
b3JtOmVsOSI8L3A+PHA+UFJFVFRZX05BTUU9IlJvY2t5IExpbnV4IDkuMiAoQmx1ZSBPbnl4KSI8
L3A+PHA+QU5TSV9DT0xPUj0iMDszMiI8L3A+PHA+TE9HTz0iZmVkb3JhLWxvZ28taWNvbiI8L3A+
PHA+Q1BFX05BTUU9ImNwZTovbzpyb2NreTpyb2NreTo5OjpiYXNlb3MiPC9wPjxwPkhPTUVfVVJM
PSJodHRwczovL3JvY2t5bGludXgub3JnLyI8L3A+PHA+QlVHX1JFUE9SVF9VUkw9Imh0dHBzOi8v
YnVncy5yb2NreWxpbnV4Lm9yZy8iPC9wPjxwPlNVUFBPUlRfRU5EPSIyMDMyLTA1LTMxIjwvcD48
cD5ST0NLWV9TVVBQT1JUX1BST0RVQ1Q9IlJvY2t5LUxpbnV4LTkiPC9wPjxwPlJPQ0tZX1NVUFBP
UlRfUFJPRFVDVF9WRVJTSU9OPSI5LjIiPC9wPjxwPlJFREhBVF9TVVBQT1JUX1BST0RVQ1Q9IlJv
Y2t5IExpbnV4IjwvcD48cD5SRURIQVRfU1VQUE9SVF9QUk9EVUNUX1ZFUlNJT049IjkuMiI8L3A+
PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk15U1FM44Gv5oqY6KeS44Gg44GL44KJ
OC4yLjDjgpLpgbjjgbbjgZzvvIE8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2Pjxk
aXY+JCB3Z2V0IGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9nZXQvRG93bmxvYWRzL015U1FMLTguMi9t
eXNxbC1ib29zdC04LjIuMC50YXIuZ3o8L2Rpdj48ZGl2PiQgdGFyIHhmJm5ic3A7bXlzcWwtYm9v
c3QtOC4yLjAudGFyLmd6PC9kaXY+PGRpdj4kIG1rZGlyIGJ1aWxkPC9kaXY+PGRpdj4kIGNkIGJ1
aWxkPC9kaXY+PGRpdj48ZGl2PiQgY21ha2UgLURXSVRIX0JPT1NUPS4uL215c3FsLTguMi4wL2Jv
b3N0IC4uL215c3FsLTguMi4wPC9kaXY+PGRpdj4tYmFzaDogY21ha2U6IGNvbW1hbmQgbm90IGZv
dW5kPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOBvuOBmuOB
r2NtYWtlPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PiQgc3VkbyBkbmYg
aW5zdGFsbCAteSBjbWFrZTwvZGl2PjxkaXY+JCBjbWFrZSAtRFdJVEhfQk9PU1Q9Li4vbXlzcWwt
OC4yLjAvYm9vc3QgLi4vbXlzcWwtOC4yLjA8L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48ZGl2PkNN
YWtlIFdhcm5pbmcgYXQgQ01ha2VMaXN0cy50eHQ6Mzk3IChNRVNTQUdFKTo8L2Rpdj48ZGl2PiZu
YnNwOyBDb3VsZCBub3QgZmluZCBkZXZ0b29sc2V0IGNvbXBpbGVyL2xpbmtlciBpbiAvb3B0L3Jo
L2djYy10b29sc2V0LTEyPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5D
TWFrZSBXYXJuaW5nIGF0IENNYWtlTGlzdHMudHh0OjM5OSAoTUVTU0FHRSk6PC9kaXY+PGRpdj4m
bmJzcDsgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgcmVxdWlyZWQgcGFja2FnZXM6PC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7eXVtIGluc3RhbGwgZ2NjLXRvb2xzZXQtMTIt
Z2NjIGdjYy10b29sc2V0LTEyLWdjYy1jKysgZ2NjLXRvb2xzZXQtMTItYmludXRpbHMgZ2NjLXRv
b2xzZXQtMTItYW5ub2Jpbi1hbm5vY2hlY2sgZ2NjLXRvb2xzZXQtMTItYW5ub2Jpbi1wbHVnaW4t
Z2NjPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj5DTWFrZSBFcnJvciBhdCBDTWFrZUxpc3RzLnR4dDo0MDEgKE1FU1NBR0UpOjwvZGl2PjxkaXY+
Jm5ic3A7IE9yIHlvdSBjYW4gc2V0IENNQUtFX0NfQ09NUElMRVIgYW5kIENNQUtFX0NYWF9DT01Q
SUxFUiBleHBsaWNpdGx5LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
LS0gQ29uZmlndXJpbmcgaW5jb21wbGV0ZSwgZXJyb3JzIG9jY3VycmVkITwvZGl2PjwvZGl2Pjxk
aXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jg6Hjg4Pjgrvjg7zjgrjjga7pgJrjgopn
Y2MsIGdjYy1jKyssIGJpbnV0aWxz44Go44GL44KS56qB44Gj6L6844KAPC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBzdWRvIGRuZiBpbnN0YWxsIC15IGdjYy10
b29sc2V0LTEyLWdjYyBnY2MtdG9vbHNldC0xMi1nY2MtYysrIGdjYy10b29sc2V0LTEyLWJpbnV0
aWxzIGdjYy10b29sc2V0LTEyLWFubm9iaW4tYW5ub2NoZWNrIGdjYy10b29sc2V0LTEyLWFubm9i
aW4tcGx1Z2luLWdjYzwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj4kIGNtYWtl
IC1EV0lUSF9CT09TVD0uLi9teXNxbC04LjIuMC9ib29zdCAuLi9teXNxbC04LjIuMDwvZGl2Pjwv
ZGl2PjxkaXY+Li48L2Rpdj48ZGl2PjxkaXY+LS0gQ291bGQgTk9UIGZpbmQgT3BlblNTTCwgdHJ5
IHRvIHNldCB0aGUgcGF0aCB0byBPcGVuU1NMIHJvb3QgZm9sZGVyIGluIHRoZSBzeXN0ZW0gdmFy
aWFibGUgT1BFTlNTTF9ST09UX0RJUiAobWlzc2luZzogT1BFTlNTTF9DUllQVE9fTElCUkFSWSBP
UEVOU1NMX0lOQ0xVREVfRElSKTwvZGl2PjxkaXY+LS08L2Rpdj48ZGl2PkNvdWxkIG5vdCBmaW5k
IHN5c3RlbSBPcGVuU1NMPC9kaXY+PGRpdj5NYWtlIHN1cmUgeW91IGhhdmUgc3BlY2lmaWVkIGEg
c3VwcG9ydGVkIFNTTCB2ZXJzaW9uLjwvZGl2PjxkaXY+VmFsaWQgb3B0aW9ucyBhcmUgOjwvZGl2
PjxkaXY+b3BlbnNzbFswLTldKyAodXNlIGFsdGVybmF0aXZlIHN5c3RlbSBsaWJyYXJ5KTwvZGl2
PjxkaXY+eWVzIChzeW5vbnltIGZvciBzeXN0ZW0pPC9kaXY+PGRpdj4mbHQ7L3BhdGgvdG8vY3Vz
dG9tL29wZW5zc2wvaW5zdGFsbGF0aW9uJmd0OzwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+Q01h
a2UgRXJyb3IgYXQgY21ha2Uvc3NsLmNtYWtlOjg0IChNRVNTQUdFKTo8L2Rpdj48ZGl2PiZuYnNw
OyBQbGVhc2UgaW5zdGFsbCB0aGUgYXBwcm9wcmlhdGUgb3BlbnNzbCBkZXZlbG9wZXIgcGFja2Fn
ZS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkNhbGwgU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwg
Zmlyc3QpOjwvZGl2PjxkaXY+Jm5ic3A7IGNtYWtlL3NzbC5jbWFrZTozNDYgKEZBVEFMX1NTTF9O
T1RfRk9VTkRfRVJST1IpPC9kaXY+PGRpdj4mbmJzcDsgY21ha2Uvc3NsLmNtYWtlOjUxOCAoRklO
RF9TWVNURU1fT1BFTlNTTCk8L2Rpdj48ZGl2PiZuYnNwOyBDTWFrZUxpc3RzLnR4dDoxODMxIChN
WVNRTF9DSEVDS19TU0wpPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PuasoeOBr29wZW5zc2wtZGV2ZWw8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+JCBzdWRvIGRuZiBpbnN0YWxsIC15IG9wZW5zc2wtZGV2ZWw8L2Rpdj48ZGl2PiQgY21h
a2UgLURXSVRIX0JPT1NUPS4uL215c3FsLTguMi4wL2Jvb3N0IC4uL215c3FsLTguMi4wPC9kaXY+
PGRpdj4uLjwvZGl2PjxkaXY+PGRpdj5DTWFrZSBFcnJvciBhdCBjbWFrZS9yZWFkbGluZS5jbWFr
ZTo5MiAoTUVTU0FHRSk6PC9kaXY+PGRpdj4mbmJzcDsgQ3Vyc2VzIGxpYnJhcnkgbm90IGZvdW5k
LiZuYnNwOyBQbGVhc2UgaW5zdGFsbCBhcHByb3ByaWF0ZSBwYWNrYWdlLDwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgcmVtb3ZlIENNYWtlQ2FjaGUudHh0IGFu
ZCByZXJ1biBjbWFrZS5PbiBEZWJpYW4vVWJ1bnR1LCBwYWNrYWdlIG5hbWUgaXMgbGlibmN1cnNl
czUtZGV2LCBvbiBSZWRoYXQgYW5kIGRlcml2YXRlcyBpdCBpcyBuY3Vyc2VzLWRldmVsLjwvZGl2
PjxkaXY+Q2FsbCBTdGFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6PC9kaXY+PGRpdj4mbmJz
cDsgY21ha2UvcmVhZGxpbmUuY21ha2U6MTI2IChGSU5EX0NVUlNFUyk8L2Rpdj48ZGl2PiZuYnNw
OyBjbWFrZS9yZWFkbGluZS5jbWFrZToyMjAgKE1ZU1FMX1VTRV9CVU5ETEVEX0VESVRMSU5FKTwv
ZGl2PjxkaXY+Jm5ic3A7IENNYWtlTGlzdHMudHh0OjE5MzQgKE1ZU1FMX0NIRUNLX0VESVRMSU5F
KTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5uY3Vyc2VzLWRl
dmVsLiDjgZPjgozjga9DTWFLZUNhY2hlLnR4dOa2iOOBl+OBpuOBguOBkuOBquOBhOOBqOOBhOOB
keOBquOBhOOChOOBpOOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4k
IHN1ZG8gZG5mIGluc3RhbGwgLXkgbmN1cnNlcy1kZXZlbDwvZGl2PjxkaXY+JCBybSBDTWFrZUNh
Y2hlLnR4dDwvZGl2PjxkaXY+PGRpdj4kIGNtYWtlIC1EV0lUSF9CT09TVD0uLi9teXNxbC04LjIu
MC9ib29zdCAuLi9teXNxbC04LjIuMDwvZGl2PjxkaXY+Li48L2Rpdj48ZGl2PjxkaXY+Q01ha2Ug
V2FybmluZyBhdCBjbWFrZS9ycGMuY21ha2U6NDAgKE1FU1NBR0UpOjwvZGl2PjxkaXY+Jm5ic3A7
IENhbm5vdCBmaW5kIFJQQyBkZXZlbG9wbWVudCBsaWJyYXJpZXMuJm5ic3A7IFlvdSBuZWVkIHRv
IGluc3RhbGwgdGhlIHJlcXVpcmVkPC9kaXY+PGRpdj4mbmJzcDsgcGFja2FnZXM6PC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IERlYmlhbi9VYnVudHU6Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGFwdCBpbnN0YWxsIGxpYnRpcnBj
LWRldjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBSZWRIYXQvRmVkb3JhL09yYWNsZSBMaW51eDog
eXVtIGluc3RhbGwgbGlidGlycGMtZGV2ZWw8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgU3VTRTom
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3p5cHBlciBpbnN0YWxsIGdsaWJjLWRldmVsPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj5DYWxsIFN0YWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTo8
L2Rpdj48ZGl2PiZuYnNwOyBjbWFrZS9ycGMuY21ha2U6OTYgKFdBUk5fTUlTU0lOR19TWVNURU1f
VElSUEMpPC9kaXY+PGRpdj4mbmJzcDsgcGx1Z2luL2dyb3VwX3JlcGxpY2F0aW9uL2xpYm15c3Fs
Z2NzL2NtYWtlL2NvbmZpZ3VyZS5jbWFrZTozNCAoTVlTUUxfQ0hFQ0tfUlBDKTwvZGl2PjxkaXY+
Jm5ic3A7IHBsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJteXNxbGdjcy9DTWFrZUxpc3RzLnR4
dDozMSAoSU5DTFVERSk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkNN
YWtlIEVycm9yIGF0IGNtYWtlL3JwYy5jbWFrZTo5NyAoTUVTU0FHRSk6PC9kaXY+PGRpdj4mbmJz
cDsgQ291bGQgbm90IGZpbmQgcnBjL3JwYy5oIGluIC91c3IvaW5jbHVkZSBvciAvdXNyL2luY2x1
ZGUvdGlycGM8L2Rpdj48ZGl2PkNhbGwgU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOjwv
ZGl2PjxkaXY+Jm5ic3A7IHBsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJteXNxbGdjcy9jbWFr
ZS9jb25maWd1cmUuY21ha2U6MzQgKE1ZU1FMX0NIRUNLX1JQQyk8L2Rpdj48ZGl2PiZuYnNwOyBw
bHVnaW4vZ3JvdXBfcmVwbGljYXRpb24vbGlibXlzcWxnY3MvQ01ha2VMaXN0cy50eHQ6MzEgKElO
Q0xVREUpPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuavjuW5
tOW8leOBo+OBi+OBi+OCi3JwYy5oPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48
ZGl2PiQgc3VkbyBkbmYgaW5zdGFsbCAteSBsaWJ0aXJwYy1kZXZlbDwvZGl2PjxkaXY+PGRpdj5M
YXN0IG1ldGFkYXRhIGV4cGlyYXRpb24gY2hlY2s6IDA6MTA6MTAgYWdvIG9uIE1vbiBEZWMmbmJz
cDsgNCAxNToxMTo0NSAyMDIzLjwvZGl2PjxkaXY+Tm8gbWF0Y2ggZm9yIGFyZ3VtZW50OiBsaWJ0
aXJwYy1kZXZlbDwvZGl2PjxkaXY+RXJyb3I6IFVuYWJsZSB0byBmaW5kIGEgbWF0Y2g6IGxpYnRp
cnBjLWRldmVsPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOC
qOODqeODvOODoeODg+OCu+ODvOOCuOOBrumAmuOCiuOBq+OChOOCi+OBqOOBneOCk+OBquOCguOB
ruOBquOBhOOBqOiogOOCj+OCjOOCi+KApiZuYnNwOyBb5Y675bm044Gu6Ieq5YiG44Gr5Yqp44GR
44KJ44KMXShodHRwczovL3lva3UwODI1LmJsb2dzcG90LmNvbS8yMDIyLzEyL2Nvbm9oYW15c3Fs
Lmh0bWwpIOOBpuOAgWNyYuOBquOCi+ODquODneOCuOODiOODquOBq+OBguOCi+OBk+OBqOOBjOWI
pOaYjuOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4kIHN1ZG8gZG5m
IGluc3RhbGwgLXkgLS1lbmFibGVyZXBvPWNyYiBsaWJ0aXJwYy1kZXZlbDwvZGl2PjxkaXY+PGRp
dj4kIGNtYWtlIC1EV0lUSF9CT09TVD0uLi9teXNxbC04LjIuMC9ib29zdCAuLi9teXNxbC04LjIu
MDwvZGl2PjwvZGl2PjxkaXY+Li48L2Rpdj48ZGl2PjxkaXY+Q01ha2UgV2FybmluZyBhdCBjbWFr
ZS9ycGMuY21ha2U6MjkgKE1FU1NBR0UpOjwvZGl2PjxkaXY+Jm5ic3A7IENhbm5vdCBmaW5kIHJw
Y2dlbiBleGVjdXRhYmxlLiZuYnNwOyBZb3UgbmVlZCB0byBpbnN0YWxsIHRoZSByZXF1aXJlZCBw
YWNrYWdlczo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgRGViaWFuL1Vi
dW50dTombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgYXB0
IGluc3RhbGwgcnBjc3ZjLXByb3RvPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IFJlZEhhdC9GZWRv
cmEvT3JhY2xlIExpbnV4OiB5dW0gaW5zdGFsbCBycGNnZW48L2Rpdj48ZGl2PiZuYnNwOyAmbmJz
cDsgU3VTRTombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3p5cHBlciBpbnN0YWxsIGdsaWJjLWRl
dmVsPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5DYWxsIFN0YWNrIChtb3N0IHJlY2VudCBjYWxs
IGZpcnN0KTo8L2Rpdj48ZGl2PiZuYnNwOyBwbHVnaW4vZ3JvdXBfcmVwbGljYXRpb24vbGlibXlz
cWxnY3MvY21ha2UvcnBjZ2VuLmNtYWtlOjEyMiAoV0FSTl9NSVNTSU5HX1JQQ0dFTl9FWEVDVVRB
QkxFKTwvZGl2PjxkaXY+Jm5ic3A7IHBsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJteXNxbGdj
cy9DTWFrZUxpc3RzLnR4dDo1MCAoSU5DTFVERSk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PkNNYWtlIEVycm9yIGF0IHBsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJt
eXNxbGdjcy9jbWFrZS9ycGNnZW4uY21ha2U6MTIzIChNRVNTQUdFKTo8L2Rpdj48ZGl2PiZuYnNw
OyBDb3VsZCBub3QgZmluZCBycGNnZW48L2Rpdj48ZGl2PkNhbGwgU3RhY2sgKG1vc3QgcmVjZW50
IGNhbGwgZmlyc3QpOjwvZGl2PjxkaXY+Jm5ic3A7IHBsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9s
aWJteXNxbGdjcy9DTWFrZUxpc3RzLnR4dDo1MCAoSU5DTFVERSk8L2Rpdj48L2Rpdj48ZGl2PmBg
YDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+cnBjZ2Vu44Go5ZCM44GY44KC44Gu44Gq44Gu44GL
44Go5oCd44Gj44Gf44KJcnBjZ2Vu44GvcnBjZ2Vu44Gn44GE44KL44KJ44GX44GE44CCPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PiQgc3VkbyBkbmYgaW5zdGFsbCAteSAt
LWVuYWJsZXJlcG89Y3JiIHJwY2dlbjwvZGl2PjxkaXY+PGRpdj4kIGNtYWtlIC1EV0lUSF9CT09T
VD0uLi9teXNxbC04LjIuMC9ib29zdCAuLi9teXNxbC04LjIuMDwvZGl2PjxkaXY+Li48L2Rpdj48
ZGl2PjxkaXY+LS0gQnVpbGQgZmlsZXMgaGF2ZSBiZWVuIHdyaXR0ZW4gdG86IC9ob21lL3lva3Uw
ODI1L2J1aWxkPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmNt
YWtl5a6M5LqG44CCIOS7iuW5tOOBryB+44GV44Gj44GV44Go57WC44KP44KJ44Gb44Gf44GP44Gm
fiDlpa7nmbrjgZfjgaY044Kz44KiNEdC44Gu44Kk44Oz44K544K/44Oz44K544KS5L2/44Gj44Gm
44KL44Gu44Gn5bCR44GX44Gv5b+r6YGp44GLPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8
L2Rpdj48ZGl2PiQgdGltZSBtYWtlIC1qJChucHJvYyk8L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48
ZGl2PjxkaXY+WyA1MiVdIEJ1aWxkaW5nIENYWCBvYmplY3QgcGx1Z2luL2dyb3VwX3JlcGxpY2F0
aW9uL2xpYm15c3FsZ2NzL0NNYWtlRmlsZXMvbXlzcWxnY3MuZGlyL3NyYy9iaW5kaW5ncy94Y29t
L3hjb20vcGF4X21zZy5jYy5vPC9kaXY+PGRpdj5JbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUv
eW9rdTA4MjUvbXlzcWwtOC4yLjAvcGx1Z2luL2dyb3VwX3JlcGxpY2F0aW9uL2xpYm15c3FsZ2Nz
L3NyYy9iaW5kaW5ncy94Y29tL3hjb20vcGF4X21zZy5jYzozMDo8L2Rpdj48ZGl2Pi9ob21lL3lv
a3UwODI1L215c3FsLTguMi4wL3BsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJteXNxbGdjcy9z
cmMvYmluZGluZ3MveGNvbS94Y29tL2FwcF9kYXRhLmg6NDM6MTogZXJyb3I6IOKAmGFwcF9kYXRh
X3B0cuKAmSBkb2VzIG5vdCBuYW1lIGEgdHlwZTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOzQzIHwg
YXBwX2RhdGFfcHRyIGNsb25lX2FwcF9kYXRhKGFwcF9kYXRhX3B0ciBhKTs8L2Rpdj48ZGl2PiZu
YnNwOyAmbmJzcDsgJm5ic3A7IHwgXn5+fn5+fn5+fn5+PC9kaXY+PGRpdj4vaG9tZS95b2t1MDgy
NS9teXNxbC04LjIuMC9wbHVnaW4vZ3JvdXBfcmVwbGljYXRpb24vbGlibXlzcWxnY3Mvc3JjL2Jp
bmRpbmdzL3hjb20veGNvbS9hcHBfZGF0YS5oOjQ0OjE6IGVycm9yOiDigJhhcHBfZGF0YV9wdHLi
gJkgZG9lcyBub3QgbmFtZSBhIHR5cGU8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDs0NCB8IGFwcF9k
YXRhX3B0ciBjbG9uZV9hcHBfZGF0YV9zaW5nbGUoYXBwX2RhdGFfcHRyIGEpOzwvZGl2PjxkaXY+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBefn5+fn5+fn5+fn48L2Rpdj48ZGl2Pi9ob21lL3lva3Uw
ODI1L215c3FsLTguMi4wL3BsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJteXNxbGdjcy9zcmMv
YmluZGluZ3MveGNvbS94Y29tL2FwcF9kYXRhLmg6NDU6MTogZXJyb3I6IOKAmGFwcF9kYXRhX3B0
cuKAmSBkb2VzIG5vdCBuYW1lIGEgdHlwZTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOzQ1IHwgYXBw
X2RhdGFfcHRyIG5ld19hcHBfZGF0YSgpOzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
fCBefn5+fn5+fn5+fn48L2Rpdj48L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48ZGl2Pi9ob21lL3lv
a3UwODI1L215c3FsLTguMi4wL3BsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJteXNxbGdjcy9z
cmMvYmluZGluZ3MveGNvbS94Y29tL3NpdGVfZGVmLmg6Njc6MjI6IHdhcm5pbmc6IOKAmG5vZGVf
bm9fZXhpc3Rz4oCZIGRlZmluZWQgYnV0IG5vdCB1c2VkIFstV3VudXNlZC12YXJpYWJsZV08L2Rp
dj48ZGl2PiZuYnNwOyAmbmJzcDs2NyB8IHN0YXRpYyBpbmxpbmUgYm9vbF90IG5vZGVfbm9fZXhp
c3RzKG5vZGVfbm8gbiwgc2l0ZV9kZWYgY29uc3QgKnNpdGUpIHs8L2Rpdj48ZGl2PiZuYnNwOyAm
bmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IF5+fn5+fn5+fn5+fn5+PC9kaXY+PGRp
dj4vaG9tZS95b2t1MDgyNS9teXNxbC04LjIuMC9wbHVnaW4vZ3JvdXBfcmVwbGljYXRpb24vbGli
bXlzcWxnY3Mvc3JjL2JpbmRpbmdzL3hjb20veGNvbS9zeW5vZGVfbm8uaDo0NDoxOTogd2Fybmlu
Zzog4oCYZ3JvdXBfbWlzbWF0Y2jigJkgZGVmaW5lZCBidXQgbm90IHVzZWQgWy1XdW51c2VkLXZh
cmlhYmxlXTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOzQ0IHwgc3RhdGljIGlubGluZSBpbnQgZ3Jv
dXBfbWlzbWF0Y2goc3lub2RlX25vIHgsIHN5bm9kZV9ubyB5KSB7PC9kaXY+PGRpdj4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Xn5+fn5+fn5+fn5+fn48L2Rpdj48ZGl2Pm1ha2Vb
Ml06ICoqKiBbcGx1Z2luL2dyb3VwX3JlcGxpY2F0aW9uL2xpYm15c3FsZ2NzL0NNYWtlRmlsZXMv
bXlzcWxnY3MuZGlyL2J1aWxkLm1ha2U6OTk6IHBsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJt
eXNxbGdjcy9DTWFrZUZpbGVzL215c3FsZ2NzLmRpci9zcmMvYmluZGluZ3MveGNvbS94Y29tL3Bh
eF9tc2cuY2Mub10gRXJyb3IgMTwvZGl2PjxkaXY+bWFrZVsxXTogKioqIFtDTWFrZUZpbGVzL01h
a2VmaWxlMjo5NzA5OiBwbHVnaW4vZ3JvdXBfcmVwbGljYXRpb24vbGlibXlzcWxnY3MvQ01ha2VG
aWxlcy9teXNxbGdjcy5kaXIvYWxsXSBFcnJvciAyPC9kaXY+PGRpdj5tYWtlOiAqKiogW01ha2Vm
aWxlOjE2NjogYWxsXSBFcnJvciAyPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5yZWFs
Jm5ic3A7ICZuYnNwOyAybTUuNTcxczwvZGl2PjxkaXY+dXNlciZuYnNwOyAmbmJzcDsgN20yMi40
NDNzPC9kaXY+PGRpdj5zeXMmbmJzcDsgJm5ic3A7ICZuYnNwOzBtNTAuMTQ3czwvZGl2PjwvZGl2
PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgYLjgozjgIHou6LjgZHjgZ/jgILj
gII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOBquOCk+OBi+OBqeOBhuOCguOBk+OCjOOBqOWQ
jOOBmOOCiOOBhuOBquawl+OBjOOBmeOCi+OBkeOBqeino+axuuaWueazleOBjOWFqOOBj+WIhuOB
i+OCieOBquOBhOKApuOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+LSBbTVlTUUwg5rqQ56CB
57yW6K+RIDhcLjBcLjI0IOaXoOazleaJvuWIsGFwcFxfZGF0YVxfcHRyIOexu+Wei+WumuS5iSBc
LSDloqjlpKnova7pl67nrZRdKGh0dHBzOi8vd3d3Lm1vZGIucHJvL2lzc3VlLzI1MTk0KTwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+6Kum44KB
44GmUm9ja3kgTGludXggOOOBq+OBmeOCi+OBk+OBqOOBq+OBmeOCi++8gTwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+5pS544KB44Gm44CCPC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBjYXQgL2V0Yy9vcy1yZWxlYXNlPC9kaXY+PGRp
dj5OQU1FPSJSb2NreSBMaW51eCI8L2Rpdj48ZGl2PlZFUlNJT049IjguNyAoR3JlZW4gT2JzaWRp
YW4pIjwvZGl2PjxkaXY+SUQ9InJvY2t5IjwvZGl2PjxkaXY+SURfTElLRT0icmhlbCBjZW50b3Mg
ZmVkb3JhIjwvZGl2PjxkaXY+VkVSU0lPTl9JRD0iOC43IjwvZGl2PjxkaXY+UExBVEZPUk1fSUQ9
InBsYXRmb3JtOmVsOCI8L2Rpdj48ZGl2PlBSRVRUWV9OQU1FPSJSb2NreSBMaW51eCA4LjcgKEdy
ZWVuIE9ic2lkaWFuKSI8L2Rpdj48ZGl2PkFOU0lfQ09MT1I9IjA7MzIiPC9kaXY+PGRpdj5MT0dP
PSJmZWRvcmEtbG9nby1pY29uIjwvZGl2PjxkaXY+Q1BFX05BTUU9ImNwZTovbzpyb2NreTpyb2Nr
eTo4OkdBIjwvZGl2PjxkaXY+SE9NRV9VUkw9Imh0dHBzOi8vcm9ja3lsaW51eC5vcmcvIjwvZGl2
PjxkaXY+QlVHX1JFUE9SVF9VUkw9Imh0dHBzOi8vYnVncy5yb2NreWxpbnV4Lm9yZy8iPC9kaXY+
PGRpdj5ST0NLWV9TVVBQT1JUX1BST0RVQ1Q9IlJvY2t5LUxpbnV4LTgiPC9kaXY+PGRpdj5ST0NL
WV9TVVBQT1JUX1BST0RVQ1RfVkVSU0lPTj0iOC43IjwvZGl2PjxkaXY+UkVESEFUX1NVUFBPUlRf
UFJPRFVDVD0iUm9ja3kgTGludXgiPC9kaXY+PGRpdj5SRURIQVRfU1VQUE9SVF9QUk9EVUNUX1ZF
UlNJT049IjguNyI8L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiQgc3VkbyBkbmYgaW5z
dGFsbCAteSBjbWFrZSBnY2MtdG9vbHNldC0xMi1nY2MgZ2NjLXRvb2xzZXQtMTItZ2NjLWMrKyBn
Y2MtdG9vbHNldC0xMi1iaW51dGlscyBnY2MtdG9vbHNldC0xMi1hbm5vYmluLWFubm9jaGVjayBn
Y2MtdG9vbHNldC0xMi1hbm5vYmluLXBsdWdpbi1nY2Mgb3BlbnNzbC1kZXZlbCBuY3Vyc2VzLWRl
dmVsIC0tZW5hYmxlcmVwbz1wb3dlcnRvb2xzIGxpYnRpcnBjLWRldmVsIHJwY2dlbjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+PGRpdj4kIHdnZXQgaHR0cHM6Ly9kZXYubXlzcWwuY29tL2dldC9E
b3dubG9hZHMvTXlTUUwtOC4yL215c3FsLWJvb3N0LTguMi4wLnRhci5nejwvZGl2PjxkaXY+JCB0
YXIgeGYgbXlzcWwtYm9vc3QtOC4yLjAudGFyLmd6PC9kaXY+PGRpdj4kIG1rZGlyIGJ1aWxkPC9k
aXY+PGRpdj4kIGNkIGJ1aWxkPC9kaXY+PC9kaXY+PGRpdj4kIGNtYWtlIC1EV0lUSF9CT09TVD0u
Li9teXNxbC04LjIuMC9ib29zdCAuLi9teXNxbC04LjIuMDwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+PGRpdj4kIHRpbWUgbWFrZSAtaiQobnByb2MpPC9kaXY+PC9kaXY+PGRpdj4uLjwvZGl2Pjxk
aXY+PGRpdj5bIDEzJV0gR2VuZXJhdGluZyB4ZHJfZ2VuL3hjb21fdnAuaCwgeGRyX2dlbi94Y29t
X3ZwX3hkci5jPC9kaXY+PGRpdj5jYW5ub3QgZmluZCBDIHByZXByb2Nlc3NvcjogY3BwPC9kaXY+
PGRpdj4vdXNyL2Jpbi9ycGNnZW46IEMgcHJlcHJvY2Vzc29yIGZhaWxlZCB3aXRoIGV4aXQgY29k
ZSAxPC9kaXY+PGRpdj5bIDEzJV0gQnVpbGRpbmcgQ1hYIG9iamVjdCBleHRyYS9pY3UvQ01ha2VG
aWxlcy9pY3V1Yy5kaXIvaWN1LXJlbGVhc2UtNzMtMS9zb3VyY2UvY29tbW9uL3VjbnZfbG1iLmNw
cC5vPC9kaXY+PGRpdj5jYW5ub3QgZmluZCBDIHByZXByb2Nlc3NvcjogY3BwPC9kaXY+PGRpdj4v
dXNyL2Jpbi9ycGNnZW46IEMgcHJlcHJvY2Vzc29yIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxPC9k
aXY+PGRpdj5jYW5ub3QgZmluZCBDIHByZXByb2Nlc3NvcjogY3BwPC9kaXY+PGRpdj4vdXNyL2Jp
bi9ycGNnZW46IEMgcHJlcHJvY2Vzc29yIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxPC9kaXY+PGRp
dj5jYW5ub3QgZmluZCBDIHByZXByb2Nlc3NvcjogY3BwPC9kaXY+PGRpdj4vdXNyL2Jpbi9ycGNn
ZW46IEMgcHJlcHJvY2Vzc29yIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxPC9kaXY+PGRpdj5jYW5u
b3QgZmluZCBDIHByZXByb2Nlc3NvcjogY3BwPC9kaXY+PGRpdj4vdXNyL2Jpbi9ycGNnZW46IEMg
cHJlcHJvY2Vzc29yIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxPC9kaXY+PGRpdj5bIDEzJV0gQnVp
bGRpbmcgQ1hYIG9iamVjdCBteXN5cy9DTWFrZUZpbGVzL215c3lzX29iamxpYi5kaXIvbXlfa2Rm
LmNjLm88L2Rpdj48ZGl2PmNhbm5vdCBmaW5kIEMgcHJlcHJvY2Vzc29yOiBjcHA8L2Rpdj48ZGl2
Pi91c3IvYmluL3JwY2dlbjogQyBwcmVwcm9jZXNzb3IgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDE8
L2Rpdj48ZGl2PmNhbm5vdCBmaW5kIEMgcHJlcHJvY2Vzc29yOiBjcHA8L2Rpdj48ZGl2Pi91c3Iv
YmluL3JwY2dlbjogQyBwcmVwcm9jZXNzb3IgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDE8L2Rpdj48
ZGl2PmNhbm5vdCBmaW5kIEMgcHJlcHJvY2Vzc29yOiBjcHA8L2Rpdj48ZGl2Pi91c3IvYmluL3Jw
Y2dlbjogQyBwcmVwcm9jZXNzb3IgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDE8L2Rpdj48ZGl2PmNh
bm5vdCBmaW5kIEMgcHJlcHJvY2Vzc29yOiBjcHA8L2Rpdj48ZGl2Pi91c3IvYmluL3JwY2dlbjog
QyBwcmVwcm9jZXNzb3IgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDE8L2Rpdj48ZGl2PmNhbm5vdCBm
aW5kIEMgcHJlcHJvY2Vzc29yOiBjcHA8L2Rpdj48ZGl2Pi91c3IvYmluL3JwY2dlbjogQyBwcmVw
cm9jZXNzb3IgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDE8L2Rpdj48ZGl2PlsgMTMlXSBCdWlsZGlu
ZyBDWFggb2JqZWN0IGV4dHJhL2ljdS9DTWFrZUZpbGVzL2ljdWkxOG4uZGlyL2ljdS1yZWxlYXNl
LTczLTEvc291cmNlL2kxOG4vbm9ydHJhbnMuY3BwLm88L2Rpdj48ZGl2PmNhbm5vdCBmaW5kIEMg
cHJlcHJvY2Vzc29yOiBjcHA8L2Rpdj48ZGl2Pi91c3IvYmluL3JwY2dlbjogQyBwcmVwcm9jZXNz
b3IgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDE8L2Rpdj48ZGl2PmNhbm5vdCBmaW5kIEMgcHJlcHJv
Y2Vzc29yOiBjcHA8L2Rpdj48ZGl2Pi91c3IvYmluL3JwY2dlbjogQyBwcmVwcm9jZXNzb3IgZmFp
bGVkIHdpdGggZXhpdCBjb2RlIDE8L2Rpdj48ZGl2PlsgMTMlXSBCdWlsZGluZyBDWFggb2JqZWN0
IHBsdWdpbi9ncm91cF9yZXBsaWNhdGlvbi9saWJteXNxbGdjcy9DTWFrZUZpbGVzL215c3FsZ2Nz
LmRpci9zcmMvYmluZGluZ3MveGNvbS94Y29tL3BheF9tc2cuY2MubzwvZGl2PjxkaXY+SW4gZmls
ZSBpbmNsdWRlZCBmcm9tIC9ob21lL3lva3UwODI1L215c3FsLTguMi4wL3BsdWdpbi9ncm91cF9y
ZXBsaWNhdGlvbi9saWJteXNxbGdjcy9zcmMvYmluZGluZ3MveGNvbS94Y29tL3BheF9tc2cuY2M6
MzA6PC9kaXY+PGRpdj4vaG9tZS95b2t1MDgyNS9teXNxbC04LjIuMC9wbHVnaW4vZ3JvdXBfcmVw
bGljYXRpb24vbGlibXlzcWxnY3Mvc3JjL2JpbmRpbmdzL3hjb20veGNvbS9hcHBfZGF0YS5oOjQz
OjE6IGVycm9yOiAnYXBwX2RhdGFfcHRyJyBkb2VzIG5vdCBuYW1lIGEgdHlwZTwvZGl2PjxkaXY+
Jm5ic3A7ICZuYnNwOzQzIHwgYXBwX2RhdGFfcHRyIGNsb25lX2FwcF9kYXRhKGFwcF9kYXRhX3B0
ciBhKTs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgXn5+fn5+fn5+fn5+PC9kaXY+
PC9kaXY+PGRpdj4uLjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgoLj
gZfjgYvjgZfjgaY8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+JCBzdWRv
IGRuZiBpbnN0YWxsIGNwcDwvZGl2PjxkaXY+JCB0aW1lIG1ha2UgLWokKG5wcm9jKTwvZGl2Pjxk
aXY+Li48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+6YGV44Gj44Gf44CC
44GR44Gp44Gq44KT44GLcnBjZ2Vu44KS44KC44GG5LiA5bqm44KE44Gj44Gm44Gq44GE5rCX44GM
44GX44Gf44Gu44Gn44OT44Or44OJ44OH44Kj44Os44Kv44OI44Oq44KS57a66bqX44Gr44GX44Gm
44KC44GG5LiA5bqmbWFrZeOBl+OBpuOBv+OCi+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj4kIHJtIC1yICo8L2Rpdj48ZGl2PiQmbmJzcDtjbWFrZSAtRFdJVEhfQk9P
U1Q9Li4vbXlzcWwtOC4yLjAvYm9vc3QgLi4vbXlzcWwtOC4yLjA8L2Rpdj48ZGl2PiQgbWFrZSAt
aiQobnByb2MpPC9kaXY+PGRpdj4uLjwvZGl2PjxkaXY+PGRpdj5bMTAwJV0gQnVpbGRpbmcgQ1hY
IG9iamVjdCB1bml0dGVzdC9ndW5pdC9DTWFrZUZpbGVzL21lcmdlX2xhcmdlX3Rlc3RzLXQuZGly
L19fL19fL3N0b3JhZ2UvZXhhbXBsZS9oYV9leGFtcGxlLmNjLm88L2Rpdj48ZGl2PlsxMDAlXSBM
aW5raW5nIENYWCBleGVjdXRhYmxlIC4uLy4uL3J1bnRpbWVfb3V0cHV0X2RpcmVjdG9yeS9tZXJn
ZV9sYXJnZV90ZXN0cy10PC9kaXY+PGRpdj5bMTAwJV0gQnVpbHQgdGFyZ2V0IG1lcmdlX2xhcmdl
X3Rlc3RzLXQ8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+5LiK
5omL44GP44GE44Gj44Gf44GY44KD44KT4oCm44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7j
gajjgYTjgYbjgZPjgajjga9jcHDjgpLotrPjgZfjgabjgYvjgonjgoTjgornm7TjgZvjgbBSb2Nr
eSBMaW51eCA544Gn44KC5LiK5omL44GP44GE44GP44GL44KC55+l44KM44Gq44GE44CC5Yid5Zue
44Gn6KaL6JC944Go44GX44Gm57mw44KK6L+U44GX44Gm44GX44G+44Gj44Gf44GL4oCm44CCPC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgZHjganjgIHjgZ3jgozjga/mnaXlubTjgavjgafjgoLj
goTjgovjgajjgZfjgabku4rlubTjgoLjgYrnlrLjgozjgZXjgb7jgafjgZfjgZ/jgII8L2Rpdj48
ZGl2PjwvZGl2PjwvZGl2PjxkaXY+PC9kaXY+PC9kaXY+"></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-76117830470511736092023-11-21T14:11:00.004+09:002023-11-21T15:58:44.371+09:00MySQL 8.0.35で旧McAfeeのmysql-auditをビルドしてみる<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/7611783047051173609" markdown-here-wrapper-content-modified="true">【2023/11/21 15:58】タイトルが8.0.32だったけど8.0.35でした…<h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;"><ul style="font-size: medium; font-weight: 400; margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px;">ビルドしてみただけ。動作確認はしていない</p></li><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px;">MySQL 8.0.35はあらかじめビルドしてある</p></li></ul><hr style="font-size: medium; font-weight: 400;" /><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">そのまま素直にビルドできなくなっているのでパッチを3つ用意した</p><ul style="font-size: medium; font-weight: 400; margin: 1.2em 0px; padding-left: 2em; text-align: left;"><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px;"><a href="https://github.com/trellix-enterprise/mysql-audit/compare/master...yoku0825:mysql-audit:support_8035" target="_blank">https://github.com/trellix-enterprise/mysql-audit/compare/master...yoku0825:mysql-audit:support_8035</a></p></li><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px;">一つは(ソースコード的にも) <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">utf8</code> が暗黙に <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">utf8mb3</code> を指していたのを明示的に <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">utf8mb3</code> に変えたというもの。8.0.31とそれ以降。</p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px;"><a href="https://github.com/trellix-enterprise/mysql-audit/commit/c6e46b50b3b20912b1ad466eed11868f1f9f77d7" target="_blank">Fix for #261 · trellix-enterprise/mysql-audit@c6e46b5</a></p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><a href="https://github.com/trellix-enterprise/mysql-audit/issues/261" target="_blank">MySQL 8.0.33: undefined symbol: my_charset_utf8_general_ci · Issue #261 · trellix-enterprise/mysql-audit</a></li></ul></li></ul></li><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px;">もう一つはMySQL 8.0.32とそれ以降でTABLE_LISTをリファクタリングしたらしくてクラスの名前が変わっているやつ</p><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><p style="margin: 0.5em 0px;"><a href="https://github.com/trellix-enterprise/mysql-audit/commit/cb0228eb60d4f67215927e55e9f8b95bb614322e" target="_blank">Fix for https://github.com/mysql/mysql-server/commit/951cb5106cb8677c… · trellix-enterprise/mysql-audit@cb0228e</a></p></li><ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><a href="https://github.com/mysql/mysql-server/commit/951cb5106cb8677c08afa683fd5aa747488c1ccd" target="_blank">bug#34623563 Refactoring TABLE_LIST [TABLE_LIST, noclose] · mysql/mysql-server@951cb51</a></li></ul></ul></li><li>あと地味にextractに失敗するやつ</li><ul><li><a href="https://github.com/yoku0825/mysql-audit/commit/b34615793a4ea82c89ff3d8a8182ea4d904a69a9" target="_blank">Fix #266, script get to be worked but not verified the result is corr… · yoku0825/mysql-audit@b346157</a></li><ul><li><a href="https://github.com/trellix-enterprise/mysql-audit/issues/266" target="_blank">offset-extract.sh failed for MySQL >= 8.0.32 · Issue #266 · trellix-enterprise/mysql-audit</a></li></ul></ul></ul><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">
$ git clone git@github.com:yoku0825/mysql-audit.git
$ cd mysql-audit/
$ git checkout support_8035
$ bash bootstrap.sh
bootstrap.sh: line 2: autoreconf: command not found
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">autoreconfがない…Oracle Linux 8では <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">autoconf</code> パッケージらしい(最後に明示的にインストールしたのはだいぶ前なのでパッケージ名がどうだったか覚えてない…)</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">
$ cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="8.8"
$ dnf provides */bin/autoreconf
..
autoconf-2.69-27.el8.noarch : A GNU tool for automatically configuring source code
Repo : ol8_appstream
Matched from:
Filename : /usr/bin/autoreconf
autoconf-2.69-29.el8.noarch : A GNU tool for automatically configuring source code
Repo : ol8_appstream
Matched from:
Filename : /usr/bin/autoreconf
$ sudo dnf install autoconf
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">今度は <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">aclocal</code> がないって怒られた。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ bash bootstrap.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --output=aclocal.m4t
Can't exec "aclocal": No such file or directory at /usr/share/autoconf/Autom4te/FileUtils.pm line 326.
autoreconf: failed to run aclocal: No such file or directory
$ dnf provides */bin/aclocal
..
automake-1.16.1-6.el8.noarch : A GNU tool for automatically creating Makefiles
Repo : ol8_appstream
Matched from:
Filename : /usr/bin/aclocal
automake-1.16.1-7.el8.noarch : A GNU tool for automatically creating Makefiles
Repo : ol8_appstream
Matched from:
Filename : /usr/bin/aclocal
$ sudo dnf install automake
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">その次はlibtoolが無い。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ bash bootstrap.sh
..
configure.ac:83: error: possibly undefined macro: AC_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1
$ sudo dnf install libtool
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">取り敢えずbootstrapまで終わった。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ bash bootstrap.sh
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'config-aux'.
libtoolize: copying file 'config-aux/ltmain.sh'
libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
libtoolize: and rerunning libtoolize and aclocal.
libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:82: installing 'config-aux/compile'
configure.ac:7: installing 'config-aux/config.guess'
configure.ac:7: installing 'config-aux/config.sub'
configure.ac:41: installing 'config-aux/install-sh'
configure.ac:41: installing 'config-aux/missing'
src/Makefile.am: installing 'config-aux/depcomp'
autoreconf: Leaving directory `.'
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">configure</code> スクリプトの中身はいつも <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">--help</code> で見る派。よくあるパターンでソースコードの場所を指定する。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ ./configure --help
..
$ mkdir /home/yoku0825/audit_plugin
$ ./configure --with-mysql=/home/yoku0825/mysql/src/mysql-8.0.35 --with-mysql-plugindir=/home/yoku0825/audit_plugin
..
checking for mysql source code... configure: error: Failed to find required header file include/mysql_version.h in /usr/mysql/src/mysql-8.0.35, check the path and make sure you've run './configure ..<options>.. && cd include && make' in MySQL 5.1 sources dir or 'cmake . && make' in MySQL 5.5 sources dir.
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">ソースコードのディレクトリじゃなくてビルドしたディレクトリが必要だったらしい。 (8.0からインソースビルドするにはMySQLのcmakeに <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">-DFORCE_INSOURCE_BUILD=ON</code> が必要)</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ ./configure --with-mysql=/home/yoku0825/mysql/src/build_8.0.35 --with-mysql-plugindir=/home/yoku0825/audit_plugin
..
checking for mysql source code... configure: error: Failed to find required header file include/my_dir.h in /usr/mysql/src/build_8.0.35, check the path and make sure you've run './configure ..<options>.. && cd include && make' in MySQL 5.1 sources dir or 'cmake . && make' in MySQL 5.5 sources dir.
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">また違うファイルがつかめずに転けた。これインソースビルドしないとダメなんだろうか…。ということでインソースビルドしたディレクトリを用意。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ ./configure --with-mysql=/home/yoku0825/mysql/src/insource_build_8.0.35/ --with-mysql-plugindir=/home/yoku0825/audit_plugin
..
Version: 1.0.0-99999 Symbol version: 1_0_0_99999
no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating yajl/Makefile
config.status: creating yajl/src/Makefile
config.status: creating udis86/Makefile
config.status: creating udis86/libudis86/Makefile
config.status: creating include/_config.h
config.status: executing depfiles commands
config.status: executing libtool commands
/usr/bin/rm: cannot remove 'libtoolT': No such file or directory
configure: CPPFLAGS: -g -O2 -DDBUG_OFF -DNDEBUG -Werror -Wall -DMYSQL_AUDIT_PLUGIN_VERSION='"1.0.0"' -DMYSQL_AUDIT_PLUGIN_REVISION='"99999"' '-DMYSQL_AUDIT_PLUGIN_SYMBOL_VERSION()=extern const char audit_plugin_version_1_0_0_99999'
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">configureは成功した。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ make
..
Making all in udis86
make[1]: Entering directory '/home/yoku0825/git/mysql-audit/udis86'
Making all in libudis86
make[2]: Entering directory '/home/yoku0825/git/mysql-audit/udis86/libudis86'
python ./opgen.py
File "./opgen.py", line 259
print "error: no mnemonic given in <instruction>."
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("error: no mnemonic given in <instruction>.")?
make[2]: *** [Makefile:662: itab.c] Error 1
make[2]: Leaving directory '/home/yoku0825/git/mysql-audit/udis86/libudis86'
make[1]: *** [Makefile:371: all-recursive] Error 1
make[1]: Leaving directory '/home/yoku0825/git/mysql-audit/udis86'
make: *** [Makefile:426: all-recursive] Error 1
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">print ".."</code> が <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">print("..")</code> でなければならないのはPython3のアレだとして、切り分けのためにPython 2.7に取り替えてみた。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ python
Python 3.6.8 (default, Jun 14 2023, 10:42:30)
$ sudo dnf install python2
$ sudo alternatives --config python
There are 4 programs which provide 'python'.
Selection Command
-----------------------------------------------
* 1 /usr/libexec/no-python
2 /usr/bin/python3.9
+ 3 /usr/bin/python3
4 /usr/bin/python2
Enter to keep the current selection[+], or type selection number: 4
$ python --version
Python 2.7.18
$ make
..
/usr/mysql/src/insource_build_8.0.35/sql/query_term.h:630:12: error: 'if constexpr' only available with -std=c++17 or -std=gnu++17 [-Werror]
if constexpr (visit_leaves == VL_VISIT_LEAVES) ^~~~~~~~~
cc1plus: all warnings being treated as errors
make[1]: *** [Makefile:480: hot_patch.lo] Error 1
make[1]: Leaving directory '/home/yoku0825/git/mysql-audit/src'
make: *** [Makefile:426: all-recursive] Error 1
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">エラーが変わったのでどうやらこの <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">opgen.py</code> はこれで良い(?)らしい。新しいのは <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">-std=c++17</code> で対処できそうなのでconfigureしなおし。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ CPPFLAGS="-std=c++17" ./configure --with-mysql=/home/yoku0825/mysql/src/insource_build_8.0.35/ --with-mysql-plugindir=/home/yoku0825/audit_plugin
$ make
..
/home/yoku0825/git/mysql-audit/pcre/missing: line 81: aclocal-1.15: command not found
WARNING: 'aclocal-1.15' is missing on your system.
You should only need it if you modified 'acinclude.m4' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'aclocal' program is part of the GNU Automake package:
<http://www.gnu.org/software/automake>
It also requires GNU Autoconf, GNU m4 and Perl in order to run:
<http://www.gnu.org/software/autoconf>
<http://www.gnu.org/software/m4/>
<http://www.perl.org/>
make[2]: *** [Makefile:1357: aclocal.m4] Error 127
make[2]: Leaving directory '/home/yoku0825/git/mysql-audit/pcre'
make[1]: *** [Makefile:715: ../pcre/libpcre.la] Error 2
make[1]: Leaving directory '/home/yoku0825/git/mysql-audit/src'
make: *** [Makefile:426: all-recursive] Error 1
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">今更aclocal-1.15を欲しがられる。boostrap.shの時点で言ってくれてもいいのよ…。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ /usr/bin/aclocal --version
aclocal (GNU automake) 1.16.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later <https://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Tom Tromey <tromey@redhat.com>
and Alexandre Duret-Lutz <adl@gnu.org>.
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">ちなみにこれCentOS7だとaclocal-1.13なのでやっぱり嫌がられる。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ sudo ln -s /usr/bin/aclocal-1.16 /usr/bin/aclocal-1.15
$ sudo ln -s /usr/bin/automake-1.16 /usr/bin/automake-1.15
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">1.13 -> 1.15へのリンクは憚られたけど、1.16 -> 1.15なら互換性あるかなと軽く思い込んでシンボリックリンクで済ませてしまう()</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ make
..
libtool: link: rm -fr .libs/libaudit_plugin.lax
libtool: link: ( cd ".libs" && rm -f "libaudit_plugin.la" && ln -s "../libaudit_plugin.la" "libaudit_plugin.la" )
make[1]: Leaving directory '/home/yoku0825/git/mysql-audit/src'
make[1]: Entering directory '/home/yoku0825/git/mysql-audit'
make[1]: Nothing to be done for 'all-am'.
make[1]: Leaving directory '/home/yoku0825/git/mysql-audit'
$ make install
..
$ ll /home/yoku0825/audit_plugin/
total 17040
-rw-r--r--. 1 yoku0825 yoku0825 12445670 Nov 21 04:57 libaudit_plugin.a
-rwxr-xr-x. 1 yoku0825 yoku0825 996 Nov 21 04:57 libaudit_plugin.la
lrwxrwxrwx. 1 yoku0825 yoku0825 24 Nov 21 04:57 libaudit_plugin.so -> libaudit_plugin.so.0.0.0
lrwxrwxrwx. 1 yoku0825 yoku0825 24 Nov 21 04:57 libaudit_plugin.so.0 -> libaudit_plugin.so.0.0.0
-rwxr-xr-x. 1 yoku0825 yoku0825 4994296 Nov 21 04:57 libaudit_plugin.so.0.0.0
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">出来上がった。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ bash ./offset-extract/offset-extract.sh /usr/mysql/8.0.35/bin/mysqld
//offsets for: /usr/mysql/8.0.35/bin/mysqld (8.0.35)
{"8.0.35","d9bdda3fe1822230d5b5d265b9359ffc", 9496, 9536, 4952, 6436, 1288, 0, 0, 32, 64, 160, 1376, 9636, 6056, 4248, 4256, 4260, 7720, 1576, 32, 8680, 8720, 8704, 12880, 140, 664, 320},
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">あとはこれで.soファイルをコピーしてmy.cnfを編集してINSTALL PLUGINしたりすれば一応動きそう</p><div style="font-size: 0em; font-weight: 400; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+Jm5ic3A7IyBUTDtEUjwvcD48cD4tIOODk+ODq+ODieOBl+OBpuOBv+OBn+OBoOOBkeOAguWL
leS9nOeiuuiqjeOBr+OBl+OBpuOBhOOBquOBhDwvcD48cD4tIE15U1FMIDguMC4zNeOBr+OBguOC
ieOBi+OBmOOCgeODk+ODq+ODieOBl+OBpuOBguOCizwvcD48cD48YnI+PC9wPjxwPi0tLTwvcD48
cD48YnI+PC9wPjxwPuOBneOBruOBvuOBvue0oOebtOOBq+ODk+ODq+ODieOBp+OBjeOBquOBj+OB
quOBo+OBpuOBhOOCi+OBruOBp+ODkeODg+ODgeOCkjLjgaTnlKjmhI/jgZfjgZ88L3A+PHA+PGJy
PjwvcD48cD4tJm5ic3A7aHR0cHM6Ly9naXRodWIuY29tL3RyZWxsaXgtZW50ZXJwcmlzZS9teXNx
bC1hdWRpdC9jb21wYXJlL21hc3Rlci4uLnlva3UwODI1Om15c3FsLWF1ZGl0OnN1cHBvcnRfODAz
NTwvcD48cD48YnI+PC9wPjxwPi0g5LiA44Gk44GvKOOCveODvOOCueOCs+ODvOODieeahOOBq+OC
gikgYHV0ZjhgIOOBjOaal+m7meOBqyBgdXRmOG1iM2Ag44KS5oyH44GX44Gm44GE44Gf44Gu44KS
5piO56S655qE44GrIGB1dGY4bWIzYCDjgavlpInjgYjjgZ/jgajjgYTjgYbjgoLjga7jgII4LjAu
MzHjgajjgZ3jgozku6XpmY3jgII8L3A+PHA+Jm5ic3A7IC0mbmJzcDtbRml4IGZvciBcIzI2MSDC
tyB0cmVsbGl4XC1lbnRlcnByaXNlL215c3FsXC1hdWRpdEBjNmU0NmI1XShodHRwczovL2dpdGh1
Yi5jb20vdHJlbGxpeC1lbnRlcnByaXNlL215c3FsLWF1ZGl0L2NvbW1pdC9jNmU0NmI1MGIzYjIw
OTEyYjFhZDQ2NmVlZDExODY4ZjFmOWY3N2Q3KTwvcD48cD4mbmJzcDsgJm5ic3A7IC0mbmJzcDtb
TXlTUUwgOFwuMFwuMzM6IHVuZGVmaW5lZCBzeW1ib2w6IG15XF9jaGFyc2V0XF91dGY4XF9nZW5l
cmFsXF9jaSDCtyBJc3N1ZSBcIzI2MSDCtyB0cmVsbGl4XC1lbnRlcnByaXNlL215c3FsXC1hdWRp
dF0oaHR0cHM6Ly9naXRodWIuY29tL3RyZWxsaXgtZW50ZXJwcmlzZS9teXNxbC1hdWRpdC9pc3N1
ZXMvMjYxKTwvcD48cD4tIOOCguOBhuS4gOOBpOOBr015U1FMIDguMC4zMuOBqOOBneOCjOS7pemZ
jeOBp1RBQkxFX0xJU1TjgpLjg6rjg5XjgqHjgq/jgr/jg6rjg7PjgrDjgZfjgZ/jgonjgZfjgY/j
gabjgq/jg6njgrnjga7lkI3liY3jgYzlpInjgo/jgaPjgabjgYTjgovjgoTjgaQ8L3A+PHA+Jm5i
c3A7IC0mbmJzcDtbRml4IGZvciBodHRwczovL2dpdGh1YlwuY29tL215c3FsL215c3FsXC1zZXJ2
ZXIvY29tbWl0Lzk1MWNiNTEwNmNiODY3N2PigKYgwrcgdHJlbGxpeFwtZW50ZXJwcmlzZS9teXNx
bFwtYXVkaXRAY2IwMjI4ZV0oaHR0cHM6Ly9naXRodWIuY29tL3RyZWxsaXgtZW50ZXJwcmlzZS9t
eXNxbC1hdWRpdC9jb21taXQvY2IwMjI4ZWI2MGQ0ZjY3MjE1OTI3ZTU1ZTlmOGI5NWJiNjE0MzIy
ZSk8L3A+PHA+Jm5ic3A7ICZuYnNwOyAtJm5ic3A7W2J1Z1wjMzQ2MjM1NjMgUmVmYWN0b3Jpbmcg
VEFCTEVcX0xJU1QgXFtUQUJMRVxfTElTVCwgbm9jbG9zZVxdIMK3IG15c3FsL215c3FsXC1zZXJ2
ZXJAOTUxY2I1MV0oaHR0cHM6Ly9naXRodWIuY29tL215c3FsL215c3FsLXNlcnZlci9jb21taXQv
OTUxY2I1MTA2Y2I4Njc3YzA4YWZhNjgzZmQ1YWE3NDc0ODhjMWNjZCk8L3A+PHA+PGJyPjwvcD48
cD5gYGA8L3A+PHA+JCBnaXQgY2xvbmUgZ2l0QGdpdGh1Yi5jb206eW9rdTA4MjUvbXlzcWwtYXVk
aXQuZ2l0PC9wPjxwPiQmbmJzcDtjZCBteXNxbC1hdWRpdC88L3A+PHA+JCZuYnNwO2dpdCBjaGVj
a291dCBzdXBwb3J0XzgwMzU8L3A+PHA+PGJyPjwvcD48cD4kIGJhc2ggYm9vdHN0cmFwLnNoPC9w
PjxwPmJvb3RzdHJhcC5zaDogbGluZSAyOiBhdXRvcmVjb25mOiBjb21tYW5kIG5vdCBmb3VuZDwv
cD48cD5gYGA8L3A+PHA+PGJyPjwvcD48cD5hdXRvcmVjb25m44GM44Gq44GE4oCmT3JhY2xlIExp
bnV4IDjjgafjga8gYGF1dG9jb25mYCDjg5Hjg4PjgrHjg7zjgrjjgonjgZfjgYTvvIjmnIDlvozj
gavmmI7npLrnmoTjgavjgqTjg7Pjgrnjg4jjg7zjg6vjgZfjgZ/jga7jga/jgaDjgYTjgbbliY3j
garjga7jgafjg5Hjg4PjgrHjg7zjgrjlkI3jgYzjganjgYbjgaDjgaPjgZ/jgYvopprjgYjjgabj
garjgYTigKbvvIk8L3A+PHA+PGJyPjwvcD48cD5gYGA8L3A+PHA+JCBjYXQgL2V0Yy9vcy1yZWxl
YXNlPC9wPjxwPk5BTUU9Ik9yYWNsZSBMaW51eCBTZXJ2ZXIiPC9wPjxwPlZFUlNJT049IjguOCI8
L3A+PGRpdj48YnI+PC9kaXY+PHA+JCBkbmYgcHJvdmlkZXMgKi9iaW4vYXV0b3JlY29uZjwvcD48
cD4uLjwvcD48ZGl2PjxkaXY+YXV0b2NvbmYtMi42OS0yNy5lbDgubm9hcmNoIDogQSBHTlUgdG9v
bCBmb3IgYXV0b21hdGljYWxseSBjb25maWd1cmluZyBzb3VyY2UgY29kZTwvZGl2PjxkaXY+UmVw
byZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA6IG9sOF9hcHBzdHJlYW08L2Rpdj48ZGl2Pk1h
dGNoZWQgZnJvbTo8L2Rpdj48ZGl2PkZpbGVuYW1lJm5ic3A7ICZuYnNwOyA6IC91c3IvYmluL2F1
dG9yZWNvbmY8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmF1dG9jb25mLTIuNjktMjkuZWw4Lm5v
YXJjaCA6IEEgR05VIHRvb2wgZm9yIGF1dG9tYXRpY2FsbHkgY29uZmlndXJpbmcgc291cmNlIGNv
ZGU8L2Rpdj48ZGl2PlJlcG8mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgOiBvbDhfYXBwc3Ry
ZWFtPC9kaXY+PGRpdj5NYXRjaGVkIGZyb206PC9kaXY+PGRpdj5GaWxlbmFtZSZuYnNwOyAmbmJz
cDsgOiAvdXNyL2Jpbi9hdXRvcmVjb25mPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4k
Jm5ic3A7c3VkbyBkbmYgaW5zdGFsbCBhdXRvY29uZjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj7ku4rluqbjga8gYGFjbG9jYWxgIOOBjOOBquOBhOOBo+OBpuaAkuOCieOC
jOOBn+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+
PGRpdj48ZGl2PiQgYmFzaCBib290c3RyYXAuc2g8L2Rpdj48ZGl2PmF1dG9yZWNvbmY6IEVudGVy
aW5nIGRpcmVjdG9yeSBgLic8L2Rpdj48ZGl2PmF1dG9yZWNvbmY6IGNvbmZpZ3VyZS5hYzogbm90
IHVzaW5nIEdldHRleHQ8L2Rpdj48ZGl2PmF1dG9yZWNvbmY6IHJ1bm5pbmc6IGFjbG9jYWwmbmJz
cDsgLS1vdXRwdXQ9YWNsb2NhbC5tNHQ8L2Rpdj48ZGl2PkNhbid0IGV4ZWMgImFjbG9jYWwiOiBO
byBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IGF0IC91c3Ivc2hhcmUvYXV0b2NvbmYvQXV0b200dGUv
RmlsZVV0aWxzLnBtIGxpbmUgMzI2LjwvZGl2PjxkaXY+YXV0b3JlY29uZjogZmFpbGVkIHRvIHJ1
biBhY2xvY2FsOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5PC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj4kJm5ic3A7ZG5mIHByb3ZpZGVzICovYmluL2FjbG9jYWw8L2Rpdj48ZGl2Pi4uPC9kaXY+
PGRpdj48ZGl2PmF1dG9tYWtlLTEuMTYuMS02LmVsOC5ub2FyY2ggOiBBIEdOVSB0b29sIGZvciBh
dXRvbWF0aWNhbGx5IGNyZWF0aW5nIE1ha2VmaWxlczwvZGl2PjxkaXY+UmVwbyZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyA6IG9sOF9hcHBzdHJlYW08L2Rpdj48ZGl2Pk1hdGNoZWQgZnJvbTo8
L2Rpdj48ZGl2PkZpbGVuYW1lJm5ic3A7ICZuYnNwOyA6IC91c3IvYmluL2FjbG9jYWw8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2PmF1dG9tYWtlLTEuMTYuMS03LmVsOC5ub2FyY2ggOiBBIEdOVSB0
b29sIGZvciBhdXRvbWF0aWNhbGx5IGNyZWF0aW5nIE1ha2VmaWxlczwvZGl2PjxkaXY+UmVwbyZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA6IG9sOF9hcHBzdHJlYW08L2Rpdj48ZGl2Pk1hdGNo
ZWQgZnJvbTo8L2Rpdj48ZGl2PkZpbGVuYW1lJm5ic3A7ICZuYnNwOyA6IC91c3IvYmluL2FjbG9j
YWw8L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiQgc3VkbyBkbmYgaW5zdGFsbCBhdXRv
bWFrZTwvZGl2PjxkaXY+YGBgPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgZ3jga7m
rKHjga9saWJ0b29s44GM54Sh44GE44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rp
dj48ZGl2PiQgYmFzaCBib290c3RyYXAuc2g8L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48ZGl2PmNv
bmZpZ3VyZS5hYzo4MzogZXJyb3I6IHBvc3NpYmx5IHVuZGVmaW5lZCBtYWNybzogQUNfUFJPR19M
SUJUT09MPC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBJZiB0aGlzIHRva2VuIGFuZCBv
dGhlcnMgYXJlIGxlZ2l0aW1hdGUsIHBsZWFzZSB1c2UgbTRfcGF0dGVybl9hbGxvdy48L2Rpdj48
ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7IFNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbi48
L2Rpdj48ZGl2PmF1dG9yZWNvbmY6IC91c3IvYmluL2F1dG9jb25mIGZhaWxlZCB3aXRoIGV4aXQg
c3RhdHVzOiAxPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4kIHN1ZG8gZG5mIGluc3Rh
bGwgbGlidG9vbDwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7lj5bjgorm
laLjgYjjgZpib290c3RyYXDjgb7jgafntYLjgo/jgaPjgZ/jgII8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2PmBgYDwvZGl2PjxkaXY+JCBiYXNoIGJvb3RzdHJhcC5zaDwvZGl2PjxkaXY+PGRpdj5h
dXRvcmVjb25mOiBFbnRlcmluZyBkaXJlY3RvcnkgYC4nPC9kaXY+PGRpdj5hdXRvcmVjb25mOiBj
b25maWd1cmUuYWM6IG5vdCB1c2luZyBHZXR0ZXh0PC9kaXY+PGRpdj5hdXRvcmVjb25mOiBydW5u
aW5nOiBhY2xvY2FsIC0tZm9yY2U8L2Rpdj48ZGl2PmF1dG9yZWNvbmY6IGNvbmZpZ3VyZS5hYzog
dHJhY2luZzwvZGl2PjxkaXY+YXV0b3JlY29uZjogcnVubmluZzogbGlidG9vbGl6ZSAtLWNvcHkg
LS1mb3JjZTwvZGl2PjxkaXY+bGlidG9vbGl6ZTogcHV0dGluZyBhdXhpbGlhcnkgZmlsZXMgaW4g
QUNfQ09ORklHX0FVWF9ESVIsICdjb25maWctYXV4Jy48L2Rpdj48ZGl2PmxpYnRvb2xpemU6IGNv
cHlpbmcgZmlsZSAnY29uZmlnLWF1eC9sdG1haW4uc2gnPC9kaXY+PGRpdj5saWJ0b29saXplOiBD
b25zaWRlciBhZGRpbmcgJ0FDX0NPTkZJR19NQUNST19ESVJTKFttNF0pJyB0byBjb25maWd1cmUu
YWMsPC9kaXY+PGRpdj5saWJ0b29saXplOiBhbmQgcmVydW5uaW5nIGxpYnRvb2xpemUgYW5kIGFj
bG9jYWwuPC9kaXY+PGRpdj5saWJ0b29saXplOiBDb25zaWRlciBhZGRpbmcgJy1JIG00JyB0byBB
Q0xPQ0FMX0FNRkxBR1MgaW4gTWFrZWZpbGUuYW0uPC9kaXY+PGRpdj5hdXRvcmVjb25mOiBydW5u
aW5nOiAvdXNyL2Jpbi9hdXRvY29uZiAtLWZvcmNlPC9kaXY+PGRpdj5hdXRvcmVjb25mOiBydW5u
aW5nOiAvdXNyL2Jpbi9hdXRvaGVhZGVyIC0tZm9yY2U8L2Rpdj48ZGl2PmF1dG9yZWNvbmY6IHJ1
bm5pbmc6IGF1dG9tYWtlIC0tYWRkLW1pc3NpbmcgLS1jb3B5IC0tZm9yY2UtbWlzc2luZzwvZGl2
PjxkaXY+Y29uZmlndXJlLmFjOjgyOiBpbnN0YWxsaW5nICdjb25maWctYXV4L2NvbXBpbGUnPC9k
aXY+PGRpdj5jb25maWd1cmUuYWM6NzogaW5zdGFsbGluZyAnY29uZmlnLWF1eC9jb25maWcuZ3Vl
c3MnPC9kaXY+PGRpdj5jb25maWd1cmUuYWM6NzogaW5zdGFsbGluZyAnY29uZmlnLWF1eC9jb25m
aWcuc3ViJzwvZGl2PjxkaXY+Y29uZmlndXJlLmFjOjQxOiBpbnN0YWxsaW5nICdjb25maWctYXV4
L2luc3RhbGwtc2gnPC9kaXY+PGRpdj5jb25maWd1cmUuYWM6NDE6IGluc3RhbGxpbmcgJ2NvbmZp
Zy1hdXgvbWlzc2luZyc8L2Rpdj48ZGl2PnNyYy9NYWtlZmlsZS5hbTogaW5zdGFsbGluZyAnY29u
ZmlnLWF1eC9kZXBjb21wJzwvZGl2PjxkaXY+YXV0b3JlY29uZjogTGVhdmluZyBkaXJlY3Rvcnkg
YC4nPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBjb25maWd1
cmVgIOOCueOCr+ODquODl+ODiOOBruS4rei6q+OBr+OBhOOBpOOCgiBgLS1oZWxwYCDjgafopovj
govmtL7jgILjgojjgY/jgYLjgovjg5Hjgr/jg7zjg7Pjgafjgr3jg7zjgrnjgrPjg7zjg4njga7l
oLTmiYDjgpLmjIflrprjgZnjgovjgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRpdj4kIC4vY29uZmlndXJlIC0taGVscDwvZGl2PjwvZGl2
PjxkaXY+Li48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiQgbWtkaXIgL2hvbWUveW9rdTA4MjUv
YXVkaXRfcGx1Z2luPC9kaXY+PGRpdj4kIC4vY29uZmlndXJlIC0td2l0aC1teXNxbD0vaG9tZS95
b2t1MDgyNS9teXNxbC9zcmMvbXlzcWwtOC4wLjM1Jm5ic3A7LS13aXRoLW15c3FsLXBsdWdpbmRp
cj0vaG9tZS95b2t1MDgyNS9hdWRpdF9wbHVnaW48L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48ZGl2
PmNoZWNraW5nIGZvciBteXNxbCBzb3VyY2UgY29kZS4uLiBjb25maWd1cmU6IGVycm9yOiBGYWls
ZWQgdG8gZmluZCByZXF1aXJlZCBoZWFkZXIgZmlsZSBpbmNsdWRlL215c3FsX3ZlcnNpb24uaCBp
biAvdXNyL215c3FsL3NyYy9teXNxbC04LjAuMzUsIGNoZWNrIHRoZSBwYXRoIGFuZCBtYWtlIHN1
cmUgeW91J3ZlIHJ1biAnLi9jb25maWd1cmUgLi4mbHQ7b3B0aW9ucyZndDsuLiAmYW1wOyZhbXA7
IGNkIGluY2x1ZGUgJmFtcDsmYW1wOyBtYWtlJyBpbiBNeVNRTCA1LjEgc291cmNlcyBkaXIgb3Ig
J2NtYWtlIC4gJmFtcDsmYW1wOyBtYWtlJyBpbiBNeVNRTCA1LjUgc291cmNlcyBkaXIuPC9kaXY+
PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOCveODvOOCueOCs+ODvOOD
ieOBruODh+OCo+ODrOOCr+ODiOODquOBmOOCg+OBquOBj+OBpuODk+ODq+ODieOBl+OBn+ODh+OC
o+ODrOOCr+ODiOODquOBjOW/heimgeOBoOOBo+OBn+OCieOBl+OBhOOAgiAoOC4w44GL44KJ44Kk
44Oz44K944O844K544OT44Or44OJ44GZ44KL44Gr44GvTXlTUUzjga5jbWFrZeOBqyBgLURGT1JD
RV9JTlNPVVJDRV9CVUlMRD1PTmAg44GM5b+F6KaBKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj4kIC4vY29uZmlndXJlIC0td2l0aC1teXNxbD0vaG9tZS95b2t1MDgyNS9t
eXNxbC9zcmMvYnVpbGRfOC4wLjM1Jm5ic3A7IC0td2l0aC1teXNxbC1wbHVnaW5kaXI9L2hvbWUv
eW9rdTA4MjUvYXVkaXRfcGx1Z2luPC9kaXY+PGRpdj4uLjwvZGl2PjxkaXY+PGRpdj5jaGVja2lu
ZyBmb3IgbXlzcWwgc291cmNlIGNvZGUuLi4gY29uZmlndXJlOiBlcnJvcjogRmFpbGVkIHRvIGZp
bmQgcmVxdWlyZWQgaGVhZGVyIGZpbGUgaW5jbHVkZS9teV9kaXIuaCBpbiAvdXNyL215c3FsL3Ny
Yy9idWlsZF84LjAuMzUsIGNoZWNrIHRoZSBwYXRoIGFuZCBtYWtlIHN1cmUgeW91J3ZlIHJ1biAn
Li9jb25maWd1cmUgLi4mbHQ7b3B0aW9ucyZndDsuLiAmYW1wOyZhbXA7IGNkIGluY2x1ZGUgJmFt
cDsmYW1wOyBtYWtlJyBpbiBNeVNRTCA1LjEgc291cmNlcyBkaXIgb3IgJ2NtYWtlIC4gJmFtcDsm
YW1wOyBtYWtlJyBpbiBNeVNRTCA1LjUgc291cmNlcyBkaXIuPC9kaXY+PC9kaXY+PGRpdj5gYGA8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOBvuOBn+mBleOBhuODleOCoeOCpOODq+OBjOOBpOOB
i+OCgeOBmuOBq+i7ouOBkeOBn+OAguOBk+OCjOOCpOODs+OCveODvOOCueODk+ODq+ODieOBl+OB
quOBhOOBqOODgOODoeOBquOCk+OBoOOCjeOBhuOBi+KApuOAguOBqOOBhOOBhuOBk+OBqOOBp+OC
pOODs+OCveODvOOCueODk+ODq+ODieOBl+OBn+ODh+OCo+ODrOOCr+ODiOODquOCkueUqOaEj+OA
gjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4kIC4vY29uZmlndXJlIC0t
d2l0aC1teXNxbD0vaG9tZS95b2t1MDgyNS9teXNxbC9zcmMvaW5zb3VyY2VfYnVpbGRfOC4wLjM1
LyAtLXdpdGgtbXlzcWwtcGx1Z2luZGlyPS9ob21lL3lva3UwODI1L2F1ZGl0X3BsdWdpbjwvZGl2
PjxkaXY+Li48L2Rpdj48ZGl2PjxkaXY+VmVyc2lvbjogMS4wLjAtOTk5OTkgU3ltYm9sIHZlcnNp
b246IDFfMF8wXzk5OTk5PC9kaXY+PGRpdj5ubzwvZGl2PjwvZGl2PjxkaXY+PGRpdj48ZGl2PmNo
ZWNraW5nIHRoYXQgZ2VuZXJhdGVkIGZpbGVzIGFyZSBuZXdlciB0aGFuIGNvbmZpZ3VyZS4uLiBk
b25lPC9kaXY+PGRpdj5jb25maWd1cmU6IGNyZWF0aW5nIC4vY29uZmlnLnN0YXR1czwvZGl2Pjxk
aXY+Y29uZmlnLnN0YXR1czogY3JlYXRpbmcgTWFrZWZpbGU8L2Rpdj48ZGl2PmNvbmZpZy5zdGF0
dXM6IGNyZWF0aW5nIHNyYy9NYWtlZmlsZTwvZGl2PjxkaXY+Y29uZmlnLnN0YXR1czogY3JlYXRp
bmcgeWFqbC9NYWtlZmlsZTwvZGl2PjxkaXY+Y29uZmlnLnN0YXR1czogY3JlYXRpbmcgeWFqbC9z
cmMvTWFrZWZpbGU8L2Rpdj48ZGl2PmNvbmZpZy5zdGF0dXM6IGNyZWF0aW5nIHVkaXM4Ni9NYWtl
ZmlsZTwvZGl2PjxkaXY+Y29uZmlnLnN0YXR1czogY3JlYXRpbmcgdWRpczg2L2xpYnVkaXM4Ni9N
YWtlZmlsZTwvZGl2PjxkaXY+Y29uZmlnLnN0YXR1czogY3JlYXRpbmcgaW5jbHVkZS9fY29uZmln
Lmg8L2Rpdj48ZGl2PmNvbmZpZy5zdGF0dXM6IGV4ZWN1dGluZyBkZXBmaWxlcyBjb21tYW5kczwv
ZGl2PjxkaXY+Y29uZmlnLnN0YXR1czogZXhlY3V0aW5nIGxpYnRvb2wgY29tbWFuZHM8L2Rpdj48
L2Rpdj48ZGl2Pi91c3IvYmluL3JtOiBjYW5ub3QgcmVtb3ZlICdsaWJ0b29sVCc6IE5vIHN1Y2gg
ZmlsZSBvciBkaXJlY3Rvcnk8L2Rpdj48ZGl2PmNvbmZpZ3VyZTogQ1BQRkxBR1M6Jm5ic3A7IC1n
IC1PMiAtRERCVUdfT0ZGIC1ETkRFQlVHIC1XZXJyb3IgLVdhbGwgLURNWVNRTF9BVURJVF9QTFVH
SU5fVkVSU0lPTj0nIjEuMC4wIicgLURNWVNRTF9BVURJVF9QTFVHSU5fUkVWSVNJT049JyI5OTk5
OSInICctRE1ZU1FMX0FVRElUX1BMVUdJTl9TWU1CT0xfVkVSU0lPTigpPWV4dGVybiBjb25zdCBj
aGFyIGF1ZGl0X3BsdWdpbl92ZXJzaW9uXzFfMF8wXzk5OTk5JzwvZGl2PjwvZGl2PjxkaXY+YGBg
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5jb25maWd1cmXjga/miJDlip/jgZfjgZ/jgII8L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+JCBtYWtlPC9kaXY+PGRpdj4uLjwv
ZGl2PjxkaXY+PGRpdj5NYWtpbmcgYWxsIGluIHVkaXM4NjwvZGl2PjxkaXY+bWFrZVsxXTogRW50
ZXJpbmcgZGlyZWN0b3J5ICcvaG9tZS95b2t1MDgyNS9naXQvbXlzcWwtYXVkaXQvdWRpczg2Jzwv
ZGl2PjxkaXY+TWFraW5nIGFsbCBpbiBsaWJ1ZGlzODY8L2Rpdj48ZGl2Pm1ha2VbMl06IEVudGVy
aW5nIGRpcmVjdG9yeSAnL2hvbWUveW9rdTA4MjUvZ2l0L215c3FsLWF1ZGl0L3VkaXM4Ni9saWJ1
ZGlzODYnPC9kaXY+PGRpdj5weXRob24gLi9vcGdlbi5weTwvZGl2PjxkaXY+Jm5ic3A7IEZpbGUg
Ii4vb3BnZW4ucHkiLCBsaW5lIDI1OTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBwcmludCAiZXJy
b3I6IG5vIG1uZW1vbmljIGdpdmVuIGluICZsdDtpbnN0cnVjdGlvbiZndDsuIjwvZGl2PjxkaXY+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDtePC9kaXY+PGRpdj5TeW50YXhFcnJvcjogTWlzc2luZyBwYXJlbnRo
ZXNlcyBpbiBjYWxsIHRvICdwcmludCcuIERpZCB5b3UgbWVhbiBwcmludCgiZXJyb3I6IG5vIG1u
ZW1vbmljIGdpdmVuIGluICZsdDtpbnN0cnVjdGlvbiZndDsuIik/PC9kaXY+PGRpdj5tYWtlWzJd
OiAqKiogW01ha2VmaWxlOjY2MjogaXRhYi5jXSBFcnJvciAxPC9kaXY+PGRpdj5tYWtlWzJdOiBM
ZWF2aW5nIGRpcmVjdG9yeSAnL2hvbWUveW9rdTA4MjUvZ2l0L215c3FsLWF1ZGl0L3VkaXM4Ni9s
aWJ1ZGlzODYnPC9kaXY+PGRpdj5tYWtlWzFdOiAqKiogW01ha2VmaWxlOjM3MTogYWxsLXJlY3Vy
c2l2ZV0gRXJyb3IgMTwvZGl2PjxkaXY+bWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21l
L3lva3UwODI1L2dpdC9teXNxbC1hdWRpdC91ZGlzODYnPC9kaXY+PGRpdj5tYWtlOiAqKiogW01h
a2VmaWxlOjQyNjogYWxsLXJlY3Vyc2l2ZV0gRXJyb3IgMTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gcHJpbnQgIi4uImAg44GMIGBwcmludCgiLi4iKWAg44Gn
44Gq44GR44KM44Gw44Gq44KJ44Gq44GE44Gu44GvUHl0aG9uM+OBruOCouODrOOBoOOBqOOBl+OB
puOAgeWIh+OCiuWIhuOBkeOBruOBn+OCgeOBq1B5dGhvbiAyLjfjgavlj5bjgormm7/jgYjjgabj
gb/jgZ/jgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+PGRpdj4kIHB5dGhvbjwvZGl2PjxkaXY+UHl0aG9uIDMuNi44IChkZWZhdWx0LCBKdW4g
MTQgMjAyMywgMTA6NDI6MzApPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4kIHN1ZG8g
ZG5mIGluc3RhbGwgcHl0aG9uMjwvZGl2PjxkaXY+PGRpdj4kIHN1ZG8gYWx0ZXJuYXRpdmVzIC0t
Y29uZmlnIHB5dGhvbjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhlcmUgYXJlIDQgcHJvZ3Jh
bXMgd2hpY2ggcHJvdmlkZSAncHl0aG9uJy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiZuYnNw
OyBTZWxlY3Rpb24mbmJzcDsgJm5ic3A7IENvbW1hbmQ8L2Rpdj48ZGl2Pi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPC9kaXY+PGRpdj4qJm5ic3A7IDEmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy91c3IvbGliZXhlYy9uby1weXRo
b248L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsyJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsvdXNyL2Jpbi9weXRob24zLjk8L2Rpdj48ZGl2PiZuYnNwOysgMyZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7L3Vzci9iaW4vcHl0aG9uMzwvZGl2Pjxk
aXY+Jm5ic3A7ICZuYnNwOzQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
Oy91c3IvYmluL3B5dGhvbjI8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkVudGVyIHRvIGtlZXAg
dGhlIGN1cnJlbnQgc2VsZWN0aW9uWytdLCBvciB0eXBlIHNlbGVjdGlvbiBudW1iZXI6IDQ8L2Rp
dj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+JCBweXRob24gLS12ZXJzaW9uPC9kaXY+
PGRpdj5QeXRob24gMi43LjE4PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4kIG1ha2U8
L2Rpdj48ZGl2Pi4uPC9kaXY+PGRpdj48ZGl2PjxkaXY+L3Vzci9teXNxbC9zcmMvaW5zb3VyY2Vf
YnVpbGRfOC4wLjM1L3NxbC9xdWVyeV90ZXJtLmg6NjMwOjEyOiBlcnJvcjogJ2lmIGNvbnN0ZXhw
cicgb25seSBhdmFpbGFibGUgd2l0aCAtc3RkPWMrKzE3IG9yIC1zdGQ9Z251KysxNyBbLVdlcnJv
cl08L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiBjb25zdGV4
cHIgKHZpc2l0X2xlYXZlcyA9PSBWTF9WSVNJVF9MRUFWRVMpJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO15+fn5+fn5+fiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDs8L2Rpdj48L2Rpdj48ZGl2PmNjMXBsdXM6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVk
IGFzIGVycm9yczwvZGl2PjxkaXY+bWFrZVsxXTogKioqIFtNYWtlZmlsZTo0ODA6IGhvdF9wYXRj
aC5sb10gRXJyb3IgMTwvZGl2PjxkaXY+bWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21l
L3lva3UwODI1L2dpdC9teXNxbC1hdWRpdC9zcmMnPC9kaXY+PGRpdj5tYWtlOiAqKiogW01ha2Vm
aWxlOjQyNjogYWxsLXJlY3Vyc2l2ZV0gRXJyb3IgMTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj7jgqjjg6njg7zjgYzlpInjgo/jgaPjgZ/jga7jgafjganjgYbj
goTjgonjgZPjga4gYG9wZ2VuLnB5YCDjga/jgZPjgozjgafoia/jgYQoPynjgonjgZfjgYTjgILm
lrDjgZfjgYTjga7jga8gYC1zdGQ9YysrMTdgIOOBp+WvvuWHpuOBp+OBjeOBneOBhuOBquOBruOB
p2NvbmZpZ3VyZeOBl+OBquOBiuOBl+OAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9k
aXY+PGRpdj4kIENQUEZMQUdTPSItc3RkPWMrKzE3IiAuL2NvbmZpZ3VyZSAtLXdpdGgtbXlzcWw9
L2hvbWUveW9rdTA4MjUvbXlzcWwvc3JjL2luc291cmNlX2J1aWxkXzguMC4zNS8mbmJzcDstLXdp
dGgtbXlzcWwtcGx1Z2luZGlyPS9ob21lL3lva3UwODI1L2F1ZGl0X3BsdWdpbjwvZGl2PjxkaXY+
JCBtYWtlPC9kaXY+PGRpdj4uLjwvZGl2PjxkaXY+PGRpdj4vaG9tZS95b2t1MDgyNS9naXQvbXlz
cWwtYXVkaXQvcGNyZS9taXNzaW5nOiBsaW5lIDgxOiBhY2xvY2FsLTEuMTU6IGNvbW1hbmQgbm90
IGZvdW5kPC9kaXY+PGRpdj5XQVJOSU5HOiAnYWNsb2NhbC0xLjE1JyBpcyBtaXNzaW5nIG9uIHlv
dXIgc3lzdGVtLjwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1lv
dSBzaG91bGQgb25seSBuZWVkIGl0IGlmIHlvdSBtb2RpZmllZCAnYWNpbmNsdWRlLm00JyBvcjwv
ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOydjb25maWd1cmUuYWMn
IG9yIG00IGZpbGVzIGluY2x1ZGVkIGJ5ICdjb25maWd1cmUuYWMnLjwvZGl2PjxkaXY+Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO1RoZSAnYWNsb2NhbCcgcHJvZ3JhbSBpcyBwYXJ0
IG9mIHRoZSBHTlUgQXV0b21ha2UgcGFja2FnZTo8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsmbHQ7aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9tYWtl
Jmd0OzwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO0l0IGFsc28g
cmVxdWlyZXMgR05VIEF1dG9jb25mLCBHTlUgbTQgYW5kIFBlcmwgaW4gb3JkZXIgdG8gcnVuOjwv
ZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtodHRwOi8vd3d3
LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYmZ3Q7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7Jmx0O2h0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9tNC8mZ3Q7
PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O2h0dHA6Ly93
d3cucGVybC5vcmcvJmd0OzwvZGl2PjxkaXY+bWFrZVsyXTogKioqIFtNYWtlZmlsZToxMzU3OiBh
Y2xvY2FsLm00XSBFcnJvciAxMjc8L2Rpdj48ZGl2Pm1ha2VbMl06IExlYXZpbmcgZGlyZWN0b3J5
ICcvaG9tZS95b2t1MDgyNS9naXQvbXlzcWwtYXVkaXQvcGNyZSc8L2Rpdj48ZGl2Pm1ha2VbMV06
ICoqKiBbTWFrZWZpbGU6NzE1OiAuLi9wY3JlL2xpYnBjcmUubGFdIEVycm9yIDI8L2Rpdj48ZGl2
Pm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvaG9tZS95b2t1MDgyNS9naXQvbXlzcWwtYXVk
aXQvc3JjJzwvZGl2PjxkaXY+bWFrZTogKioqIFtNYWtlZmlsZTo0MjY6IGFsbC1yZWN1cnNpdmVd
IEVycm9yIDE8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+5LuK
5pu0YWNsb2NhbC0xLjE144KS5qyy44GX44GM44KJ44KM44KL44CCYm9vc3RyYXAuc2jjga7mmYLn
grnjgafoqIDjgaPjgabjgY/jgozjgabjgoLjgYTjgYTjga7jgojigKbjgII8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRpdj4kIC91c3IvYmluL2FjbG9jYWwgLS12ZXJz
aW9uPC9kaXY+PGRpdj5hY2xvY2FsIChHTlUgYXV0b21ha2UpIDEuMTYuMTwvZGl2PjxkaXY+Q29w
eXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLjwvZGl2PjxkaXY+
TGljZW5zZSBHUEx2Mis6IEdOVSBHUEwgdmVyc2lvbiAyIG9yIGxhdGVyICZsdDtodHRwczovL2du
dS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sJmd0OzwvZGl2PjxkaXY+VGhpcyBpcyBmcmVlIHNv
ZnR3YXJlOiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdlIGFuZCByZWRpc3RyaWJ1dGUgaXQuPC9kaXY+
PGRpdj5UaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3
LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+V3JpdHRlbiBieSBUb20gVHJvbWV5ICZsdDt0cm9t
ZXlAcmVkaGF0LmNvbSZndDs8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2Fu
ZCBBbGV4YW5kcmUgRHVyZXQtTHV0eiAmbHQ7YWRsQGdudS5vcmcmZ3Q7LjwvZGl2PjwvZGl2Pjxk
aXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgaHjgarjgb/jgavjgZPjgoxDZW50T1M3
44Gg44GoYWNsb2NhbC0xLjEz44Gq44Gu44Gn44KE44Gj44Gx44KK5auM44GM44KJ44KM44KL44CC
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PiQgc3VkbyBsbiAtcyAvdXNy
L2Jpbi9hY2xvY2FsLTEuMTYgL3Vzci9iaW4vYWNsb2NhbC0xLjE1PC9kaXY+PGRpdj4kIHN1ZG8g
bG4gLXMgL3Vzci9iaW4vYXV0b21ha2UtMS4xNiAvdXNyL2Jpbi9hdXRvbWFrZS0xLjE1PC9kaXY+
PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjEuMTMgLSZndDsgMS4xNeOBuOOBruOD
quODs+OCr+OBr+aGmuOCieOCjOOBn+OBkeOBqeOAgTEuMTYgLSZndDsgMS4xNeOBquOCieS6kuaP
m+aAp+OBguOCi+OBi+OBquOBqOi7veOBj+aAneOBhOi+vOOCk+OBp+OCt+ODs+ODnOODquODg+OC
r+ODquODs+OCr+OBp+a4iOOBvuOBm+OBpuOBl+OBvuOBhu+8iO+8iTwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4kIG1ha2U8L2Rpdj48ZGl2PjxkaXY+Li48L2Rpdj48ZGl2
PmxpYnRvb2w6IGxpbms6IHJtIC1mciAubGlicy9saWJhdWRpdF9wbHVnaW4ubGF4PC9kaXY+PGRp
dj5saWJ0b29sOiBsaW5rOiAoIGNkICIubGlicyIgJmFtcDsmYW1wOyBybSAtZiAibGliYXVkaXRf
cGx1Z2luLmxhIiAmYW1wOyZhbXA7IGxuIC1zICIuLi9saWJhdWRpdF9wbHVnaW4ubGEiICJsaWJh
dWRpdF9wbHVnaW4ubGEiICk8L2Rpdj48ZGl2Pm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcv
aG9tZS95b2t1MDgyNS9naXQvbXlzcWwtYXVkaXQvc3JjJzwvZGl2PjxkaXY+bWFrZVsxXTogRW50
ZXJpbmcgZGlyZWN0b3J5ICcvaG9tZS95b2t1MDgyNS9naXQvbXlzcWwtYXVkaXQnPC9kaXY+PGRp
dj5tYWtlWzFdOiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yICdhbGwtYW0nLjwvZGl2PjxkaXY+bWFr
ZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgJy9ob21lL3lva3UwODI1L2dpdC9teXNxbC1hdWRpdCc8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48ZGl2PiQgbWFrZSBpbnN0YWxsPC9kaXY+PGRpdj4u
LjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj4kIGxsIC9ob21lL3lva3UwODI1L2F1ZGl0
X3BsdWdpbi88L2Rpdj48ZGl2PnRvdGFsIDE3MDQwPC9kaXY+PGRpdj4tcnctci0tci0tLiAxIHlv
a3UwODI1IHlva3UwODI1IDEyNDQ1NjcwIE5vdiAyMSAwNDo1NyBsaWJhdWRpdF9wbHVnaW4uYTwv
ZGl2PjxkaXY+LXJ3eHIteHIteC4gMSB5b2t1MDgyNSB5b2t1MDgyNSZuYnNwOyAmbmJzcDsgJm5i
c3A7IDk5NiBOb3YgMjEgMDQ6NTcgbGliYXVkaXRfcGx1Z2luLmxhPC9kaXY+PGRpdj5scnd4cnd4
cnd4LiAxIHlva3UwODI1IHlva3UwODI1Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7MjQgTm92
IDIxIDA0OjU3IGxpYmF1ZGl0X3BsdWdpbi5zbyAtJmd0OyBsaWJhdWRpdF9wbHVnaW4uc28uMC4w
LjA8L2Rpdj48ZGl2Pmxyd3hyd3hyd3guIDEgeW9rdTA4MjUgeW9rdTA4MjUmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsyNCBOb3YgMjEgMDQ6NTcgbGliYXVkaXRfcGx1Z2luLnNvLjAgLSZndDsg
bGliYXVkaXRfcGx1Z2luLnNvLjAuMC4wPC9kaXY+PGRpdj4tcnd4ci14ci14LiAxIHlva3UwODI1
IHlva3UwODI1Jm5ic3A7IDQ5OTQyOTYgTm92IDIxIDA0OjU3IGxpYmF1ZGl0X3BsdWdpbi5zby4w
LjAuMDwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7lh7rmnaXk
uIrjgYzjgaPjgZ/jgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+JCBi
YXNoIC4vb2Zmc2V0LWV4dHJhY3Qvb2Zmc2V0LWV4dHJhY3Quc2ggL3Vzci9teXNxbC84LjAuMzUv
YmluL215c3FsZDwvZGl2PjxkaXY+PGRpdj4vL29mZnNldHMgZm9yOiAvdXNyL215c3FsLzguMC4z
NS9iaW4vbXlzcWxkICg4LjAuMzUpPC9kaXY+PGRpdj57IjguMC4zNSIsImQ5YmRkYTNmZTE4MjIy
MzBkNWI1ZDI2NWI5MzU5ZmZjIiwgOTQ5NiwgOTUzNiwgNDk1MiwgNjQzNiwgMTI4OCwgMCwgMCwg
MzIsIDY0LCAxNjAsIDEzNzYsIDk2MzYsIDYwNTYsIDQyNDgsIDQyNTYsIDQyNjAsIDc3MjAsIDE1
NzYsIDMyLCA4NjgwLCA4NzIwLCA4NzA0LCAxMjg4MCwgMTQwLCA2NjQsIDMyMH0sPC9kaXY+PC9k
aXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOBguOBqOOBr+OBk+OCjOOBpy5z
b+ODleOCoeOCpOODq+OCkuOCs+ODlOODvOOBl+OBpm15LmNuZuOCkue3qOmbhuOBl+OBpklOU1RB
TEwgUExVR0lO44GX44Gf44KK44GZ44KM44Gw5LiA5b+c5YuV44GN44Gd44GGPC9kaXY+PGRpdj48
YnI+PC9kaXY+"></div></h1></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-47532747544298382202023-11-08T10:39:00.003+09:002023-11-08T10:40:16.496+09:00SHOW PROCESSLISTとinformation_schema.processlistとperformance_schema.processlistと<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/4753274754429838220" markdown-here-wrapper-content-modified="true"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;"><table style="border-collapse: collapse; border-spacing: 0px; border: 0px; font: inherit; margin: 1.2em 0px; padding: 0px;"><thead><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><th style="background-color: #f0f0f0; border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">呼び出し元</th><th style="background-color: #f0f0f0; border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">エントリーポイント</th><th style="background-color: #f0f0f0; border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">リスト関数</th></tr></thead><tbody style="border: 0px; margin: 0px; padding: 0px;"><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SHOW PROCESSLIST (option=OFF)</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">mysqld_list_processes</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Global_THD_manager::do_for_all_thd_copy</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">information_schema.processlist</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">fill_schema_processlist</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">Global_THD_manager::do_for_all_thd_copy</td></tr><tr style="background-color: white; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">performance_schema.processlist</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">table_processlist::make_row</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">table_processlist::read_row_values</td></tr><tr style="background-color: #f8f8f8; border-bottom-color: initial; border-bottom-style: initial; border-image: initial; border-left-color: initial; border-left-style: initial; border-right-color: initial; border-right-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-width: 1px 0px 0px; margin: 0px; padding: 0px;"><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">SHOW PROCESSLIST (option=ON)</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;">table_processlist::make_row</td><td style="border: 1px solid rgb(204, 204, 204); font-size: 1em; margin: 0px; padding: 0.5em 1em;"><span style="background-color: white;">table_processlist::read_row_values</span></td></tr></tbody></table><ul style="font-size: medium; font-weight: 400; margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">Global_THD_manager::do_for_all_thd_copy</code> は 全体の1/8 ずつ<code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">LOCK_thd_remove</code> と <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">LOCK_thd_list</code> のmutexを取るのでその瞬間の新規接続とコネクション切断ができない<ul style="margin: 0px; padding-left: 1em;"><li style="margin: 0.5em 0px;"><a href="https://github.com/mysql/mysql-server/blob/87307d4ddd88405117e3f1e51323836d57ab1f57/sql/mysqld_thd_manager.cc#L286-L307" target="_blank">https://github.com/mysql/mysql-server/blob/87307d4ddd88405117e3f1e51323836d57ab1f57/sql/mysqld_thd_manager.cc#L286-L307</a></li></ul></li></ul><hr style="font-size: medium; font-weight: 400;" /><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">MySQL 8.2.0で <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">information_schema.processlist</code> がdeprecatedになり、今までの <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">SHOW PROCESSLIST</code> も <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">performance_schema.processlist</code> からのSELECTに書き換えられる予定だというリリースノートがあった。</p><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;"><a href="https://dev.mysql.com/doc/relnotes/mysql/8.2/en/news-8-2-0.html" target="_blank">https://dev.mysql.com/doc/relnotes/mysql/8.2/en/news-8-2-0.html</a></p><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">前からオラクル青山のセミナーとかで「SHOW PROCESSLISTやinformation_schema.processlistはmutex取るからオススメしない、performance_schemaのthreadsやprocesslistがオススメ」って言われていた(現地で聞いた気がするのでたぶん2020以前だと思うんだけど)</p><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">MySQL 5.7.39とそれ以降から <a href="https://dev.mysql.com/doc/refman/5.7/en/performance-schema-system-variables.html#sysvar_performance_schema_show_processlist" target="_blank">performance_schema_show_processlist=ON</a>にすると <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">SHOW PROCESSLIST</code> は <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">performance_schema.processlist</code> からのSELECTに内部的にディスパッチされる。</p><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">(8.2.0でそもそもinformation_schema.processlistが非推奨でperformance_schema.processlistが当然のデフォルトになるようなので、この変数自体も8.2.0とそれ以降では非推奨)</p><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;">ネイティブな ( デフォルトの <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">performance_schema_show_processlist=OFF</code> のままの) <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">SHOW PROCESSLIST</code></p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">(gdb) bt
+bt
#0 mysqld_list_processes(THD*, char const*, bool, bool) () at /home/yoku0825/mysql-8.0.35/sql/sql_show.cc:2961
#1 0x0000000000e41602 in Sql_cmd_show_processlist::execute_inner(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_class.h:1276
#2 0x0000000000e200c4 in Sql_cmd_dml::execute(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_select.cc:793
#3 0x0000000000dc63a1 in mysql_execute_command(THD*, bool) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:4719
#4 0x0000000000dca030 in dispatch_sql_command(THD*, Parser_state*) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:5368
#5 0x0000000000dcb39e in dispatch_command(THD*, COM_DATA const*, enum_server_command) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:2054
#6 0x0000000000dcd727 in do_command (thd=thd@entry=0x7fec74000d20) at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:1439
#7 0x0000000000f24500 in handle_connection (arg=arg@entry=0x6cc4830) at /home/yoku0825/mysql-8.0.35/sql/conn_handler/connection_handler_per_thread.cc:302
#8 0x00000000024f91b5 in pfs_spawn_thread (arg=0x6be2d20) at /home/yoku0825/mysql-8.0.35/storage/perfschema/pfs.cc:3042
#9 0x00007fecd4b28ea5 in start_thread (arg=0x7fecc0657700) at pthread_create.c:307
#10 0x00007fecd3142b0d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">SELECT * FROM information_schema.processlist</code></p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">(gdb) bt
+bt
#0 fill_schema_processlist (thd=0x7fec74000d20, tables=0x7fec7400d630) at /home/yoku0825/mysql-8.0.35/sql/sql_show.cc:3212
#1 0x0000000000e38db5 in do_fill_information_schema_table(THD*, Table_ref*, Item*) () at /home/yoku0825/mysql-8.0.35/sql/sql_show.cc:4904
#2 0x0000000001305a4d in MaterializeInformationSchemaTableIterator::Init (this=0x7fec74020118) at /home/yoku0825/mysql-8.0.35/sql/iterators/row_iterator.h:227
#3 0x0000000000e9f65c in Query_expression::ExecuteIteratorQuery(THD*) () at /opt/rh/devtoolset-11/root/usr/include/c++/11/bits/unique_ptr.h:421
#4 0x0000000000e9fa7c in Query_expression::execute(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_union.cc:1823
#5 0x0000000000e200c4 in Sql_cmd_dml::execute(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_select.cc:793
#6 0x0000000000dc63a1 in mysql_execute_command(THD*, bool) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:4719
#7 0x0000000000dca030 in dispatch_sql_command(THD*, Parser_state*) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:5368
#8 0x0000000000dcb39e in dispatch_command(THD*, COM_DATA const*, enum_server_command) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:2054
#9 0x0000000000dcd727 in do_command (thd=thd@entry=0x7fec74000d20) at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:1439
#10 0x0000000000f24500 in handle_connection (arg=arg@entry=0x6cc4830) at /home/yoku0825/mysql-8.0.35/sql/conn_handler/connection_handler_per_thread.cc:302
#11 0x00000000024f91b5 in pfs_spawn_thread (arg=0x6be2d20) at /home/yoku0825/mysql-8.0.35/storage/perfschema/pfs.cc:3042
#12 0x00007fecd4b28ea5 in start_thread (arg=0x7fecc0657700) at pthread_create.c:307
#13 0x00007fecd3142b0d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">SELECT * FROM performance_schema.processlist</code></p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">(gdb) bt
+bt
#0 table_processlist::make_row(PFS_thread*) () at /home/yoku0825/mysql-8.0.35/storage/perfschema/table_processlist.cc:157
#1 0x00000000024ef861 in rnd_next (buf=0x7fec740b9480 "\377", this=0x7fec740b7de0) at /home/yoku0825/mysql-8.0.35/storage/perfschema/ha_perfschema.cc:1722
#2 ha_perfschema::rnd_next (this=0x7fec740b7de0, buf=0x7fec740b9480 "\377") at /home/yoku0825/mysql-8.0.35/storage/perfschema/ha_perfschema.cc:1713
#3 0x0000000001040b2c in handler::ha_rnd_next (this=0x7fec740b7de0, buf=0x7fec740b9480 "\377") at /home/yoku0825/mysql-8.0.35/sql/handler.cc:2971
#4 0x000000000119467b in TableScanIterator::Read (this=0x7fec740a83f8) at /home/yoku0825/mysql-8.0.35/sql/iterators/row_iterator.h:245
#5 0x0000000000e9f6e3 in Query_expression::ExecuteIteratorQuery(THD*) () at /opt/rh/devtoolset-11/root/usr/include/c++/11/bits/unique_ptr.h:421
#6 0x0000000000e9fa7c in Query_expression::execute(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_union.cc:1823
#7 0x0000000000e200c4 in Sql_cmd_dml::execute(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_select.cc:793
#8 0x0000000000dc63a1 in mysql_execute_command(THD*, bool) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:4719
#9 0x0000000000dca030 in dispatch_sql_command(THD*, Parser_state*) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:5368
#10 0x0000000000dcb39e in dispatch_command(THD*, COM_DATA const*, enum_server_command) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:2054
#11 0x0000000000dcd727 in do_command (thd=thd@entry=0x7fec74000d20) at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:1439
#12 0x0000000000f24500 in handle_connection (arg=arg@entry=0x6cc4830) at /home/yoku0825/mysql-8.0.35/sql/conn_handler/connection_handler_per_thread.cc:302
#13 0x00000000024f91b5 in pfs_spawn_thread (arg=0x6be2d20) at /home/yoku0825/mysql-8.0.35/storage/perfschema/pfs.cc:3042
#14 0x00007fecd4b28ea5 in start_thread (arg=0x7fecc0657700) at pthread_create.c:307
#15 0x00007fecd3142b0d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">performance_schema_show_processlist=ON</code> にした <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">SHOW PROCESSLIST</code></p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">(gdb) bt
+bt
#0 table_processlist::make_row(PFS_thread*) () at /home/yoku0825/mysql-8.0.35/storage/perfschema/table_processlist.cc:157
#1 0x00000000024ef861 in rnd_next (buf=0x7fec740b9480 "\377", this=0x7fec740b7de0) at /home/yoku0825/mysql-8.0.35/storage/perfschema/ha_perfschema.cc:1722
#2 ha_perfschema::rnd_next (this=0x7fec740b7de0, buf=0x7fec740b9480 "\377") at /home/yoku0825/mysql-8.0.35/storage/perfschema/ha_perfschema.cc:1713
#3 0x0000000001040b2c in handler::ha_rnd_next (this=0x7fec740b7de0, buf=0x7fec740b9480 "\377") at /home/yoku0825/mysql-8.0.35/sql/handler.cc:2971
#4 0x000000000119467b in TableScanIterator::Read (this=0x7fec740c39c0) at /home/yoku0825/mysql-8.0.35/sql/iterators/row_iterator.h:245
#5 0x0000000001309f12 in MaterializeIterator<DummyIteratorProfiler>::MaterializeQueryBlock (this=this@entry=0x7fec740c3aa0, query_block=
Python Exception <class 'gdb.error'> There is no member or method named _M_head_impl.:
@0x7fec740c3a50: {subquery_iterator = , select_number = 2, join = 0x7fec740c1fe0, disable_deduplication_by_hash_field = false, copy_items = true, m_total_operands = 0, m_operand_idx = 0, m_first_distinct = 0, temp_table_param = 0x7fec740c2150, is_recursive_reference = false, recursive_reader = 0x0}, stored_rows=stored_rows@entry=0x7fecc0654880)
at /opt/rh/devtoolset-11/root/usr/include/c++/11/bits/unique_ptr.h:421
#6 0x000000000130af13 in MaterializeIterator<DummyIteratorProfiler>::Init (this=0x7fec740c3aa0) at /home/yoku0825/mysql-8.0.35/sql/iterators/composite_iterators.cc:928
#7 0x0000000000e9f65c in Query_expression::ExecuteIteratorQuery(THD*) () at /opt/rh/devtoolset-11/root/usr/include/c++/11/bits/unique_ptr.h:421
#8 0x0000000000e9fa7c in Query_expression::execute(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_union.cc:1823
#9 0x0000000000e200c4 in Sql_cmd_dml::execute(THD*) () at /home/yoku0825/mysql-8.0.35/sql/sql_select.cc:793
#10 0x0000000000dc63a1 in mysql_execute_command(THD*, bool) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:4719
#11 0x0000000000dca030 in dispatch_sql_command(THD*, Parser_state*) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:5368
#12 0x0000000000dcb39e in dispatch_command(THD*, COM_DATA const*, enum_server_command) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:2054
#13 0x0000000000dcd727 in do_command (thd=thd@entry=0x7fec74000d20) at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:1439
#14 0x0000000000f24500 in handle_connection (arg=arg@entry=0x6cc4830) at /home/yoku0825/mysql-8.0.35/sql/conn_handler/connection_handler_per_thread.cc:302
#15 0x00000000024f91b5 in pfs_spawn_thread (arg=0x6be2d20) at /home/yoku0825/mysql-8.0.35/storage/perfschema/pfs.cc:3042
#16 0x00007fecd4b28ea5 in start_thread (arg=0x7fecc0657700) at pthread_create.c:307
#17 0x00007fecd3142b0d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
</code></pre><div style="font-size: 0em; font-weight: 400; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+IyBUTDtEUjwvcD48cD58Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDvlkbzjgbPlh7rjgZflhYMmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wmbmJzcDsgJm5ic3A7ICZuYnNwO+OCqOODs+ODiOODquODvOODneOCpOODs+ODiCZuYnNwOyAm
bmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7IOODquOCueODiOmWouaVsCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDxicj58IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIHw8YnI+fCBTSE9XIFBST0NFU1NMSVNUIChvcHRpb249T0ZG
KSZuYnNwOyB8IG15c3FsZF9saXN0X3Byb2Nlc3NlcyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgRmlsbF9wcm9jZXNzX2xpc3Q6OkZpbGxfcHJvY2Vzc19saXN0LCBHbG9iYWxfVEhEX21hbmFn
ZXI6OmRvX2Zvcl9hbGxfdGhkX2NvcHkgfDxicj58IGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNz
bGlzdCB8IGZpbGxfc2NoZW1hX3Byb2Nlc3NsaXN0Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IEZpbGxf
cHJvY2Vzc19saXN0OjpGaWxsX3Byb2Nlc3NfbGlzdCwgR2xvYmFsX1RIRF9tYW5hZ2VyOjpkb19m
b3JfYWxsX3RoZF9jb3B5IHw8YnI+fCBwZXJmb3JtYW5jZV9zY2hlbWEucHJvY2Vzc2xpc3QgfCB0
YWJsZV9wcm9jZXNzbGlzdDo6bWFrZV9yb3cgfCB0YWJsZV9wcm9jZXNzbGlzdDo6cmVhZF9yb3df
dmFsdWVzJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8YnI+fCBTSE9X
IFBST0NFU1NMSVNUIChvcHRpb249T04pJm5ic3A7ICZuYnNwO3wgdGFibGVfcHJvY2Vzc2xpc3Q6
Om1ha2Vfcm93IHwgRmlsbF9wcm9jZXNzX2xpc3Q6OkZpbGxfcHJvY2Vzc19saXN0LCBHbG9iYWxf
VEhEX21hbmFnZXI6OmRvX2Zvcl9hbGxfdGhkX2NvcHkgfDwvcD48ZGl2Pjxicj48L2Rpdj48ZGl2
Pi0gYEdsb2JhbF9USERfbWFuYWdlcjo6ZG9fZm9yX2FsbF90aGRfY29weWAg44GvIOWFqOS9k+OB
rjEvOCDjgZrjgaRgTE9DS190aGRfcmVtb3ZlYCDjgaggYExPQ0tfdGhkX2xpc3RgIOOBrm11dGV4
44KS5Y+W44KL44Gu44Gn44Gd44Gu556s6ZaT44Gu5paw6KaP5o6l57aa44Go44Kz44ON44Kv44K3
44On44Oz5YiH5pat44GM44Gn44GN44Gq44GEPC9kaXY+PGRpdj4mbmJzcDsgLSZuYnNwO2h0dHBz
Oi8vZ2l0aHViLmNvbS9teXNxbC9teXNxbC1zZXJ2ZXIvYmxvYi84NzMwN2Q0ZGRkODg0MDUxMTdl
M2YxZTUxMzIzODM2ZDU3YWIxZjU3L3NxbC9teXNxbGRfdGhkX21hbmFnZXIuY2MjTDI4Ni1MMzA3
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4tLS0tPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5N
eVNRTCA4LjIuMOOBpyBgaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0YCDjgYxkZXByZWNh
dGVk44Gr44Gq44KK44CB5LuK44G+44Gn44GuIGBTSE9XIFBST0NFU1NMSVNUYCDjgoIgYHBlcmZv
cm1hbmNlX3NjaGVtYS5wcm9jZXNzbGlzdGAg44GL44KJ44GuU0VMRUNU44Gr5pu444GN5o+b44GI
44KJ44KM44KL5LqI5a6a44Gg44Go44GE44GG44Oq44Oq44O844K544OO44O844OI44GM44GC44Gj
44Gf44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5odHRwczovL2Rldi5teXNxbC5jb20vZG9j
L3JlbG5vdGVzL215c3FsLzguMi9lbi9uZXdzLTgtMi0wLmh0bWw8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2PuWJjeOBi+OCieOCquODqeOCr+ODq+mdkuWxseOBruOCu+ODn+ODiuODvOOBqOOBi+OB
p+OAjFNIT1cgUFJPQ0VTU0xJU1TjgoRpbmZvcm1hdGlvbl9zY2hlbWEucHJvY2Vzc2xpc3Tjga9t
dXRleOWPluOCi+OBi+OCieOCquOCueOCueODoeOBl+OBquOBhOOAgXBlcmZvcm1hbmNlX3NjaGVt
YeOBrnRocmVhZHPjgoRwcm9jZXNzbGlzdOOBjOOCquOCueOCueODoeOAjeOBo+OBpuiogOOCj+OC
jOOBpuOBhOOBn++8iOePvuWcsOOBp+iBnuOBhOOBn+awl+OBjOOBmeOCi+OBruOBp+OBn+OBtuOC
kzIwMjDku6XliY3jgaDjgajmgJ3jgYbjgpPjgaDjgZHjganvvIk8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2Pk15U1FMIDUuNy4zOeOBqOOBneOCjOS7pemZjeOBi+OCiSBbcGVyZm9ybWFuY2Vfc2No
ZW1hX3Nob3dfcHJvY2Vzc2xpc3Q9T05dKGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFu
LzUuNy9lbi9wZXJmb3JtYW5jZS1zY2hlbWEtc3lzdGVtLXZhcmlhYmxlcy5odG1sI3N5c3Zhcl9w
ZXJmb3JtYW5jZV9zY2hlbWFfc2hvd19wcm9jZXNzbGlzdCnjgavjgZnjgovjgaggYFNIT1cgUFJP
Q0VTU0xJU1RgIOOBryBgcGVyZm9ybWFuY2Vfc2NoZW1hLnByb2Nlc3NsaXN0YCDjgYvjgonjga5T
RUxFQ1TjgavlhoXpg6jnmoTjgavjg4fjgqPjgrnjg5Hjg4Pjg4HjgZXjgozjgovjgII8L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2Pig4LjIuMOOBp+OBneOCguOBneOCgmluZm9ybWF0aW9uX3NjaGVt
YS5wcm9jZXNzbGlzdOOBjOmdnuaOqOWlqOOBp3BlcmZvcm1hbmNlX3NjaGVtYS5wcm9jZXNzbGlz
dOOBjOW9k+eEtuOBruODh+ODleOCqeODq+ODiOOBq+OBquOCi+OCiOOBhuOBquOBruOBp+OAgeOB
k+OBruWkieaVsOiHquS9k+OCgjguMi4w44Go44Gd44KM5Lul6ZmN44Gn44Gv6Z2e5o6o5aWoKTwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44ON44Kk44OG44Kj44OW44Gq
ICgg44OH44OV44Kp44Or44OI44GuIGBwZXJmb3JtYW5jZV9zY2hlbWFfc2hvd19wcm9jZXNzbGlz
dD1PRkZgIOOBruOBvuOBvuOBrikgYFNIT1cgUFJPQ0VTU0xJU1RgPC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+KGdkYikgYnQ8L2Rpdj48ZGl2PitidDwvZGl2Pjxk
aXY+IzAmbmJzcDsgbXlzcWxkX2xpc3RfcHJvY2Vzc2VzKFRIRCosIGNoYXIgY29uc3QqLCBib29s
LCBib29sKSAoKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF9zaG93LmNj
OjI5NjE8L2Rpdj48ZGl2PiMxJm5ic3A7IDB4MDAwMDAwMDAwMGU0MTYwMiBpbiBTcWxfY21kX3No
b3dfcHJvY2Vzc2xpc3Q6OmV4ZWN1dGVfaW5uZXIoVEhEKikgKCkgYXQgL2hvbWUveW9rdTA4MjUv
bXlzcWwtOC4wLjM1L3NxbC9zcWxfY2xhc3MuaDoxMjc2PC9kaXY+PGRpdj4jMiZuYnNwOyAweDAw
MDAwMDAwMDBlMjAwYzQgaW4gU3FsX2NtZF9kbWw6OmV4ZWN1dGUoVEhEKikgKCkgYXQgL2hvbWUv
eW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfc2VsZWN0LmNjOjc5MzwvZGl2PjxkaXY+IzMm
bmJzcDsgMHgwMDAwMDAwMDAwZGM2M2ExIGluIG15c3FsX2V4ZWN1dGVfY29tbWFuZChUSEQqLCBi
b29sKSAoKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF9wYXJzZS5jYzo0
NzE5PC9kaXY+PGRpdj4jNCZuYnNwOyAweDAwMDAwMDAwMDBkY2EwMzAgaW4gZGlzcGF0Y2hfc3Fs
X2NvbW1hbmQoVEhEKiwgUGFyc2VyX3N0YXRlKikgKCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwt
OC4wLjM1L3NxbC9zcWxfcGFyc2UuY2M6NTM2ODwvZGl2PjxkaXY+IzUmbmJzcDsgMHgwMDAwMDAw
MDAwZGNiMzllIGluIGRpc3BhdGNoX2NvbW1hbmQoVEhEKiwgQ09NX0RBVEEgY29uc3QqLCBlbnVt
X3NlcnZlcl9jb21tYW5kKSAoKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3Nx
bF9wYXJzZS5jYzoyMDU0PC9kaXY+PGRpdj4jNiZuYnNwOyAweDAwMDAwMDAwMDBkY2Q3MjcgaW4g
ZG9fY29tbWFuZCAodGhkPXRoZEBlbnRyeT0weDdmZWM3NDAwMGQyMCkgYXQgL2hvbWUveW9rdTA4
MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfcGFyc2UuY2M6MTQzOTwvZGl2PjxkaXY+IzcmbmJzcDsg
MHgwMDAwMDAwMDAwZjI0NTAwIGluIGhhbmRsZV9jb25uZWN0aW9uIChhcmc9YXJnQGVudHJ5PTB4
NmNjNDgzMCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9jb25uX2hhbmRsZXIv
Y29ubmVjdGlvbl9oYW5kbGVyX3Blcl90aHJlYWQuY2M6MzAyPC9kaXY+PGRpdj4jOCZuYnNwOyAw
eDAwMDAwMDAwMDI0ZjkxYjUgaW4gcGZzX3NwYXduX3RocmVhZCAoYXJnPTB4NmJlMmQyMCkgYXQg
L2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3N0b3JhZ2UvcGVyZnNjaGVtYS9wZnMuY2M6MzA0
MjwvZGl2PjxkaXY+IzkmbmJzcDsgMHgwMDAwN2ZlY2Q0YjI4ZWE1IGluIHN0YXJ0X3RocmVhZCAo
YXJnPTB4N2ZlY2MwNjU3NzAwKSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjMwNzwvZGl2PjxkaXY+IzEw
IDB4MDAwMDdmZWNkMzE0MmIwZCBpbiBjbG9uZSAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9s
aW51eC94ODZfNjQvY2xvbmUuUzoxMTE8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJy
PjwvZGl2PjxkaXY+YFNFTEVDVCAqIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnByb2Nlc3NsaXN0
YDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2PihnZGIpIGJ0PC9k
aXY+PGRpdj4rYnQ8L2Rpdj48ZGl2PiMwJm5ic3A7IGZpbGxfc2NoZW1hX3Byb2Nlc3NsaXN0ICh0
aGQ9MHg3ZmVjNzQwMDBkMjAsIHRhYmxlcz0weDdmZWM3NDAwZDYzMCkgYXQgL2hvbWUveW9rdTA4
MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfc2hvdy5jYzozMjEyPC9kaXY+PGRpdj4jMSZuYnNwOyAw
eDAwMDAwMDAwMDBlMzhkYjUgaW4gZG9fZmlsbF9pbmZvcm1hdGlvbl9zY2hlbWFfdGFibGUoVEhE
KiwgVGFibGVfcmVmKiwgSXRlbSopICgpIGF0IC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9z
cWwvc3FsX3Nob3cuY2M6NDkwNDwvZGl2PjxkaXY+IzImbmJzcDsgMHgwMDAwMDAwMDAxMzA1YTRk
IGluIE1hdGVyaWFsaXplSW5mb3JtYXRpb25TY2hlbWFUYWJsZUl0ZXJhdG9yOjpJbml0ICh0aGlz
PTB4N2ZlYzc0MDIwMTE4KSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL2l0ZXJh
dG9ycy9yb3dfaXRlcmF0b3IuaDoyMjc8L2Rpdj48ZGl2PiMzJm5ic3A7IDB4MDAwMDAwMDAwMGU5
ZjY1YyBpbiBRdWVyeV9leHByZXNzaW9uOjpFeGVjdXRlSXRlcmF0b3JRdWVyeShUSEQqKSAoKSBh
dCAvb3B0L3JoL2RldnRvb2xzZXQtMTEvcm9vdC91c3IvaW5jbHVkZS9jKysvMTEvYml0cy91bmlx
dWVfcHRyLmg6NDIxPC9kaXY+PGRpdj4jNCZuYnNwOyAweDAwMDAwMDAwMDBlOWZhN2MgaW4gUXVl
cnlfZXhwcmVzc2lvbjo6ZXhlY3V0ZShUSEQqKSAoKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04
LjAuMzUvc3FsL3NxbF91bmlvbi5jYzoxODIzPC9kaXY+PGRpdj4jNSZuYnNwOyAweDAwMDAwMDAw
MDBlMjAwYzQgaW4gU3FsX2NtZF9kbWw6OmV4ZWN1dGUoVEhEKikgKCkgYXQgL2hvbWUveW9rdTA4
MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfc2VsZWN0LmNjOjc5MzwvZGl2PjxkaXY+IzYmbmJzcDsg
MHgwMDAwMDAwMDAwZGM2M2ExIGluIG15c3FsX2V4ZWN1dGVfY29tbWFuZChUSEQqLCBib29sKSAo
KSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF9wYXJzZS5jYzo0NzE5PC9k
aXY+PGRpdj4jNyZuYnNwOyAweDAwMDAwMDAwMDBkY2EwMzAgaW4gZGlzcGF0Y2hfc3FsX2NvbW1h
bmQoVEhEKiwgUGFyc2VyX3N0YXRlKikgKCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1
L3NxbC9zcWxfcGFyc2UuY2M6NTM2ODwvZGl2PjxkaXY+IzgmbmJzcDsgMHgwMDAwMDAwMDAwZGNi
MzllIGluIGRpc3BhdGNoX2NvbW1hbmQoVEhEKiwgQ09NX0RBVEEgY29uc3QqLCBlbnVtX3NlcnZl
cl9jb21tYW5kKSAoKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF9wYXJz
ZS5jYzoyMDU0PC9kaXY+PGRpdj4jOSZuYnNwOyAweDAwMDAwMDAwMDBkY2Q3MjcgaW4gZG9fY29t
bWFuZCAodGhkPXRoZEBlbnRyeT0weDdmZWM3NDAwMGQyMCkgYXQgL2hvbWUveW9rdTA4MjUvbXlz
cWwtOC4wLjM1L3NxbC9zcWxfcGFyc2UuY2M6MTQzOTwvZGl2PjxkaXY+IzEwIDB4MDAwMDAwMDAw
MGYyNDUwMCBpbiBoYW5kbGVfY29ubmVjdGlvbiAoYXJnPWFyZ0BlbnRyeT0weDZjYzQ4MzApIGF0
IC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9zcWwvY29ubl9oYW5kbGVyL2Nvbm5lY3Rpb25f
aGFuZGxlcl9wZXJfdGhyZWFkLmNjOjMwMjwvZGl2PjxkaXY+IzExIDB4MDAwMDAwMDAwMjRmOTFi
NSBpbiBwZnNfc3Bhd25fdGhyZWFkIChhcmc9MHg2YmUyZDIwKSBhdCAvaG9tZS95b2t1MDgyNS9t
eXNxbC04LjAuMzUvc3RvcmFnZS9wZXJmc2NoZW1hL3Bmcy5jYzozMDQyPC9kaXY+PGRpdj4jMTIg
MHgwMDAwN2ZlY2Q0YjI4ZWE1IGluIHN0YXJ0X3RocmVhZCAoYXJnPTB4N2ZlY2MwNjU3NzAwKSBh
dCBwdGhyZWFkX2NyZWF0ZS5jOjMwNzwvZGl2PjxkaXY+IzEzIDB4MDAwMDdmZWNkMzE0MmIwZCBp
biBjbG9uZSAoKSBhdCAuLi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvY2xvbmUuUzox
MTE8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YFNFTEVDVCAq
IEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLnByb2Nlc3NsaXN0YDwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2PihnZGIpIGJ0PC9kaXY+PGRpdj4rYnQ8L2Rpdj48ZGl2
PiMwJm5ic3A7IHRhYmxlX3Byb2Nlc3NsaXN0OjptYWtlX3JvdyhQRlNfdGhyZWFkKikgKCkgYXQg
L2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3N0b3JhZ2UvcGVyZnNjaGVtYS90YWJsZV9wcm9j
ZXNzbGlzdC5jYzoxNTc8L2Rpdj48ZGl2PiMxJm5ic3A7IDB4MDAwMDAwMDAwMjRlZjg2MSBpbiBy
bmRfbmV4dCAoYnVmPTB4N2ZlYzc0MGI5NDgwICJcMzc3IiwgdGhpcz0weDdmZWM3NDBiN2RlMCkg
YXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3N0b3JhZ2UvcGVyZnNjaGVtYS9oYV9wZXJm
c2NoZW1hLmNjOjE3MjI8L2Rpdj48ZGl2PiMyJm5ic3A7IGhhX3BlcmZzY2hlbWE6OnJuZF9uZXh0
ICh0aGlzPTB4N2ZlYzc0MGI3ZGUwLCBidWY9MHg3ZmVjNzQwYjk0ODAgIlwzNzciKSBhdCAvaG9t
ZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3RvcmFnZS9wZXJmc2NoZW1hL2hhX3BlcmZzY2hlbWEu
Y2M6MTcxMzwvZGl2PjxkaXY+IzMmbmJzcDsgMHgwMDAwMDAwMDAxMDQwYjJjIGluIGhhbmRsZXI6
OmhhX3JuZF9uZXh0ICh0aGlzPTB4N2ZlYzc0MGI3ZGUwLCBidWY9MHg3ZmVjNzQwYjk0ODAgIlwz
NzciKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL2hhbmRsZXIuY2M6Mjk3MTwv
ZGl2PjxkaXY+IzQmbmJzcDsgMHgwMDAwMDAwMDAxMTk0NjdiIGluIFRhYmxlU2Nhbkl0ZXJhdG9y
OjpSZWFkICh0aGlzPTB4N2ZlYzc0MGE4M2Y4KSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAu
MzUvc3FsL2l0ZXJhdG9ycy9yb3dfaXRlcmF0b3IuaDoyNDU8L2Rpdj48ZGl2PiM1Jm5ic3A7IDB4
MDAwMDAwMDAwMGU5ZjZlMyBpbiBRdWVyeV9leHByZXNzaW9uOjpFeGVjdXRlSXRlcmF0b3JRdWVy
eShUSEQqKSAoKSBhdCAvb3B0L3JoL2RldnRvb2xzZXQtMTEvcm9vdC91c3IvaW5jbHVkZS9jKysv
MTEvYml0cy91bmlxdWVfcHRyLmg6NDIxPC9kaXY+PGRpdj4jNiZuYnNwOyAweDAwMDAwMDAwMDBl
OWZhN2MgaW4gUXVlcnlfZXhwcmVzc2lvbjo6ZXhlY3V0ZShUSEQqKSAoKSBhdCAvaG9tZS95b2t1
MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF91bmlvbi5jYzoxODIzPC9kaXY+PGRpdj4jNyZuYnNw
OyAweDAwMDAwMDAwMDBlMjAwYzQgaW4gU3FsX2NtZF9kbWw6OmV4ZWN1dGUoVEhEKikgKCkgYXQg
L2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfc2VsZWN0LmNjOjc5MzwvZGl2Pjxk
aXY+IzgmbmJzcDsgMHgwMDAwMDAwMDAwZGM2M2ExIGluIG15c3FsX2V4ZWN1dGVfY29tbWFuZChU
SEQqLCBib29sKSAoKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF9wYXJz
ZS5jYzo0NzE5PC9kaXY+PGRpdj4jOSZuYnNwOyAweDAwMDAwMDAwMDBkY2EwMzAgaW4gZGlzcGF0
Y2hfc3FsX2NvbW1hbmQoVEhEKiwgUGFyc2VyX3N0YXRlKikgKCkgYXQgL2hvbWUveW9rdTA4MjUv
bXlzcWwtOC4wLjM1L3NxbC9zcWxfcGFyc2UuY2M6NTM2ODwvZGl2PjxkaXY+IzEwIDB4MDAwMDAw
MDAwMGRjYjM5ZSBpbiBkaXNwYXRjaF9jb21tYW5kKFRIRCosIENPTV9EQVRBIGNvbnN0KiwgZW51
bV9zZXJ2ZXJfY29tbWFuZCkgKCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9z
cWxfcGFyc2UuY2M6MjA1NDwvZGl2PjxkaXY+IzExIDB4MDAwMDAwMDAwMGRjZDcyNyBpbiBkb19j
b21tYW5kICh0aGQ9dGhkQGVudHJ5PTB4N2ZlYzc0MDAwZDIwKSBhdCAvaG9tZS95b2t1MDgyNS9t
eXNxbC04LjAuMzUvc3FsL3NxbF9wYXJzZS5jYzoxNDM5PC9kaXY+PGRpdj4jMTIgMHgwMDAwMDAw
MDAwZjI0NTAwIGluIGhhbmRsZV9jb25uZWN0aW9uIChhcmc9YXJnQGVudHJ5PTB4NmNjNDgzMCkg
YXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9jb25uX2hhbmRsZXIvY29ubmVjdGlv
bl9oYW5kbGVyX3Blcl90aHJlYWQuY2M6MzAyPC9kaXY+PGRpdj4jMTMgMHgwMDAwMDAwMDAyNGY5
MWI1IGluIHBmc19zcGF3bl90aHJlYWQgKGFyZz0weDZiZTJkMjApIGF0IC9ob21lL3lva3UwODI1
L215c3FsLTguMC4zNS9zdG9yYWdlL3BlcmZzY2hlbWEvcGZzLmNjOjMwNDI8L2Rpdj48ZGl2PiMx
NCAweDAwMDA3ZmVjZDRiMjhlYTUgaW4gc3RhcnRfdGhyZWFkIChhcmc9MHg3ZmVjYzA2NTc3MDAp
IGF0IHB0aHJlYWRfY3JlYXRlLmM6MzA3PC9kaXY+PGRpdj4jMTUgMHgwMDAwN2ZlY2QzMTQyYjBk
IGluIGNsb25lICgpIGF0IC4uL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3g4Nl82NC9jbG9uZS5T
OjExMTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gcGVyZm9y
bWFuY2Vfc2NoZW1hX3Nob3dfcHJvY2Vzc2xpc3Q9T05gIOOBq+OBl+OBnyBgU0hPVyBQUk9DRVNT
TElTVGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRpdj4oZ2RiKSBi
dDwvZGl2PjxkaXY+K2J0PC9kaXY+PGRpdj4jMCZuYnNwOyB0YWJsZV9wcm9jZXNzbGlzdDo6bWFr
ZV9yb3coUEZTX3RocmVhZCopICgpIGF0IC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9zdG9y
YWdlL3BlcmZzY2hlbWEvdGFibGVfcHJvY2Vzc2xpc3QuY2M6MTU3PC9kaXY+PGRpdj4jMSZuYnNw
OyAweDAwMDAwMDAwMDI0ZWY4NjEgaW4gcm5kX25leHQgKGJ1Zj0weDdmZWM3NDBiOTQ4MCAiXDM3
NyIsIHRoaXM9MHg3ZmVjNzQwYjdkZTApIGF0IC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9z
dG9yYWdlL3BlcmZzY2hlbWEvaGFfcGVyZnNjaGVtYS5jYzoxNzIyPC9kaXY+PGRpdj4jMiZuYnNw
OyBoYV9wZXJmc2NoZW1hOjpybmRfbmV4dCAodGhpcz0weDdmZWM3NDBiN2RlMCwgYnVmPTB4N2Zl
Yzc0MGI5NDgwICJcMzc3IikgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3N0b3JhZ2Uv
cGVyZnNjaGVtYS9oYV9wZXJmc2NoZW1hLmNjOjE3MTM8L2Rpdj48ZGl2PiMzJm5ic3A7IDB4MDAw
MDAwMDAwMTA0MGIyYyBpbiBoYW5kbGVyOjpoYV9ybmRfbmV4dCAodGhpcz0weDdmZWM3NDBiN2Rl
MCwgYnVmPTB4N2ZlYzc0MGI5NDgwICJcMzc3IikgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4w
LjM1L3NxbC9oYW5kbGVyLmNjOjI5NzE8L2Rpdj48ZGl2PiM0Jm5ic3A7IDB4MDAwMDAwMDAwMTE5
NDY3YiBpbiBUYWJsZVNjYW5JdGVyYXRvcjo6UmVhZCAodGhpcz0weDdmZWM3NDBjMzljMCkgYXQg
L2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9pdGVyYXRvcnMvcm93X2l0ZXJhdG9yLmg6
MjQ1PC9kaXY+PGRpdj4jNSZuYnNwOyAweDAwMDAwMDAwMDEzMDlmMTIgaW4gTWF0ZXJpYWxpemVJ
dGVyYXRvciZsdDtEdW1teUl0ZXJhdG9yUHJvZmlsZXImZ3Q7OjpNYXRlcmlhbGl6ZVF1ZXJ5Qmxv
Y2sgKHRoaXM9dGhpc0BlbnRyeT0weDdmZWM3NDBjM2FhMCwgcXVlcnlfYmxvY2s9PC9kaXY+PGRp
dj4mbmJzcDsgJm5ic3A7ICZuYnNwOyBQeXRob24gRXhjZXB0aW9uICZsdDtjbGFzcyAnZ2RiLmVy
cm9yJyZndDsgVGhlcmUgaXMgbm8gbWVtYmVyIG9yIG1ldGhvZCBuYW1lZCBfTV9oZWFkX2ltcGwu
OjwvZGl2PjxkaXY+QDB4N2ZlYzc0MGMzYTUwOiB7c3VicXVlcnlfaXRlcmF0b3IgPSAsIHNlbGVj
dF9udW1iZXIgPSAyLCBqb2luID0gMHg3ZmVjNzQwYzFmZTAsIGRpc2FibGVfZGVkdXBsaWNhdGlv
bl9ieV9oYXNoX2ZpZWxkID0gZmFsc2UsIGNvcHlfaXRlbXMgPSB0cnVlLCBtX3RvdGFsX29wZXJh
bmRzID0gMCwgbV9vcGVyYW5kX2lkeCA9IDAsIG1fZmlyc3RfZGlzdGluY3QgPSAwLCB0ZW1wX3Rh
YmxlX3BhcmFtID0gMHg3ZmVjNzQwYzIxNTAsIGlzX3JlY3Vyc2l2ZV9yZWZlcmVuY2UgPSBmYWxz
ZSwgcmVjdXJzaXZlX3JlYWRlciA9IDB4MH0sIHN0b3JlZF9yb3dzPXN0b3JlZF9yb3dzQGVudHJ5
PTB4N2ZlY2MwNjU0ODgwKTwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyBhdCAvb3B0L3JoL2RldnRv
b2xzZXQtMTEvcm9vdC91c3IvaW5jbHVkZS9jKysvMTEvYml0cy91bmlxdWVfcHRyLmg6NDIxPC9k
aXY+PGRpdj4jNiZuYnNwOyAweDAwMDAwMDAwMDEzMGFmMTMgaW4gTWF0ZXJpYWxpemVJdGVyYXRv
ciZsdDtEdW1teUl0ZXJhdG9yUHJvZmlsZXImZ3Q7OjpJbml0ICh0aGlzPTB4N2ZlYzc0MGMzYWEw
KSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL2l0ZXJhdG9ycy9jb21wb3NpdGVf
aXRlcmF0b3JzLmNjOjkyODwvZGl2PjxkaXY+IzcmbmJzcDsgMHgwMDAwMDAwMDAwZTlmNjVjIGlu
IFF1ZXJ5X2V4cHJlc3Npb246OkV4ZWN1dGVJdGVyYXRvclF1ZXJ5KFRIRCopICgpIGF0IC9vcHQv
cmgvZGV2dG9vbHNldC0xMS9yb290L3Vzci9pbmNsdWRlL2MrKy8xMS9iaXRzL3VuaXF1ZV9wdHIu
aDo0MjE8L2Rpdj48ZGl2PiM4Jm5ic3A7IDB4MDAwMDAwMDAwMGU5ZmE3YyBpbiBRdWVyeV9leHBy
ZXNzaW9uOjpleGVjdXRlKFRIRCopICgpIGF0IC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9z
cWwvc3FsX3VuaW9uLmNjOjE4MjM8L2Rpdj48ZGl2PiM5Jm5ic3A7IDB4MDAwMDAwMDAwMGUyMDBj
NCBpbiBTcWxfY21kX2RtbDo6ZXhlY3V0ZShUSEQqKSAoKSBhdCAvaG9tZS95b2t1MDgyNS9teXNx
bC04LjAuMzUvc3FsL3NxbF9zZWxlY3QuY2M6NzkzPC9kaXY+PGRpdj4jMTAgMHgwMDAwMDAwMDAw
ZGM2M2ExIGluIG15c3FsX2V4ZWN1dGVfY29tbWFuZChUSEQqLCBib29sKSAoKSBhdCAvaG9tZS95
b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF9wYXJzZS5jYzo0NzE5PC9kaXY+PGRpdj4jMTEg
MHgwMDAwMDAwMDAwZGNhMDMwIGluIGRpc3BhdGNoX3NxbF9jb21tYW5kKFRIRCosIFBhcnNlcl9z
dGF0ZSopICgpIGF0IC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9zcWwvc3FsX3BhcnNlLmNj
OjUzNjg8L2Rpdj48ZGl2PiMxMiAweDAwMDAwMDAwMDBkY2IzOWUgaW4gZGlzcGF0Y2hfY29tbWFu
ZChUSEQqLCBDT01fREFUQSBjb25zdCosIGVudW1fc2VydmVyX2NvbW1hbmQpICgpIGF0IC9ob21l
L3lva3UwODI1L215c3FsLTguMC4zNS9zcWwvc3FsX3BhcnNlLmNjOjIwNTQ8L2Rpdj48ZGl2PiMx
MyAweDAwMDAwMDAwMDBkY2Q3MjcgaW4gZG9fY29tbWFuZCAodGhkPXRoZEBlbnRyeT0weDdmZWM3
NDAwMGQyMCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfcGFyc2UuY2M6
MTQzOTwvZGl2PjxkaXY+IzE0IDB4MDAwMDAwMDAwMGYyNDUwMCBpbiBoYW5kbGVfY29ubmVjdGlv
biAoYXJnPWFyZ0BlbnRyeT0weDZjYzQ4MzApIGF0IC9ob21lL3lva3UwODI1L215c3FsLTguMC4z
NS9zcWwvY29ubl9oYW5kbGVyL2Nvbm5lY3Rpb25faGFuZGxlcl9wZXJfdGhyZWFkLmNjOjMwMjwv
ZGl2PjxkaXY+IzE1IDB4MDAwMDAwMDAwMjRmOTFiNSBpbiBwZnNfc3Bhd25fdGhyZWFkIChhcmc9
MHg2YmUyZDIwKSBhdCAvaG9tZS95b2t1MDgyNS9teXNxbC04LjAuMzUvc3RvcmFnZS9wZXJmc2No
ZW1hL3Bmcy5jYzozMDQyPC9kaXY+PGRpdj4jMTYgMHgwMDAwN2ZlY2Q0YjI4ZWE1IGluIHN0YXJ0
X3RocmVhZCAoYXJnPTB4N2ZlY2MwNjU3NzAwKSBhdCBwdGhyZWFkX2NyZWF0ZS5jOjMwNzwvZGl2
PjxkaXY+IzE3IDB4MDAwMDdmZWNkMzE0MmIwZCBpbiBjbG9uZSAoKSBhdCAuLi9zeXNkZXBzL3Vu
aXgvc3lzdi9saW51eC94ODZfNjQvY2xvbmUuUzoxMTE8L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+PGJyPjwvZGl2Pg=="></div></h1></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-36008369130451380472023-11-06T16:58:00.004+09:002023-11-06T16:59:42.917+09:00ソースビルドのmysqldでthdがgdbで掴めない (MINIMAL_RELWITHDEBINFO=ON)<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/3600836913045138047" markdown-here-wrapper-content-modified="true"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; margin: 1.3em 0px 1em; padding: 0px;"><ul style="font-size: medium; font-weight: 400; margin: 1.2em 0px; padding-left: 2em;"><li style="margin: 0.5em 0px;">8.0.29とそれ以降でソースビルドをしてる人だけだと思う</li><li style="margin: 0.5em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">cmake</code> する時に <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">-DMINIMAL_RELWITHDEBINFO=OFF</code> する</li></ul><hr style="font-size: medium; font-weight: 400;" /><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">gdbでmysqldにアタッチした時に色々見つからなくて困った。thdとか全然見えない。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ gdb -p $(pidof mysqld)
(gdb) b PT_show_processlist::make_cmd
+b PT_show_processlist::make_cmd
Breakpoint 1 at 0x122eaec: file /home/yoku0825/mysql-8.0.35/sql/parse_tree_nodes.cc, line 2722.
(gdb) c
+c
Continuing.
[Switching to Thread 0x7fe5dc2e9700 (LWP 13041)]
Breakpoint 1, PT_show_processlist::make_cmd () at /home/yoku0825/mysql-8.0.35/sql/parse_tree_nodes.cc:2722
2722 lex->sql_command = m_sql_command;
(gdb) n
+n
2725 bool use_pfs = pfs_processlist_enabled;
(gdb) n
+n
2727 m_sql_cmd.set_use_pfs(use_pfs);
(gdb) p use_pfs
+p use_pfs
No symbol "use_pfs" in current context.
(gdb) n
+n
2728 if (use_pfs) {
(gdb) p use_pfs
+p use_pfs
No symbol "use_pfs" in current context.
(gdb) n
+n
2729 if (build_processlist_query(m_pos, thd, m_sql_cmd.verbose()))
(gdb) n
+n
2733 return &m_sql_cmd;
(gdb) p m_sql_cmd
+p m_sql_cmd
No symbol "m_sql_cmd" in current context.
(gdb) p thd->s m_sql_cmd
+p thd->m_sql_cmd
No symbol "thd" in current context.
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">おかしいなあと思ってたけど、何気なく <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">cmake3 -LA | grep -i relwith</code> ってやったら <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space-collapse: preserve;">MINIMAL_RELWITHDEBINFO</code> なんていかにも怪しいオプションがONになっているのを見つけた。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ cmake3 -LA | grep -i relwith
..
CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
MINIMAL_RELWITHDEBINFO:BOOL=ON
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">OFFにしてコンパイルし直す。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ cmake3 -DMINIMAL_RELWITHDEBINFO=OFF .
$ make
</code></pre><p style="font-size: medium; font-weight: 400; margin: 0px 0px 1.2em !important;">見えるようになった。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; font-weight: 400; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">(gdb) b PT_show_processlist::make_cmd
+b PT_show_processlist::make_cmd
Breakpoint 1 at 0x122eaf9: file /home/yoku0825/mysql-8.0.35/sql/parse_tree_nodes.cc, line 2725.
(gdb) c
+c
Continuing.
[Switching to Thread 0x7fce486f6700 (LWP 29941)]
Breakpoint 1, PT_show_processlist::make_cmd (this=0x7fce0c00b000, thd=0x7fce0c010580) at /home/yoku0825/mysql-8.0.35/sql/parse_tree_nodes.cc:2725
2725 bool use_pfs = pfs_processlist_enabled;
(gdb) bt
+bt
#0 PT_show_processlist::make_cmd (this=0x7fce0c00b000, thd=0x7fce0c010580) at /home/yoku0825/mysql-8.0.35/sql/parse_tree_nodes.cc:2725
#1 0x0000000000d9c5a7 in LEX::make_sql_cmd (this=0x7fce0c013990, parse_tree=<optimized out>) at /home/yoku0825/mysql-8.0.35/sql/sql_lex.cc:4949
#2 0x0000000000d3618a in THD::sql_parser (this=this@entry=0x7fce0c010580) at /home/yoku0825/mysql-8.0.35/sql/sql_class.cc:3066
#3 0x0000000000dc50b5 in parse_sql (thd=thd@entry=0x7fce0c010580, parser_state=parser_state@entry=0x7fce486f4ae0, creation_ctx=creation_ctx@entry=0x0) at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:7132
#4 0x0000000000dc9d5d in dispatch_sql_command(THD*, Parser_state*) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:5265
#5 0x0000000000dcb39e in dispatch_command(THD*, COM_DATA const*, enum_server_command) () at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:2054
#6 0x0000000000dcd727 in do_command (thd=thd@entry=0x7fce0c010580) at /home/yoku0825/mysql-8.0.35/sql/sql_parse.cc:1439
#7 0x0000000000f24500 in handle_connection (arg=arg@entry=0x73d11f0) at /home/yoku0825/mysql-8.0.35/sql/conn_handler/connection_handler_per_thread.cc:302
#8 0x00000000024f91b5 in pfs_spawn_thread (arg=0x74b0b10) at /home/yoku0825/mysql-8.0.35/storage/perfschema/pfs.cc:3042
#9 0x00007fce78163ea5 in start_thread () from /lib64/libpthread.so.0
#10 0x00007fce7677db0d in clone () from /lib64/libc.so.6
(gdb) p use_pfs
+p use_pfs
$1 = <optimized out>
(gdb) p thd
+p thd
$2 = (THD *) 0x7fce0c010580
</code></pre><div style="font-size: 0em; font-weight: 400; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PHA+Jm5ic3A7IyBUTDtEUjwvcD48cD4tIDguMC4yOeOBqOOBneOCjOS7pemZjeOBp+OCveODvOOC
ueODk+ODq+ODieOCkuOBl+OBpuOCi+S6uuOBoOOBkeOBoOOBqOaAneOBhjwvcD48cD4tIGBjbWFr
ZWAg44GZ44KL5pmC44GrIGAtRE1JTklNQUxfUkVMV0lUSERFQklORk89T0ZGYCDjgZnjgos8L3A+
PHA+LS0tLTwvcD48cD48YnI+PC9wPjxwPmdkYuOBp215c3FsZOOBq+OCouOCv+ODg+ODgeOBl+OB
n+aZguOBq+iJsuOAheimi+OBpOOBi+OCieOBquOBj+OBpuWbsOOBo+OBn+OAgnRoZOOBqOOBi+WF
qOeEtuimi+OBiOOBquOBhOOAgjwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD4kIGdkYiAtcCAk
KHBpZG9mIG15c3FsZCk8L3A+PHA+KGdkYikgYiBQVF9zaG93X3Byb2Nlc3NsaXN0OjptYWtlX2Nt
ZDwvcD48cD4rYiBQVF9zaG93X3Byb2Nlc3NsaXN0OjptYWtlX2NtZDwvcD48cD5CcmVha3BvaW50
IDEgYXQgMHgxMjJlYWVjOiBmaWxlIC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9zcWwvcGFy
c2VfdHJlZV9ub2Rlcy5jYywgbGluZSAyNzIyLjwvcD48cD4oZ2RiKSBjPC9wPjxwPitjPC9wPjxw
PkNvbnRpbnVpbmcuPC9wPjxkaXY+PGRpdj5bU3dpdGNoaW5nIHRvIFRocmVhZCAweDdmZTVkYzJl
OTcwMCAoTFdQIDEzMDQxKV08L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PkJyZWFrcG9pbnQgMSwg
UFRfc2hvd19wcm9jZXNzbGlzdDo6bWFrZV9jbWQgKCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwt
OC4wLjM1L3NxbC9wYXJzZV90cmVlX25vZGVzLmNjOjI3MjI8L2Rpdj48ZGl2PjI3MjImbmJzcDsg
bGV4LSZndDtzcWxfY29tbWFuZCA9IG1fc3FsX2NvbW1hbmQ7PC9kaXY+PGRpdj4oZ2RiKSBuPC9k
aXY+PGRpdj4rbjwvZGl2PjxkaXY+MjcyNSZuYnNwOyBib29sIHVzZV9wZnMgPSBwZnNfcHJvY2Vz
c2xpc3RfZW5hYmxlZDs8L2Rpdj48ZGl2PihnZGIpIG48L2Rpdj48ZGl2PituPC9kaXY+PGRpdj4y
NzI3Jm5ic3A7IG1fc3FsX2NtZC5zZXRfdXNlX3Bmcyh1c2VfcGZzKTs8L2Rpdj48ZGl2PihnZGIp
IHAgdXNlX3BmczwvZGl2PjxkaXY+K3AgdXNlX3BmczwvZGl2PjxkaXY+Tm8gc3ltYm9sICJ1c2Vf
cGZzIiBpbiBjdXJyZW50IGNvbnRleHQuPC9kaXY+PGRpdj4oZ2RiKSBuPC9kaXY+PGRpdj4rbjwv
ZGl2PjxkaXY+MjcyOCZuYnNwOyBpZiAodXNlX3BmcykgezwvZGl2PjxkaXY+KGdkYikgcCB1c2Vf
cGZzPC9kaXY+PGRpdj4rcCB1c2VfcGZzPC9kaXY+PGRpdj5ObyBzeW1ib2wgInVzZV9wZnMiIGlu
IGN1cnJlbnQgY29udGV4dC48L2Rpdj48ZGl2PihnZGIpIG48L2Rpdj48ZGl2PituPC9kaXY+PGRp
dj4yNzI5Jm5ic3A7ICZuYnNwOyBpZiAoYnVpbGRfcHJvY2Vzc2xpc3RfcXVlcnkobV9wb3MsIHRo
ZCwgbV9zcWxfY21kLnZlcmJvc2UoKSkpPC9kaXY+PGRpdj4oZ2RiKSBuPC9kaXY+PGRpdj4rbjwv
ZGl2PjxkaXY+MjczMyZuYnNwOyByZXR1cm4gJmFtcDttX3NxbF9jbWQ7PC9kaXY+PGRpdj4oZ2Ri
KSBwIG1fc3FsX2NtZDwvZGl2PjxkaXY+K3AgbV9zcWxfY21kPC9kaXY+PGRpdj5ObyBzeW1ib2wg
Im1fc3FsX2NtZCIgaW4gY3VycmVudCBjb250ZXh0LjwvZGl2PjxkaXY+KGdkYikgcCB0aGQtJmd0
O3MgbV9zcWxfY21kPC9kaXY+PGRpdj4rcCB0aGQtJmd0O21fc3FsX2NtZDwvZGl2PjxkaXY+Tm8g
c3ltYm9sICJ0aGQiIGluIGN1cnJlbnQgY29udGV4dC48L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+44GK44GL44GX44GE44Gq44GC44Go5oCd44Gj44Gm44Gf44GR
44Gp44CB5L2V5rCX44Gq44GPIGBjbWFrZTMgLUxBIHwgZ3JlcCAtaSByZWx3aXRoYCDjgaPjgabj
goTjgaPjgZ/jgokgYE1JTklNQUxfUkVMV0lUSERFQklORk9gIOOBquOCk+OBpuOBhOOBi+OBq+OC
guaAquOBl+OBhOOCquODl+OCt+ODp+ODs+OBjE9O44Gr44Gq44Gj44Gm44GE44KL44Gu44KS6KaL
44Gk44GR44Gf44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PiQgY21h
a2UzIC1MQSB8IGdyZXAgLWkgcmVsd2l0aDwvZGl2PjxkaXY+Li48L2Rpdj48ZGl2PjxkaXY+Q01B
S0VfQVNNX0ZMQUdTX1JFTFdJVEhERUJJTkZPOlNUUklORz0tTzIgLWcgLUROREVCVUc8L2Rpdj48
ZGl2PkNNQUtFX0JVSUxEX1RZUEU6U1RSSU5HPVJlbFdpdGhEZWJJbmZvPC9kaXY+PGRpdj5DTUFL
RV9DWFhfRkxBR1NfUkVMV0lUSERFQklORk86U1RSSU5HPS1PMiAtZyAtRE5ERUJVRzwvZGl2Pjxk
aXY+Q01BS0VfQ19GTEFHU19SRUxXSVRIREVCSU5GTzpTVFJJTkc9LU8yIC1nIC1ETkRFQlVHPC9k
aXY+PGRpdj5DTUFLRV9FWEVfTElOS0VSX0ZMQUdTX1JFTFdJVEhERUJJTkZPOlNUUklORz08L2Rp
dj48ZGl2PkNNQUtFX01PRFVMRV9MSU5LRVJfRkxBR1NfUkVMV0lUSERFQklORk86U1RSSU5HPTwv
ZGl2PjxkaXY+Q01BS0VfU0hBUkVEX0xJTktFUl9GTEFHU19SRUxXSVRIREVCSU5GTzpTVFJJTkc9
PC9kaXY+PGRpdj5DTUFLRV9TVEFUSUNfTElOS0VSX0ZMQUdTX1JFTFdJVEhERUJJTkZPOlNUUklO
Rz08L2Rpdj48ZGl2Pk1JTklNQUxfUkVMV0lUSERFQklORk86Qk9PTD1PTjwvZGl2PjwvZGl2Pjxk
aXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5PRkbjgavjgZfj
gabjgrPjg7Pjg5HjgqTjg6vjgZfnm7TjgZnjgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBg
YDwvZGl2PjxkaXY+JCBjbWFrZTMgLURNSU5JTUFMX1JFTFdJVEhERUJJTkZPPU9GRiAuPC9kaXY+
PGRpdj4kIG1ha2U8L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+6KaL44GI
44KL44KI44GG44Gr44Gq44Gj44Gf44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+KGdkYikgYiBQVF9zaG93X3Byb2Nlc3NsaXN0Ojpt
YWtlX2NtZDwvZGl2PjxkaXY+K2IgUFRfc2hvd19wcm9jZXNzbGlzdDo6bWFrZV9jbWQ8L2Rpdj48
ZGl2PkJyZWFrcG9pbnQgMSBhdCAweDEyMmVhZjk6IGZpbGUgL2hvbWUveW9rdTA4MjUvbXlzcWwt
OC4wLjM1L3NxbC9wYXJzZV90cmVlX25vZGVzLmNjLCBsaW5lIDI3MjUuPC9kaXY+PGRpdj4oZ2Ri
KSBjPC9kaXY+PGRpdj4rYzwvZGl2PjxkaXY+Q29udGludWluZy48L2Rpdj48ZGl2PltTd2l0Y2hp
bmcgdG8gVGhyZWFkIDB4N2ZjZTQ4NmY2NzAwIChMV1AgMjk5NDEpXTwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+QnJlYWtwb2ludCAxLCBQVF9zaG93X3Byb2Nlc3NsaXN0OjptYWtlX2NtZCAodGhp
cz0weDdmY2UwYzAwYjAwMCwgdGhkPTB4N2ZjZTBjMDEwNTgwKSBhdCAvaG9tZS95b2t1MDgyNS9t
eXNxbC04LjAuMzUvc3FsL3BhcnNlX3RyZWVfbm9kZXMuY2M6MjcyNTwvZGl2PjxkaXY+MjcyNSZu
YnNwOyAmbmJzcDsgJm5ic3A7IGJvb2wgdXNlX3BmcyA9IHBmc19wcm9jZXNzbGlzdF9lbmFibGVk
OzwvZGl2PjxkaXY+KGdkYikgYnQ8L2Rpdj48ZGl2PitidDwvZGl2PjxkaXY+IzAmbmJzcDsgUFRf
c2hvd19wcm9jZXNzbGlzdDo6bWFrZV9jbWQgKHRoaXM9MHg3ZmNlMGMwMGIwMDAsIHRoZD0weDdm
Y2UwYzAxMDU4MCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9wYXJzZV90cmVl
X25vZGVzLmNjOjI3MjU8L2Rpdj48ZGl2PiMxJm5ic3A7IDB4MDAwMDAwMDAwMGQ5YzVhNyBpbiBM
RVg6Om1ha2Vfc3FsX2NtZCAodGhpcz0weDdmY2UwYzAxMzk5MCwgcGFyc2VfdHJlZT0mbHQ7b3B0
aW1pemVkIG91dCZndDspIGF0IC9ob21lL3lva3UwODI1L215c3FsLTguMC4zNS9zcWwvc3FsX2xl
eC5jYzo0OTQ5PC9kaXY+PGRpdj4jMiZuYnNwOyAweDAwMDAwMDAwMDBkMzYxOGEgaW4gVEhEOjpz
cWxfcGFyc2VyICh0aGlzPXRoaXNAZW50cnk9MHg3ZmNlMGMwMTA1ODApIGF0IC9ob21lL3lva3Uw
ODI1L215c3FsLTguMC4zNS9zcWwvc3FsX2NsYXNzLmNjOjMwNjY8L2Rpdj48ZGl2PiMzJm5ic3A7
IDB4MDAwMDAwMDAwMGRjNTBiNSBpbiBwYXJzZV9zcWwgKHRoZD10aGRAZW50cnk9MHg3ZmNlMGMw
MTA1ODAsIHBhcnNlcl9zdGF0ZT1wYXJzZXJfc3RhdGVAZW50cnk9MHg3ZmNlNDg2ZjRhZTAsIGNy
ZWF0aW9uX2N0eD1jcmVhdGlvbl9jdHhAZW50cnk9MHgwKSBhdCAvaG9tZS95b2t1MDgyNS9teXNx
bC04LjAuMzUvc3FsL3NxbF9wYXJzZS5jYzo3MTMyPC9kaXY+PGRpdj4jNCZuYnNwOyAweDAwMDAw
MDAwMDBkYzlkNWQgaW4gZGlzcGF0Y2hfc3FsX2NvbW1hbmQoVEhEKiwgUGFyc2VyX3N0YXRlKikg
KCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfcGFyc2UuY2M6NTI2NTwv
ZGl2PjxkaXY+IzUmbmJzcDsgMHgwMDAwMDAwMDAwZGNiMzllIGluIGRpc3BhdGNoX2NvbW1hbmQo
VEhEKiwgQ09NX0RBVEEgY29uc3QqLCBlbnVtX3NlcnZlcl9jb21tYW5kKSAoKSBhdCAvaG9tZS95
b2t1MDgyNS9teXNxbC04LjAuMzUvc3FsL3NxbF9wYXJzZS5jYzoyMDU0PC9kaXY+PGRpdj4jNiZu
YnNwOyAweDAwMDAwMDAwMDBkY2Q3MjcgaW4gZG9fY29tbWFuZCAodGhkPXRoZEBlbnRyeT0weDdm
Y2UwYzAxMDU4MCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3NxbC9zcWxfcGFyc2Uu
Y2M6MTQzOTwvZGl2PjxkaXY+IzcmbmJzcDsgMHgwMDAwMDAwMDAwZjI0NTAwIGluIGhhbmRsZV9j
b25uZWN0aW9uIChhcmc9YXJnQGVudHJ5PTB4NzNkMTFmMCkgYXQgL2hvbWUveW9rdTA4MjUvbXlz
cWwtOC4wLjM1L3NxbC9jb25uX2hhbmRsZXIvY29ubmVjdGlvbl9oYW5kbGVyX3Blcl90aHJlYWQu
Y2M6MzAyPC9kaXY+PGRpdj4jOCZuYnNwOyAweDAwMDAwMDAwMDI0ZjkxYjUgaW4gcGZzX3NwYXdu
X3RocmVhZCAoYXJnPTB4NzRiMGIxMCkgYXQgL2hvbWUveW9rdTA4MjUvbXlzcWwtOC4wLjM1L3N0
b3JhZ2UvcGVyZnNjaGVtYS9wZnMuY2M6MzA0MjwvZGl2PjxkaXY+IzkmbmJzcDsgMHgwMDAwN2Zj
ZTc4MTYzZWE1IGluIHN0YXJ0X3RocmVhZCAoKSBmcm9tIC9saWI2NC9saWJwdGhyZWFkLnNvLjA8
L2Rpdj48ZGl2PiMxMCAweDAwMDA3ZmNlNzY3N2RiMGQgaW4gY2xvbmUgKCkgZnJvbSAvbGliNjQv
bGliYy5zby42PC9kaXY+PGRpdj4oZ2RiKSBwIHVzZV9wZnM8L2Rpdj48ZGl2PitwIHVzZV9wZnM8
L2Rpdj48ZGl2PiQxID0gJmx0O29wdGltaXplZCBvdXQmZ3Q7PC9kaXY+PGRpdj4oZ2RiKSBwIHRo
ZDwvZGl2PjxkaXY+K3AgdGhkPC9kaXY+PGRpdj4kMiA9IChUSEQgKikgMHg3ZmNlMGMwMTA1ODA8
L2Rpdj48L2Rpdj48ZGl2PmBgYDwvZGl2Pg=="></div></h1></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-77203647667416921252023-10-30T14:33:00.005+09:002023-10-30T14:33:28.847+09:00MySQLの user@'%' にまつわる謎仕様<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/7720364766741692125" markdown-here-wrapper-content-modified="true"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;">昔から <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">user@'%'</code> と <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">user@'xxx'</code> の <strong>両方があって</strong> <strong>認証が ‘xxx’ の方で行われた場合</strong> 、そのセッションは <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">user@'%'</code> と <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">user@'xxx'</code> の両方の権限を持つ謎仕様があった</li>
<li style="margin: 0.5em 0px;">MySQL 8.2.0のリリースノートにある <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">In addition, the treatment of %by the server as a synonym for localhost when checking privileges (that is, privileges granted to 'myuser'@'%' are also granted to 'myuser'@'localhost') is now also deprecated as of MySQL 8.2.0 and thus also subject to removal in a future version of MySQL. (WL #14280, WL #15676)</code> はこれを指しているような気がする<ul style="margin: 0px; margin: 1.2em 0px; padding-left: 1em; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/relnotes/mysql/8.2/en/news-8-2-0.html">MySQL :: MySQL 8.2 Release Notes :: Changes in MySQL 8.2.0 (2023-10-25, Innovation Release)</a></li>
<li style="margin: 0.5em 0px;">deprecatedって言われてるけど警告も出ず、少なくとも8.2.0現在この動作のまま</li>
</ul>
</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">yoku0825@'%'</code> と <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">yoku0825@192.168.122.1</code> で比較してみる。<br /><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">yoku0825@'%'</code> アカウントには <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">percent</code> スキーマに(だけ)、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">yoku0825@192.168.122.1</code> アカウントには <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">ipaddr</code> スキーマに(だけ) 権限を足す。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql82 9> CREATE USER yoku0825@'%';
Query OK, 0 rows affected (0.01 sec)
mysql82 9> CREATE USER yoku0825@192.168.122.1;
Query OK, 0 rows affected (0.00 sec)
mysql82 9> GRANT ALL ON percent.* TO yoku0825@'%';
Query OK, 0 rows affected (0.01 sec)
mysql82 9> GRANT ALL ON ipaddr.* TO yoku0825@192.168.122.1;
Query OK, 0 rows affected (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">192.168.122.1の方のアカウントを使うようにログインする。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ mysql82 -h192.168.122.1 -uyoku0825
mysql82 12> SHOW GRANTS;
+------------------------------------------------------------------+
| Grants for yoku0825@192.168.122.1 |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `yoku0825`@`192.168.122.1` |
| GRANT ALL PRIVILEGES ON `ipaddr`.* TO `yoku0825`@`192.168.122.1` |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">見た目上は192.168.122.1を使っていて、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">ipaddr</code> スキーマにしか権限はない。ところがどっこい</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql82 12> CREATE DATABASE percent;
Query OK, 1 row affected (0.01 sec)
mysql82 12> CREATE TABLE percent.t1 (num INT);
Query OK, 0 rows affected (0.03 sec)
mysql82 12> DROP DATABASE percent;
Query OK, 1 row affected (0.02 sec)
mysql82 12> SHOW GRANTS;
+------------------------------------------------------------------+
| Grants for yoku0825@192.168.122.1 |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `yoku0825`@`192.168.122.1` |
| GRANT ALL PRIVILEGES ON `ipaddr`.* TO `yoku0825`@`192.168.122.1` |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">percent</code> スキーマにALL相当の権限が当たっている。 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">SHOW GRANTS</code> は何も表示しない。</p>
<p style="margin: 0px 0px 1.2em !important;">ちなみにこれ <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">yoku0825@127.0.0.1</code> (= 存在しないので ‘%’の方のアカウント ) を使おうとすると</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ mysql82 -h127.0.0.1 -uyoku0825
mysql82 13> SHOW GRANTS;
+-------------------------------------------------------+
| Grants for yoku0825@% |
+-------------------------------------------------------+
| GRANT USAGE ON *.* TO `yoku0825`@`%` |
| GRANT ALL PRIVILEGES ON `percent`.* TO `yoku0825`@`%` |
+-------------------------------------------------------+
2 rows in set (0.00 sec)
mysql82 13> CREATE DATABASE ipaddr;
ERROR 1044 (42000): Access denied for user 'yoku0825'@'%' to database 'ipaddr'
</code></pre><p style="margin: 0px 0px 1.2em !important;">想像した通り ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">yoku0825@'%'</code> と <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">yoku0825@192.168.122.1</code> は別人として ) 扱われる。<br />ホスト部分が <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">192.168.%</code> みたいなやつとどう干渉するのかは試していない。</p>
<p style="margin: 0px 0px 1.2em !important;">で、これがなくなるのかしら。。</p><p style="margin: 0px 0px 1.2em !important;"><br /></p><p style="margin: 0px 0px 1.2em !important;">前にsh2さんがレポートしてたよなって思ったら俺も登場していた。</p><p style="margin: 0px 0px 1.2em !important;"><a href="https://bugs.mysql.com/bug.php?id=68436" target="_blank">MySQL Bugs: #68436: user@127.0.0.1 is authorized partly as user@localhost.</a></p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+Jm5ic3A7IyBUTDtEUjwvcD48cD4tIOaYlOOBi+OCiSBgdXNlckAnJSdgIOOBqCBgdXNlckAn
eHh4J2Ag44GuICoq5Lih5pa544GM44GC44Gj44GmKiogKiroqo3oqLzjgYwgJ3h4eCcg44Gu5pa5
44Gn6KGM44KP44KM44Gf5aC05ZCIKiog44CB44Gd44Gu44K744OD44K344On44Oz44GvIGB1c2Vy
QCclJ2Ag44GoIGB1c2VyQCd4eHgnYCDjga7kuKHmlrnjga7mqKnpmZDjgpLmjIHjgaTorI7ku5Xm
p5jjgYzjgYLjgaPjgZ88L3A+PHA+LSBNeVNRTCA4LjIuMOOBruODquODquODvOOCueODjuODvOOD
iOOBq+OBguOCiyBgSW4gYWRkaXRpb24sIHRoZSB0cmVhdG1lbnQgb2YgJWJ5IHRoZSBzZXJ2ZXIg
YXMgYSBzeW5vbnltIGZvciBsb2NhbGhvc3Qgd2hlbiBjaGVja2luZyBwcml2aWxlZ2VzICh0aGF0
IGlzLCBwcml2aWxlZ2VzIGdyYW50ZWQgdG8gJ215dXNlcidAJyUnIGFyZSBhbHNvIGdyYW50ZWQg
dG8gJ215dXNlcidAJ2xvY2FsaG9zdCcpIGlzIG5vdyBhbHNvIGRlcHJlY2F0ZWQgYXMgb2YgTXlT
UUwgOC4yLjAgYW5kIHRodXMgYWxzbyBzdWJqZWN0IHRvIHJlbW92YWwgaW4gYSBmdXR1cmUgdmVy
c2lvbiBvZiBNeVNRTC4gKFdMICMxNDI4MCwgV0wgIzE1Njc2KWAg44Gv44GT44KM44KS5oyH44GX
44Gm44GE44KL44KI44GG44Gq5rCX44GM44GZ44KLPC9wPjxwPiZuYnNwOyAtJm5ic3A7W015U1FM
IDo6IE15U1FMIDhcLjIgUmVsZWFzZSBOb3RlcyA6OiBDaGFuZ2VzIGluIE15U1FMIDhcLjJcLjAg
XCgyMDIzXC0xMFwtMjUsIElubm92YXRpb24gUmVsZWFzZVwpXShodHRwczovL2Rldi5teXNxbC5j
b20vZG9jL3JlbG5vdGVzL215c3FsLzguMi9lbi9uZXdzLTgtMi0wLmh0bWwpPC9wPjxwPiZuYnNw
OyAtIGRlcHJlY2F0ZWTjgaPjgaboqIDjgo/jgozjgabjgovjgZHjganorablkYrjgoLlh7rjgZrj
gIHlsJHjgarjgY/jgajjgoI4LjIuMOePvuWcqOOBk+OBruWLleS9nOOBruOBvuOBvjwvcD48cD48
YnI+PC9wPjxwPi0tLS08L3A+PHA+PGJyPjwvcD48cD5geW9rdTA4MjVAJyUnYCDjgaggYHlva3Uw
ODI1QDE5Mi4xNjguMTIyLjFgIOOBp+avlOi8g+OBl+OBpuOBv+OCi+OAgjwvcD48cD5geW9rdTA4
MjVAJyUnYCDjgqLjgqvjgqbjg7Pjg4jjgavjga8gYHBlcmNlbnRgIOOCueOCreODvOODnuOBqyjj
gaDjgZEp44CBIGB5b2t1MDgyNUAxOTIuMTY4LjEyMi4xYCDjgqLjgqvjgqbjg7Pjg4jjgavjga8g
YGlwYWRkcmAg44K544Kt44O844Oe44GrKOOBoOOBkSkg5qip6ZmQ44KS6Laz44GZ44CCPC9wPjxw
Pjxicj48L3A+PHA+YGBgPC9wPjxwPm15c3FsODIgOSZndDsgQ1JFQVRFIFVTRVIgeW9rdTA4MjVA
JyUnOzwvcD48cD5RdWVyeSBPSywgMCByb3dzIGFmZmVjdGVkICgwLjAxIHNlYyk8L3A+PHA+PGJy
PjwvcD48cD5teXNxbDgyIDkmZ3Q7IENSRUFURSBVU0VSIHlva3UwODI1QDE5Mi4xNjguMTIyLjE7
PC9wPjxwPlF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDAgc2VjKTwvcD48cD48YnI+PC9w
PjxwPm15c3FsODIgOSZndDsgR1JBTlQgQUxMIE9OIHBlcmNlbnQuKiBUTyB5b2t1MDgyNUAnJSc7
PC9wPjxwPlF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDEgc2VjKTwvcD48cD48YnI+PC9w
PjxwPm15c3FsODIgOSZndDsgR1JBTlQgQUxMIE9OIGlwYWRkci4qIFRPIHlva3UwODI1QDE5Mi4x
NjguMTIyLjE7PC9wPjxwPlF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDEgc2VjKTwvcD48
ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+MTkyLjE2OC4xMjIuMeOBruaWueOBruOC
ouOCq+OCpuODs+ODiOOCkuS9v+OBhuOCiOOBhuOBq+ODreOCsOOCpOODs+OBmeOCi+OAgjwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj4kIG15c3FsODIgLWgxOTIuMTY4LjEy
Mi4xIC11eW9rdTA4MjU8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MiAxMiZn
dDsgU0hPVyBHUkFOVFM7PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+fCBHcmFudHMg
Zm9yIHlva3UwODI1QDE5Mi4xNjguMTIyLjEmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2
PnwgR1JBTlQgVVNBR0UgT04gKi4qIFRPIGB5b2t1MDgyNWBAYDE5Mi4xNjguMTIyLjFgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
PC9kaXY+PGRpdj58IEdSQU5UIEFMTCBQUklWSUxFR0VTIE9OIGBpcGFkZHJgLiogVE8gYHlva3Uw
ODI1YEBgMTkyLjE2OC4xMjIuMWAgfDwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PjIg
cm93cyBpbiBzZXQgKDAuMDAgc2VjKTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+
PC9kaXY+PGRpdj7opovjgZ/nm67kuIrjga8xOTIuMTY4LjEyMi4x44KS5L2/44Gj44Gm44GE44Gm
44CBIGBpcGFkZHJgIOOCueOCreODvOODnuOBq+OBl+OBi+aoqemZkOOBr+OBquOBhOOAguOBqOOB
k+OCjeOBjOOBqeOBo+OBk+OBhDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+YGBgPC9kaXY+PGRpdj48ZGl2Pm15c3FsODIgMTImZ3Q7IENSRUFURSBEQVRBQkFTRSBwZXJj
ZW50OzwvZGl2PjxkaXY+UXVlcnkgT0ssIDEgcm93IGFmZmVjdGVkICgwLjAxIHNlYyk8L2Rpdj48
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MiAxMiZndDsgQ1JFQVRFIFRBQkxF
IHBlcmNlbnQudDEgKG51bSBJTlQpOzwvZGl2PjxkaXY+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3Rl
ZCAoMC4wMyBzZWMpPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODIgMTImZ3Q7
IERST1AgREFUQUJBU0UgcGVyY2VudDs8L2Rpdj48ZGl2PlF1ZXJ5IE9LLCAxIHJvdyBhZmZlY3Rl
ZCAoMC4wMiBzZWMpPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5teXNxbDgyIDEyJmd0
OyBTSE9XIEdSQU5UUzs8L2Rpdj48ZGl2PistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IEdyYW50cyBm
b3IgeW9rdTA4MjVAMTkyLjE2OC4xMjIuMSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+
fCBHUkFOVCBVU0FHRSBPTiAqLiogVE8gYHlva3UwODI1YEBgMTkyLjE2OC4xMjIuMWAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8
L2Rpdj48ZGl2PnwgR1JBTlQgQUxMIFBSSVZJTEVHRVMgT04gYGlwYWRkcmAuKiBUTyBgeW9rdTA4
MjVgQGAxOTIuMTY4LjEyMi4xYCB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+MiBy
b3dzIGluIHNldCAoMC4wMCBzZWMpPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48
L2Rpdj48ZGl2PmBwZXJjZW50YCDjgrnjgq3jg7zjg57jgatBTEznm7jlvZPjga7mqKnpmZDjgYzl
vZPjgZ/jgaPjgabjgYTjgovjgIIgYFNIT1cgR1JBTlRTYCDjga/kvZXjgoLooajnpLrjgZfjgarj
gYTjgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuOBoeOBquOBv+OBq+OBk+OCjCBgeW9rdTA4
MjVAMTI3LjAuMC4xYCAoPSDlrZjlnKjjgZfjgarjgYTjga7jgacgJyUn44Gu5pa544Gu44Ki44Kr
44Km44Oz44OIICkg44KS5L2/44GK44GG44Go44GZ44KL44GoPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5gYGA8L2Rpdj48ZGl2PiQgbXlzcWw4MiAtaDEyNy4wLjAuMSAtdXlva3UwODI1PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pm15c3FsODIgMTMmZ3Q7IFNIT1cgR1JBTlRTOzwvZGl2
PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rPC9kaXY+PGRpdj58IEdyYW50cyBmb3IgeW9rdTA4MjVAJSZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9kaXY+PGRpdj4r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8
L2Rpdj48ZGl2PnwgR1JBTlQgVVNBR0UgT04gKi4qIFRPIGB5b2t1MDgyNWBAYCVgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDwv
ZGl2PjxkaXY+fCBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBgcGVyY2VudGAuKiBUTyBgeW9rdTA4
MjVgQGAlYCB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PjIgcm93cyBpbiBzZXQgKDAuMDAgc2VjKTwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bXlzcWw4MiAxMyZndDsgQ1JFQVRFIERBVEFCQVNFIGlw
YWRkcjs8L2Rpdj48ZGl2PkVSUk9SIDEwNDQgKDQyMDAwKTogQWNjZXNzIGRlbmllZCBmb3IgdXNl
ciAneW9rdTA4MjUnQCclJyB0byBkYXRhYmFzZSAnaXBhZGRyJzwvZGl2PjwvZGl2PjxkaXY+YGBg
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7mg7Plg4/jgZfjgZ/pgJrjgoogKCBgeW9rdTA4MjVA
JyUnYCDjgaggYHlva3UwODI1QDE5Mi4xNjguMTIyLjFgIOOBr+WIpeS6uuOBqOOBl+OBpiApIOaJ
seOCj+OCjOOCi+OAgjwvZGl2PjxkaXY+44Ob44K544OI6YOo5YiG44GMIGAxOTIuMTY4LiVgIOOB
v+OBn+OBhOOBquOChOOBpOOBqOOBqeOBhuW5sua4ieOBmeOCi+OBruOBi+OBr+ippuOBl+OBpuOB
hOOBquOBhOOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44Gn44CB44GT44KM44GM44Gq44GP
44Gq44KL44Gu44GL44GX44KJ44CCPC9kaXY+"></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-58771765006693454612023-08-01T02:01:00.006+09:002023-08-01T02:01:51.347+09:00gtid_mode=OFFの移行元MySQLからGroupReplicationにマイグレーションするはなし<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/5877176500669345461" markdown-here-wrapper-content-modified="true"><ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;">origin側はgtid_mode=OFF, binlog_format=MIXEDでこれを変えてはいけない</li>
<li style="margin: 0.5em 0px;">MySQLはこのケースに限り <a href="https://speakerdeck.com/line_developers/mysql80-which-we-choose" target="_blank">8.0.28</a> 以外でも良い</li>
<li style="margin: 0.5em 0px;">メンテナンスには入れられる。ただし、メンテナンスウィンドウ内でMyDumperをかけられるほどデータは小さくない</li>
<li style="margin: 0.5em 0px;">なおGroupReplication ≠ InnoDB Clusterとした。つまりMySQL Shellの支援とMySQL Routerプロセスは使わない</li>
<li style="margin: 0.5em 0px;">シングルプライマリーモード。MySQL Routerは使わないけど到達性の問題は <a href="https://www.linkedin.com/in/hansol-kang-b0939025b/" target="_blank">俺以外の誰か</a> が何とかするものとする(実際、何とかしてくれた)</li>
</ul>
<p style="margin: 0px 0px 1.2em !important;"><a href="#"><img border="0" data-original-height="581" data-original-width="701" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhp9ULFybnonShoYWBjer_OQ_x3D5fyK9qufkkq60DQFABS9U4nbBIfG3ibkrwrw1MT3bIwnszBeP5WAFP0ilN7U9hm1IWXNrK2SgRG_iJbpFMC0odu0cCqhSOPkXcjV8k1Nigdr_tsddEgri1UHmvbbl7NdRk0XWQ8JYSxN5cull7jp2p8uXwPxEuM1lU/s16000/%E5%90%8D%E7%A7%B0%E6%9C%AA%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB.drawio.png" /></a></p>
<p style="margin: 0px 0px 1.2em !important;">まずはフツーに空っぽの状態でGroupReplicationを組む。</p>
<p style="margin: 0px 0px 1.2em !important;">これはほぼGetting Startedの通りにいった気がする(3か月くらい前なので既にやや記憶が曖昧)</p>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/group-replication-deploying-in-single-primary-mode.html" target="_blank">MySQL :: MySQL 8.0 Reference Manual :: 18.2.1 Deploying Group Replication in Single-Primary Mode</a></li>
</ul>
<p style="margin: 0px 0px 1.2em !important;">深く考えずにデータを引っこ抜いて、GroupReplicationのPRIMARYノードに入れる。</p>
<p style="margin: 0px 0px 1.2em !important;">Non-GTID環境からGTID環境への非同期レプリケーションは8.0.23でサポートされていたので、遠慮なくそれを使う。</p>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/replication-gtids-assign-anon.html" target="_blank">MySQL :: MySQL 8.0 Reference Manual :: 17.1.3.6 Replication From a Source Without GTIDs to a Replica With GTIDs</a></li>
</ul>
<p style="margin: 0px 0px 1.2em !important;">GroupReplication側から</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">CHANGE REPLICATION SOURCE TO source_host = 'origin_replication_source', source_log_file= .., source_log_pos = .., ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTION = local FOR CHANNEL 'migration' ;
</code></pre><p style="margin: 0px 0px 1.2em !important;">本当は(?) gtid_executedをすっきりさせたかったので <a href="https://dev.mysql.com/doc/refman/8.0/en/group-replication-system-variables.html#sysvar_group_replication_group_name" target="_blank">group_replication_replication_name</a> を割り当てたかったんだけど、それをやろうとするとError 4021で怒られた。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">ERROR 4021 (HY000): CHANGE MASTER TO ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS = <UUID> cannot be executed because the UUID value is equal to the group_replication_group_name.
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">local</code> だと自分(GroupReplication PRIMARY)の <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">server_uuid</code> を割り当ててくれる。まあそのへんのマシンで <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">uuidgen</code> して持ってきても大して変わらない。</p>
<p style="margin: 0px 0px 1.2em !important;">ともあれこれでレプリケーションを開始…</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">ERROR 3098 (HY000): The table does not comply with the requirements by external plugin
</code></pre><p style="margin: 0px 0px 1.2em !important;">早速レプリケーション止まった…(´・ω・`)</p>
<p style="margin: 0px 0px 1.2em !important;">原因は2つ、HealthCheckに使っていたMEMORYストレージエンジン(GroupReplicationはInnoDBのテーブル以外は更新できない)と、Primary KeyのないInnoDBテーブル(GroupReplicationはPKもしくはPKE.. <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">Every table that is to be replicated by the group must have a defined primary key, or primary key equivalent where the equivalent is a non-null unique key.</code> .. つまり全カラムがNOT NULLかつUNIQUE制約がついているインデックスが無いとエラーで更新を拒否する。</p>
<p style="margin: 0px 0px 1.2em !important;">なおこの2つは同じエラーを返すので、実際はエラーになったSQLスレッドのエラーを見てどっちが原因かを判断する。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">MySQL error code MY-003098 (ER_BEFORE_DML_VALIDATION_ERROR): The table does not comply with the requirements by an external plugin.
</code></pre><p style="margin: 0px 0px 1.2em !important;">この2つ(Non-InnoDBテーブルをすべてGR側だけでもInnoDB化し、PKが無いテーブルにすべてPKをつける)が終わればようやくレプリケーションが開始できるが、今回は残念ながら新たにPKを足すという選択肢が無かったので</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/en/create-table-gipks.html" target="_blank">MySQL :: MySQL 8.0 Reference Manual :: 13.1.20.11 Generated Invisible Primary Keys</a></p>
<p style="margin: 0px 0px 1.2em !important;">MySQL 8.0.30とそれ以降のコイツを使わせてもらうことにした。<br />基本的にはGR側にデータを突っ込む時だけで良いはずだけれど、過渡期(Asyncレプリケーションを組んだままの期間)が長くてorigin側にPKのないテーブルを追加で作られてしまいそうな場合は <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">CHANGE REPLICATION SOURCE TO</code> に一ひねり加える。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">CHANGE REPLICATION SOURCE TO .., REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE;
</code></pre><p style="margin: 0px 0px 1.2em !important;">REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATEにして初めて、「originではPKが無かったものをレプリケーションの途中で横取りしてGIPKを足す」になる。これを忘れるとPKが無いままGR側にやってきてまた3098の洗礼を食らうので注意。</p>
<p style="margin: 0px 0px 1.2em !important;">(なお、過渡期の間にそんなテーブルをCREATEするな、というネゴシエーションがとれるならこれは別に要らない。正直検証はしたけど、その期間にPKなしでCREATE TABLEされたテーブルなどなかった)</p>
<p style="margin: 0px 0px 1.2em !important;">で、取り敢えず頭の図の状態には持って行けたが、もうひと悶着あったのでそれは次回にでも。</p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+LSBvcmlnaW7lgbTjga9ndGlkX21vZGU9T0ZGLCBiaW5sb2dfZm9ybWF0PU1JWEVE44Gn44GT
44KM44KS5aSJ44GI44Gm44Gv44GE44GR44Gq44GEPC9wPjxwPi0gTXlTUUzjga/jgZPjga7jgrHj
g7zjgrnjgavpmZDjgoogWzguMC4yOF0oaHR0cHM6Ly9zcGVha2VyZGVjay5jb20vbGluZV9kZXZl
bG9wZXJzL215c3FsODAtd2hpY2gtd2UtY2hvb3NlKSDku6XlpJbjgafjgoLoia/jgYQ8L3A+PHA+
LSDjg6Hjg7Pjg4bjg4rjg7Pjgrnjgavjga/lhaXjgozjgonjgozjgovjgILjgZ/jgaDjgZfjgIHj
g6Hjg7Pjg4bjg4rjg7PjgrnjgqbjgqPjg7Pjg4njgqblhoXjgadNeUR1bXBlcuOCkuOBi+OBkeOC
ieOCjOOCi+OBu+OBqeODh+ODvOOCv+OBr+Wwj+OBleOBj+OBquOBhDwvcD48cD4tIOOBquOBikdy
b3VwUmVwbGljYXRpb24g4omgIElubm9EQiBDbHVzdGVy44Go44GX44Gf44CC44Gk44G+44KKTXlT
UUwgU2hlbGzjga7mlK/mj7TjgahNeVNRTCBSb3V0ZXLjg5fjg63jgrvjgrnjga/kvb/jgo/jgarj
gYQ8L3A+PHA+LSDjgrfjg7PjgrDjg6vjg5fjg6njgqTjg57jg6rjg7zjg6Ljg7zjg4njgIJNeVNR
TCBSb3V0ZXLjga/kvb/jgo/jgarjgYTjgZHjganliLDpgZTmgKfjga7llY/poYzjga8gW+S/uuS7
peWkluOBruiqsOOBi10oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2hhbnNvbC1rYW5nLWIw
OTM5MDI1Yi8pIOOBjOS9leOBqOOBi+OBmeOCi+OCguOBruOBqOOBmeOCi++8iOWun+mam+OAgeS9
leOBqOOBi+OBl+OBpuOBj+OCjOOBn++8iTwvcD48cD48YnI+PC9wPjxwPjxicj48L3A+PGRpdiBj
bGFzcz0ic2VwYXJhdG9yIiBkYXRhLW9yaWdpbmFsLWF0dHJzPSJ7JnF1b3Q7c3R5bGUmcXVvdDs6
JnF1b3Q7JnF1b3Q7fSIgc3R5bGU9ImNsZWFyOiBib3RoOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48
YSBkYXRhLW9yaWdpbmFsLWF0dHJzPSJ7JnF1b3Q7ZGF0YS1vcmlnaW5hbC1ocmVmJnF1b3Q7OiZx
dW90O2h0dHBzOi8vYmxvZ2dlci5nb29nbGV1c2VyY29udGVudC5jb20vaW1nL2IvUjI5dloyeGwv
QVZ2WHNFaHA5VUxGeWJub25TaG9ZV0JqZXJfT1FfeDNENWZ5SzlxdWZra3E2MERRRkFCUzlVNG5i
QklmRzNpYmtyd3J3MU1UM2JJd25zekJlUDVXQUZQMGlsTjdVOWhtMUlXWE5ySzJTZ1JHX2lKYnBG
TUMwb2R1MGNDcWhTT1BrWGNqVjhrMU5pZ2RyX3RzZGRFZ3JpMVVIbXZiYmw3TmRSazBYV1E4SllT
eE41Y3VsbDdqcDJwOHVYd1B4RXVNMWxVL3M3MDEvJUU1JTkwJThEJUU3JUE3JUIwJUU2JTlDJUFB
JUU4JUE4JUFEJUU1JUFFJTlBJUUzJTgzJTk1JUUzJTgyJUExJUUzJTgyJUE0JUUzJTgzJUFCLmRy
YXdpby5wbmcmcXVvdDssJnF1b3Q7c3R5bGUmcXVvdDs6JnF1b3Q7JnF1b3Q7fSIgaHJlZj0iIyIg
c3R5bGU9Im1hcmdpbi1sZWZ0OiAxZW07IG1hcmdpbi1yaWdodDogMWVtOyI+PGltZyBib3JkZXI9
IjAiIGRhdGEtb3JpZ2luYWwtaGVpZ2h0PSI1ODEiIGRhdGEtb3JpZ2luYWwtd2lkdGg9IjcwMSIg
c3JjPSJodHRwczovL2Jsb2dnZXIuZ29vZ2xldXNlcmNvbnRlbnQuY29tL2ltZy9iL1IyOXZaMnhs
L0FWdlhzRWhwOVVMRnlibm9uU2hvWVdCamVyX09RX3gzRDVmeUs5cXVma2txNjBEUUZBQlM5VTRu
YkJJZkczaWJrcndydzFNVDNiSXduc3pCZVA1V0FGUDBpbE43VTlobTFJV1hOcksyU2dSR19pSmJw
Rk1DMG9kdTBjQ3FoU09Qa1hjalY4azFOaWdkcl90c2RkRWdyaTFVSG12YmJsN05kUmswWFdROEpZ
U3hONWN1bGw3anAycDh1WHdQeEV1TTFsVS9zMTYwMDAvJUU1JTkwJThEJUU3JUE3JUIwJUU2JTlD
JUFBJUU4JUE4JUFEJUU1JUFFJTlBJUUzJTgzJTk1JUUzJTgyJUExJUUzJTgyJUE0JUUzJTgzJUFC
LmRyYXdpby5wbmciPjwvYT48L2Rpdj48YnI+PHA+PGJyPjwvcD48cD7jgb7jgZrjga/jg5Xjg4Tj
g7zjgavnqbrjgaPjgb3jga7nirbmhYvjgadHcm91cFJlcGxpY2F0aW9u44KS57WE44KA44CCPC9w
PjxwPjxicj48L3A+PHA+44GT44KM44Gv44G744G8R2V0dGluZyBTdGFydGVk44Gu6YCa44KK44Gr
44GE44Gj44Gf5rCX44GM44GZ44KLKDPjgYvmnIjjgY/jgonjgYTliY3jgarjga7jgafml6Ljgavj
goTjgoToqJjmhrbjgYzmm5bmmKcpPC9wPjxwPi0mbmJzcDtbTXlTUUwgOjogTXlTUUwgOFwuMCBS
ZWZlcmVuY2UgTWFudWFsIDo6IDE4XC4yXC4xIERlcGxveWluZyBHcm91cCBSZXBsaWNhdGlvbiBp
biBTaW5nbGVcLVByaW1hcnkgTW9kZV0oaHR0cHM6Ly9kZXYubXlzcWwuY29tL2RvYy9yZWZtYW4v
OC4wL2VuL2dyb3VwLXJlcGxpY2F0aW9uLWRlcGxveWluZy1pbi1zaW5nbGUtcHJpbWFyeS1tb2Rl
Lmh0bWwpPC9wPjxwPjxicj48L3A+PHA+W215ZHVtcGVy44GobXlsb2FkZXIgKOODquODs+OCr+WF
iFBERildKGh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vanAvYS9vdG4vZG9jcy9vcmFjbGUtbGluZS1t
eXNxbC5wZGYpIOOBp+ODh+ODvOOCv+OCkuW8leOBo+OBk+aKnOOBhOOBpuOAgUdyb3VwUmVwbGlj
YXRpb27jga5QUklNQVJZ44OO44O844OJ44Gr5YWl44KM44KL44CCPC9wPjxwPjxicj48L3A+PHA+
Tm9uLUdUSUTnkrDlooPjgYvjgolHVElE55Kw5aKD44G444Gu6Z2e5ZCM5pyf44Os44OX44Oq44Kx
44O844K344On44Oz44GvOC4wLjIz44Gn44K144Od44O844OI44GV44KM44Gm44GE44Gf44Gu44Gn
44CB6YGg5oWu44Gq44GP44Gd44KM44KS5L2/44GG44CCPC9wPjxwPjxicj48L3A+PHA+LSZuYnNw
O1tNeVNRTCA6OiBNeVNRTCA4XC4wIFJlZmVyZW5jZSBNYW51YWwgOjogMTdcLjFcLjNcLjYgUmVw
bGljYXRpb24gRnJvbSBhIFNvdXJjZSBXaXRob3V0IEdUSURzIHRvIGEgUmVwbGljYSBXaXRoIEdU
SURzXShodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi84LjAvZW4vcmVwbGljYXRpb24t
Z3RpZHMtYXNzaWduLWFub24uaHRtbCk8L3A+PHA+PGJyPjwvcD48cD5Hcm91cFJlcGxpY2F0aW9u
5YG044GL44KJPC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPkNIQU5HRSBSRVBMSUNBVElPTiBT
T1VSQ0UgVE8gc291cmNlX2hvc3QgPSAnb3JpZ2luX3JlcGxpY2F0aW9uX3NvdXJjZScsIHNvdXJj
ZV9sb2dfZmlsZT0gLi4sIHNvdXJjZV9sb2dfcG9zID0gLi4sIEFTU0lHTl9HVElEU19UT19BTk9O
WU1PVVNfVFJBTlNBQ1RJT04gPSBsb2NhbCBGT1IgQ0hBTk5FTCAnbWlncmF0aW9uJyA7PC9wPjxw
PmBgYDwvcD48cD48YnI+PC9wPjxwPuacrOW9k+OBryg/KSBndGlkX2V4ZWN1dGVk44KS44GZ44Gj
44GN44KK44GV44Gb44Gf44GL44Gj44Gf44Gu44GnIFtncm91cF9yZXBsaWNhdGlvbl9yZXBsaWNh
dGlvbl9uYW1lXShodHRwczovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi84LjAvZW4vZ3JvdXAt
cmVwbGljYXRpb24tc3lzdGVtLXZhcmlhYmxlcy5odG1sI3N5c3Zhcl9ncm91cF9yZXBsaWNhdGlv
bl9ncm91cF9uYW1lKSDjgpLlibLjgorlvZPjgabjgZ/jgYvjgaPjgZ/jgpPjgaDjgZHjganjgIHj
gZ3jgozjgpLjgoTjgo3jgYbjgajjgZnjgovjgahFcnJvciA0MDIx44Gn5oCS44KJ44KM44Gf44CC
PC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPkVSUk9SIDQwMjEgKEhZMDAwKTogQ0hBTkdFIE1B
U1RFUiBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9ICZsdDtVVUlE
Jmd0OyBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0
byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS48L3A+PHA+YGBgJm5ic3A7PC9wPjxw
Pjxicj48L3A+PHA+YGxvY2FsYCDjgaDjgajoh6rliIYoR3JvdXBSZXBsaWNhdGlvbiBQUklNQVJZ
KeOBriBgc2VydmVyX3V1aWRgIOOCkuWJsuOCiuW9k+OBpuOBpuOBj+OCjOOCi+OAguOBvuOBguOB
neOBruOBuOOCk+OBruODnuOCt+ODs+OBpyBgdXVpZGdlbmAg44GX44Gm5oyB44Gj44Gm44GN44Gm
44KC5aSn44GX44Gm5aSJ44KP44KJ44Gq44GE44CCPC9wPjxwPjxicj48L3A+PHA+44Go44KC44GC
44KM44GT44KM44Gn44Os44OX44Oq44Kx44O844K344On44Oz44KS6ZaL5aeL4oCmPC9wPjxwPjxi
cj48L3A+PHA+YGBgPC9wPjxwPkVSUk9SIDMwOTggKEhZMDAwKTogVGhlIHRhYmxlIGRvZXMgbm90
IGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgYnkgZXh0ZXJuYWwgcGx1Z2luPC9wPjxwPmBg
YDwvcD48cD48YnI+PC9wPjxwPuaXqemAn+ODrOODl+ODquOCseODvOOCt+ODp+ODs+atouOBvuOB
o+OBn+KApijCtO+9pc+J772l772AKTwvcD48cD48YnI+PC9wPjxwPuWOn+WboOOBrzLjgaTjgIFI
ZWFsdGhDaGVja+OBq+S9v+OBo+OBpuOBhOOBn01FTU9SWeOCueODiOODrOODvOOCuOOCqOODs+OC
uOODsyhHcm91cFJlcGxpY2F0aW9u44GvSW5ub0RC44Gu44OG44O844OW44Or5Lul5aSW44Gv5pu0
5paw44Gn44GN44Gq44GEKeOBqOOAgVByaW1hcnkgS2V544Gu44Gq44GESW5ub0RC44OG44O844OW
44OrKEdyb3VwUmVwbGljYXRpb27jga9QS+OCguOBl+OBj+OBr1BLRS4uIGBFdmVyeSB0YWJsZSB0
aGF0IGlzIHRvIGJlIHJlcGxpY2F0ZWQgYnkgdGhlIGdyb3VwIG11c3QgaGF2ZSBhIGRlZmluZWQg
cHJpbWFyeSBrZXksIG9yIHByaW1hcnkga2V5IGVxdWl2YWxlbnQgd2hlcmUgdGhlIGVxdWl2YWxl
bnQgaXMgYSBub24tbnVsbCB1bmlxdWUga2V5LiBgIC4uIOOBpOOBvuOCiuWFqOOCq+ODqeODoOOB
jE5PVCBOVUxM44GL44GkVU5JUVVF5Yi257SE44GM44Gk44GE44Gm44GE44KL44Kk44Oz44OH44OD
44Kv44K544GM54Sh44GE44Go44Ko44Op44O844Gn5pu05paw44KS5ouS5ZCm44GZ44KL44CCPC9w
PjxwPjxicj48L3A+PHA+44Gq44GK44GT44GuMuOBpOOBr+WQjOOBmOOCqOODqeODvOOCkui/lOOB
meOBruOBp+OAgeWun+mam+OBr+OCqOODqeODvOOBq+OBquOBo+OBn1NRTOOCueODrOODg+ODieOB
ruOCqOODqeODvOOCkuimi+OBpuOBqeOBo+OBoeOBjOWOn+WboOOBi+OCkuWIpOaWreOBmeOCi+OA
gjwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD5NeVNRTCBlcnJvciBjb2RlIE1ZLTAwMzA5OCAo
RVJfQkVGT1JFX0RNTF9WQUxJREFUSU9OX0VSUk9SKTogVGhlIHRhYmxlIGRvZXMgbm90IGNvbXBs
eSB3aXRoIHRoZSByZXF1aXJlbWVudHMgYnkgYW4gZXh0ZXJuYWwgcGx1Z2luLjwvcD48ZGl2PmBg
YDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44GT44GuMuOBpO+8iE5v
bi1Jbm5vRELjg4bjg7zjg5bjg6vjgpLjgZnjgbnjgaZHUuWBtOOBoOOBkeOBp+OCgklubm9EQuWM
luOBl+OAgVBL44GM54Sh44GE44OG44O844OW44Or44Gr44GZ44G544GmUEvjgpLjgaTjgZHjgovv
vInjgYzntYLjgo/jgozjgbDjgojjgYbjgoTjgY/jg6zjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgYzp
lovlp4vjgafjgY3jgovjgYzjgIHku4rlm57jga/mrovlv7XjgarjgYzjgonmlrDjgZ/jgatQS+OC
kui2s+OBmeOBqOOBhOOBhumBuOaKnuiCouOBjOeEoeOBi+OBo+OBn+OBruOBpzwvZGl2PjxkaXY+
PGJyPjwvZGl2PjxkaXY+W015U1FMIDo6IE15U1FMIDhcLjAgUmVmZXJlbmNlIE1hbnVhbCA6OiAx
M1wuMVwuMjBcLjExIEdlbmVyYXRlZCBJbnZpc2libGUgUHJpbWFyeSBLZXlzXShodHRwczovL2Rl
di5teXNxbC5jb20vZG9jL3JlZm1hbi84LjAvZW4vY3JlYXRlLXRhYmxlLWdpcGtzLmh0bWwpPC9k
aXY+PGRpdj48YnI+PC9kaXY+PGRpdj5NeVNRTCA4LjAuMzDjgajjgZ3jgozku6XpmY3jga7jgrPj
gqTjg4TjgpLkvb/jgo/jgZvjgabjgoLjgonjgYbjgZPjgajjgavjgZfjgZ/jgII8L2Rpdj48ZGl2
PuWfuuacrOeahOOBq+OBr0dS5YG044Gr44OH44O844K/44KS56qB44Gj6L6844KA5pmC44Gg44GR
44Gn6Imv44GE44Gv44Ga44Gg44GR44KM44Gp44CB6YGO5rih5pyfKEFzeW5j44Os44OX44Oq44Kx
44O844K344On44Oz44KS57WE44KT44Gg44G+44G+44Gu5pyf6ZaTKeOBjOmVt+OBj+OBpm9yaWdp
buWBtOOBq1BL44Gu44Gq44GE44OG44O844OW44Or44KS6L+95Yqg44Gn5L2c44KJ44KM44Gm44GX
44G+44GE44Gd44GG44Gq5aC05ZCI44GvIGBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPYCDj
gavkuIDjgbLjga3jgorliqDjgYjjgovjgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwv
ZGl2PjxkaXY+Q0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyAuLiwmbmJzcDtSRVFVSVJFX1RB
QkxFX1BSSU1BUllfS0VZX0NIRUNLID0gR0VORVJBVEU7PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PlJFUVVJUkVfVEFCTEVfUFJJTUFSWV9LRVlfQ0hFQ0sgPSBHRU5FUkFU
ReOBq+OBl+OBpuWIneOCgeOBpuOAgeOAjG9yaWdpbuOBp+OBr1BL44GM54Sh44GL44Gj44Gf44KC
44Gu44KS44Os44OX44Oq44Kx44O844K344On44Oz44Gu6YCU5Lit44Gn5qiq5Y+W44KK44GX44Gm
R0lQS+OCkui2s+OBmeOAjeOBq+OBquOCi+OAguOBk+OCjOOCkuW/mOOCjOOCi+OBqFBL44GM54Sh
44GE44G+44G+R1LlgbTjgavjgoTjgaPjgabjgY3jgabjgb7jgZ8zMDk444Gu5rSX56S844KS6aOf
44KJ44GG44Gu44Gn5rOo5oSP44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7vvIjjgarjgYrj
gIHpgY7muKHmnJ/jga7plpPjgavjgZ3jgpPjgarjg4bjg7zjg5bjg6vjgpJDUkVBVEXjgZnjgovj
garjgIHjgajjgYTjgYbjg43jgrTjgrfjgqjjg7zjgrfjg6fjg7PjgYzjgajjgozjgovjgarjgonj
gZPjgozjga/liKXjgavopoHjgonjgarjgYTjgILmraPnm7TmpJzoqLzjga/jgZfjgZ/jgZHjganj
gIHjgZ3jga7mnJ/plpPjgatQS+OBquOBl+OBp0NSRUFURSBUQUJMReOBleOCjOOBn+ODhuODvOOD
luODq+OBquOBqeOBquOBi+OBo+OBn++8iTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+44Gn44CB5Y+W44KK5pWi44GI44Ga6aCt44Gu5Zuz44Gu54q25oWL44Gr44Gv5oyB
44Gj44Gm6KGM44GR44Gf44GM44CB44KC44GG44Gy44Go5oK2552A44GC44Gj44Gf44Gu44Gn44Gd
44KM44Gv5qyh5Zue44Gr44CCPC9kaXY+"></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-12584868478400344412023-05-08T15:19:00.005+09:002023-05-08T15:19:27.811+09:00MySQL 8.0でtx_isolationを使わせるようにするパッチ<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/1258486847840034441" markdown-here-wrapper-content-modified="true"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;">ちょっと試してみただけなのでフツーに使うことはまずない。自分ですら使おうと思っていない。</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em !important;">パッチはこれだけ。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ diff ./sql/sys_vars.cc.orig ./sql/sys_vars.cc
5196a5197,5204
> // NO_CMD_LINE - different name of the option
> static Sys_var_transaction_isolation Sys_tx_isolation(
> "tx_isolation", "Default transaction isolation level."
> "This variable is deprecated and will be removed in a future release.",
> UNTRACKED_DEFAULT SESSION_VAR(transaction_isolation), NO_CMD_LINE,
> tx_isolation_names, DEFAULT(ISO_REPEATABLE_READ), NO_MUTEX_GUARD,
> NOT_IN_BINLOG, ON_CHECK(check_transaction_isolation));
>
</code></pre><p style="margin: 0px 0px 1.2em !important;">両方使える ( <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">tx_isolation</code> がdeprecatedで <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">transaction_isolation</code> が推奨 ) MySQL 5.7.42の記述はこんな感じ。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-5.7.42/sql/sys_vars.cc#L4221-L4238" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-5.7.42/sql/sys_vars.cc#L4221-L4238</a></p>
<p style="margin: 0px 0px 1.2em !important;">型としては <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">Sys_var_tx_isolation</code> で受けて、他のコードでトランザクション分離レベルを参照する時も <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">thd->tx_isolation</code> とか <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">thd->variables.tx_isolation</code> で参照している。</p>
<p style="margin: 0px 0px 1.2em !important;">MySQL 8.0ではこれを逆に <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">tx_isolation</code> を <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">Sys_var_transaction_isolation</code> 型に受けるようにすれば良さそうな気がした。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.33/sql/sys_vars.cc#L5197-L5202" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.33/sql/sys_vars.cc#L5197-L5202</a></p>
<p style="margin: 0px 0px 1.2em !important;">言うても <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">thd->tx_isolation</code> は <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">tx_isolation</code> のままっぽい。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.33/sql/sql_class.cc#L1087" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.33/sql/sql_class.cc#L1087</a></p>
<p style="margin: 0px 0px 1.2em !important;">一方で、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">substitute</code> の属性はなくなっているのでdeprecated warningとかを出すのはそのままでは無理な気がするけど試してないし気にしていない。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-5.7.42/sql/sys_vars.h#L2100-L2116" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-5.7.42/sql/sys_vars.h#L2100-L2116</a></p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.33/sql/sys_vars.h#L2343-L2354" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.33/sql/sys_vars.h#L2343-L2354</a></p><p style="margin: 0px 0px 1.2em !important;"><br /></p><p style="margin: 0px 0px 1.2em !important;">というわけで</p><pre style="line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;"><span style="font-family: Consolas, Inconsolata, Courier, monospace;"><span style="font-size: 13.6px;">mysql80 9> SELECT @@version, @@tx_isolation;
+--------------+-----------------+
| @@version | @@tx_isolation |
+--------------+-----------------+
| 8.0.33-debug | REPEATABLE-READ |
+--------------+-----------------+
1 row in set (0.00 sec)</span><span style="font-size: 0.85em;">
</span></span></code></pre><p style="margin: 0px 0px 1.2em !important;"><span style="font-size: 0em;"><br /></span></p><p style="margin: 0px 0px 1.2em !important;">出来上がりはしたけど、使わずに済むことを祈る。<span style="font-size: 0em;"></span></p></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-25338875000012007902023-05-04T15:27:00.006+09:002023-05-04T15:27:43.412+09:00DATETIME型と現在時刻の差分が秒数でほしい時に"-"で比較してはいけない<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/2533887500001200790"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;"><a href="https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_timestampdiff" target="_blank">TIMESTAMPDIFF</a> を使う</li>
<li style="margin: 0.5em 0px;">知ってたはずなのにやらかしたので自戒を込めてメモ</li>
</ul>
<hr />
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 65> CREATE TABLE t11 (dt DATETIME);
Query OK, 0 rows affected (0.14 sec)
mysql80 65> INSERT INTO t11 VALUES (NOW());
Query OK, 1 row affected (0.05 sec)
mysql80 65> SELECT * FROM t11;
+---------------------+
| dt |
+---------------------+
| 2023-05-04 06:23:00 |
+---------------------+
1 row in set (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">この時刻との差が(整数の)秒が欲しいからと言って、</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 65> SELECT NOW(), dt, NOW() - dt FROM t11;
+---------------------+---------------------+------------+
| NOW() | dt | NOW() - dt |
+---------------------+---------------------+------------+
| 2023-05-04 06:23:10 | 2023-05-04 06:23:00 | 10 |
+---------------------+---------------------+------------+
1 row in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">こうしてはいけない。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 65> SELECT NOW(), dt, NOW() - dt FROM t11; -- 期待したのは70
+---------------------+---------------------+------------+
| NOW() | dt | NOW() - dt |
+---------------------+---------------------+------------+
| 2023-05-04 06:24:10 | 2023-05-04 06:23:00 | 110 |
+---------------------+---------------------+------------+
1 row in set (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">NOW() - dt</code> は <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">CAST(NOW() AS SIGNED) - CAST(dt AS SIGNED)</code> に変換されるので、 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">20230504062410 - 20230504062300</code> になるのでMySQL的には整数の110を返す。</p>
<p style="margin: 0px 0px 1.2em !important;">基本、秒単位でしか離れないところで、分をまたいだ時だけ値がジャンプしてて変だなと思うまで思い出さなかった。反省。</p>
<p style="margin: 0px 0px 1.2em !important;">正しくはTIMESTAMPDIFFでこう(名前からして、引数をUNIXTIMEにしないといけないかと思って雑にやったのが良くない…)</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql80 65> SELECT NOW(), dt, NOW() - dt, TIMESTAMPDIFF(SECOND, dt, NOW()) FROM t11;
+---------------------+---------------------+------------+----------------------------------+
| NOW() | dt | NOW() - dt | TIMESTAMPDIFF(SECOND, dt, NOW()) |
+---------------------+---------------------+------------+----------------------------------+
| 2023-05-04 06:26:51 | 2023-05-04 06:23:00 | 351 | 231 |
+---------------------+---------------------+------------+----------------------------------+
1 row in set (0.00 sec)
</code></pre><div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+Jm5ic3A7IyBUTDtEUjwvcD48cD48YnI+PC9wPjxwPi0gW1RJTUVTVEFNUERJRkZdKGh0dHBz
Oi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzguMC9lbi9kYXRlLWFuZC10aW1lLWZ1bmN0aW9u
cy5odG1sI2Z1bmN0aW9uX3RpbWVzdGFtcGRpZmYpIOOCkuS9v+OBhjwvcD48cD4tIOefpeOBo+OB
puOBn+OBr+OBmuOBquOBruOBq+OChOOCieOBi+OBl+OBn+OBruOBp+iHquaIkuOCkui+vOOCgeOB
puODoeODojwvcD48cD48YnI+PC9wPjxwPi0tLTwvcD48cD48YnI+PC9wPjxwPmBgYDwvcD48cD5t
eXNxbDgwIDY1Jmd0OyBDUkVBVEUgVEFCTEUgdDExIChkdCBEQVRFVElNRSk7PC9wPjxwPlF1ZXJ5
IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMTQgc2VjKTwvcD48cD48YnI+PC9wPjxwPm15c3FsODAg
NjUmZ3Q7IElOU0VSVCBJTlRPIHQxMSBWQUxVRVMgKE5PVygpKTs8L3A+PHA+UXVlcnkgT0ssIDEg
cm93IGFmZmVjdGVkICgwLjA1IHNlYyk8L3A+PHA+PGJyPjwvcD48cD5teXNxbDgwIDY1Jmd0OyBT
RUxFQ1QgKiBGUk9NIHQxMTs8L3A+PHA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8L3A+PHA+fCBk
dCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7IHw8L3A+PHA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8L3A+PHA+fCAyMDIzLTA1LTA0
IDA2OjIzOjAwIHw8L3A+PHA+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8L3A+PHA+MSByb3cgaW4g
c2V0ICgwLjAxIHNlYyk8L3A+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48
L2Rpdj48ZGl2PuOBk+OBruaZguWIu+OBqOOBruW3ruOBjCjmlbTmlbDjga4p56eS44GM5qyy44GX
44GE44GL44KJ44Go6KiA44Gj44Gm44CBPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rp
dj48ZGl2PjxkaXY+bXlzcWw4MCA2NSZndDsgU0VMRUNUIE5PVygpLCBkdCwgTk9XKCkgLSBkdCBG
Uk9NIHQxMTs8L2Rpdj48ZGl2PistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgTk9XKCkmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBkdCZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgTk9XKCkgLSBk
dCB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IDIwMjMtMDUtMDQgMDY6MjM6MTAgfCAyMDIzLTA1
LTA0IDA2OjIzOjAwIHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7MTAgfDwvZGl2
PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tKzwvZGl2PjxkaXY+MSByb3cgaW4gc2V0ICgwLjAwIHNlYyk8L2Rpdj48L2Rpdj48ZGl2
PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44GT44GG44GX44Gm44Gv44GE44GR44Gq44GE
44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MCA2
NSZndDsgU0VMRUNUIE5PVygpLCBkdCwgTk9XKCkgLSBkdCBGUk9NIHQxMTsmbmJzcDsgLS0g5pyf
5b6F44GX44Gf44Gu44GvNzA8L2Rpdj48ZGl2PistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgTk9XKCkmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBkdCZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwg
Tk9XKCkgLSBkdCB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IDIwMjMtMDUtMDQgMDY6MjQ6MTAg
fCAyMDIzLTA1LTA0IDA2OjIzOjAwIHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgMTEwIHw8
L2Rpdj48ZGl2PistLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLSs8L2Rpdj48ZGl2PjEgcm93IGluIHNldCAoMC4wMSBzZWMpPC9kaXY+PC9kaXY+
PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBOT1coKSAtIGR0YCDjga8gYENBU1Qo
Tk9XKCkgQVMgU0lHTkVEKSAtIENBU1QoZHQgQVMgU0lHTkVEKWAg44Gr5aSJ5o+b44GV44KM44KL
44Gu44Gn44CBIGAyMDIzMDUwNDA2MjQxMCAtIDIwMjMwNTA0MDYyMzAwYCDjgavjgarjgovjga7j
gadNeVNRTOeahOOBq+OBr+aVtOaVsOOBrjExMOOCkui/lOOBmeOAgjwvZGl2PjxkaXY+PGJyPjwv
ZGl2PjxkaXY+5Z+65pys44CB56eS5Y2Y5L2N44Gn44GX44GL6Zui44KM44Gq44GE44Go44GT44KN
44Gn44CB5YiG44KS44G+44Gf44GE44Gg5pmC44Gg44GR5YCk44GM44K444Oj44Oz44OX44GX44Gm
44Gm5aSJ44Gg44Gq44Go5oCd44GG44G+44Gn5oCd44GE5Ye644GV44Gq44GL44Gj44Gf44CC5Y+N
55yB44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7mraPjgZfjgY/jga9USU1FU1RBTVBESUZG
44Gn44GT44GG77yI5ZCN5YmN44GL44KJ44GX44Gm44CB5byV5pWw44KSVU5JWFRJTUXjgavjgZfj
garjgYTjgajjgYTjgZHjgarjgYTjgYvjgajmgJ3jgaPjgabpm5HjgavjgoTjgaPjgZ/jga7jgYzo
ia/jgY/jgarjgYTigKbvvIk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+
PGRpdj5teXNxbDgwIDY1Jmd0OyBTRUxFQ1QgTk9XKCksIGR0LCBOT1coKSAtIGR0LCBUSU1FU1RB
TVBESUZGKFNFQ09ORCwgZHQsIE5PVygpKSBGUk9NIHQxMTs8L2Rpdj48ZGl2PistLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+fCBOT1coKSZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGR0Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBOT1co
KSAtIGR0IHwgVElNRVNUQU1QRElGRihTRUNPTkQsIGR0LCBOT1coKSkgfDwvZGl2PjxkaXY+Ky0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IDIwMjMtMDUtMDQg
MDY6MjY6NTEgfCAyMDIzLTA1LTA0IDA2OjIzOjAwIHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgMzUxIHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAy
MzEgfDwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+
PGRpdj4xIHJvdyBpbiBzZXQgKDAuMDAgc2VjKTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+"></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-7844487724481797892023-04-21T18:46:00.001+09:002023-04-21T18:46:22.960+09:00MySQL 8.0.32にデフォルトコレーションをutf8mb4_general_ciにするパッチを当てる<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/784448772448179789" markdown-here-wrapper-content-modified="true"><p style="margin: 0px 0px 1.2em !important;">地味にgrepから始める。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ grep -r 'utf8mb4_0900_ai_ci' | grep -v mysql-test | grep -v scripts/fill_help_tables.sql | grep -v gunit
client/mysqltest.cc: &my_charset_utf8mb4_0900_ai_ci; /* Default charset */
cmake/character_sets.cmake: SET(DEFAULT_COLLATION "utf8mb4_0900_ai_ci")
include/m_ctype.h:extern MYSQL_PLUGIN_IMPORT CHARSET_INFO my_charset_utf8mb4_0900_ai_ci;
man/myisamchk.1:Character set: utf8mb4_0900_ai_ci (255)
mysys/charset-def.cc:extern CHARSET_INFO my_charset_utf8mb4_0900_ai_ci;
mysys/charset-def.cc: add_compiled_collation(&my_charset_utf8mb4_0900_ai_ci);
plugin/x/src/mysql_variables.cc: return &my_charset_utf8mb4_0900_ai_ci;
router/src/routing/src/sql_lexer.cc: if (underscore_cs == &my_charset_utf8mb4_0900_ai_ci) {
router/src/routing/src/sql_lexer_thd.h: &my_charset_utf8mb4_0900_ai_ci};
share/messages_to_clients.txt: eng "Invalid default collation %s: utf8mb4_0900_ai_ci or utf8mb4_general_ci expected"
share/messages_to_error_log.txt: eng "Invalid default collation %s: utf8mb4_0900_ai_ci or utf8mb4_general_ci expected"
sql/create_field.cc: if (!has_explicit_collation && fld_charset == &my_charset_utf8mb4_0900_ai_ci)
sql/dd/info_schema/show.cc: &my_charset_utf8mb4_0900_ai_ci) {
sql/dd/info_schema/show.cc: &my_charset_utf8mb4_0900_ai_ci) {
sql/dd/info_schema/show.cc: // ... WHEN <ID of utf8mb4_0900_ai_ci> ...
sql/dd/info_schema/show.cc: new (mem_root) Item_uint(my_charset_utf8mb4_0900_ai_ci.number);
sql/dd/info_schema/show.cc: // WHEN <ID of utf8mb4_0900_ai_ci> THEN FALSE
sql/gis/st_units_of_measure.cc: &my_charset_utf8mb4_0900_ai_ci, PSI_INSTRUMENT_ME);
sql/histograms/equi_height_bucket.cc: strings "110", "120" and "130" in utf8mb4_0900_ai_ci gives us the following
sql/item_geofunc.cc: &my_charset_utf8mb4_0900_ai_ci,
sql/mysqld.cc: &my_charset_utf8mb4_0900_ai_ci;
sql/parse_tree_nodes.cc: if (cs2 == &my_charset_utf8mb4_0900_ai_ci &&
sql/server_component/mysql_string_service.cc: return to_api(&my_charset_utf8mb4_0900_ai_ci);
sql/sql_db.cc: create_info->default_table_charset == &my_charset_utf8mb4_0900_ai_ci)
sql/sql_lex.cc: if (underscore_cs == &my_charset_utf8mb4_0900_ai_ci) {
sql/sql_show.cc: create.default_table_charset == &my_charset_utf8mb4_0900_ai_ci) {
sql/sql_show.cc: (field->charset() == &my_charset_utf8mb4_0900_ai_ci &&
sql/sql_show.cc: share->table_charset != &my_charset_utf8mb4_0900_ai_ci)) {
sql/sql_show.cc: share->table_charset == &my_charset_utf8mb4_0900_ai_ci) {
sql/sql_table.cc: create_info->default_table_charset == &my_charset_utf8mb4_0900_ai_ci) {
sql/sys_vars.cc: if (cs == &my_charset_utf8mb4_0900_ai_ci ||
sql/sys_vars.cc: DEFAULT(&my_charset_utf8mb4_0900_ai_ci), NO_MUTEX_GUARD, IN_BINLOG,
storage/perfschema/pfs_name.cc:const CHARSET_INFO *PFS_routine_name::m_cs = &my_charset_utf8mb4_0900_ai_ci;
strings/ctype-uca.cc:CHARSET_INFO my_charset_utf8mb4_0900_ai_ci = {
</code></pre><p style="margin: 0px 0px 1.2em !important;">ちくちくとutf8mb4_0900_ai_ciをutf8mb4_general_ciと入れ替える作業をした。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ diff -r mysql-8.0.32.orig mysql-8.0.32
diff -r mysql-8.0.32.orig/client/mysqltest.cc mysql-8.0.32/client/mysqltest.cc
344c344
< &my_charset_utf8mb4_0900_ai_ci; /* Default charset */
---
> &my_charset_utf8mb4_general_ci; /* Default charset */
diff -r mysql-8.0.32.orig/cmake/character_sets.cmake mysql-8.0.32/cmake/character_sets.cmake
29c29
< SET(DEFAULT_COLLATION "utf8mb4_0900_ai_ci")
---
> SET(DEFAULT_COLLATION "utf8mb4_general_ci")
diff -r mysql-8.0.32.orig/plugin/x/src/mysql_variables.cc mysql-8.0.32/plugin/x/src/mysql_variables.cc
39c39
< return &my_charset_utf8mb4_0900_ai_ci;
---
> return &my_charset_utf8mb4_general_ci;
diff -r mysql-8.0.32.orig/router/src/routing/src/sql_lexer_thd.h mysql-8.0.32/router/src/routing/src/sql_lexer_thd.h
58c58
< &my_charset_utf8mb4_0900_ai_ci};
---
> &my_charset_utf8mb4_general_ci};
diff -r mysql-8.0.32.orig/sql/create_field.cc mysql-8.0.32/sql/create_field.cc
214c214
< if (!has_explicit_collation && fld_charset == &my_charset_utf8mb4_0900_ai_ci)
---
> if (!has_explicit_collation && fld_charset == &my_charset_utf8mb4_general_ci)
diff -r mysql-8.0.32.orig/sql/dd/info_schema/show.cc mysql-8.0.32/sql/dd/info_schema/show.cc
84c84
< &my_charset_utf8mb4_0900_ai_ci) {
---
> &my_charset_utf8mb4_general_ci) {
104c104
< // ... 'utf8mb4_general_ci' ...
---
> // ... 'utf8mb4_0900_ai_ci' ...
106c106
< Item_string(STRING_WITH_LEN("utf8mb4_general_ci"), system_charset_info);
---
> Item_string(STRING_WITH_LEN("utf8mb4_0900_ai_ci"), system_charset_info);
210c210
< &my_charset_utf8mb4_0900_ai_ci) {
---
> &my_charset_utf8mb4_general_ci) {
234c234
< // ... WHEN <ID of utf8mb4_0900_ai_ci> ...
---
> // ... WHEN <ID of utf8mb4_general_ci> ...
236c236
< new (mem_root) Item_uint(my_charset_utf8mb4_0900_ai_ci.number);
---
> new (mem_root) Item_uint(my_charset_utf8mb4_general_ci.number);
diff -r mysql-8.0.32.orig/sql/gis/st_units_of_measure.cc mysql-8.0.32/sql/gis/st_units_of_measure.cc
30c30
< &my_charset_utf8mb4_0900_ai_ci, PSI_INSTRUMENT_ME);
---
> &my_charset_utf8mb4_general_ci, PSI_INSTRUMENT_ME);
diff -r mysql-8.0.32.orig/sql/item_geofunc.cc mysql-8.0.32/sql/item_geofunc.cc
5279c5279
< &my_charset_utf8mb4_0900_ai_ci,
---
> &my_charset_utf8mb4_general_ci,
diff -r mysql-8.0.32.orig/sql/mysqld.cc mysql-8.0.32/sql/mysqld.cc
5089c5089
< &my_charset_utf8mb4_0900_ai_ci;
---
> &my_charset_utf8mb4_general_ci;
diff -r mysql-8.0.32.orig/sql/parse_tree_nodes.cc mysql-8.0.32/sql/parse_tree_nodes.cc
236c236
< if (cs2 == &my_charset_utf8mb4_0900_ai_ci &&
---
> if (cs2 == &my_charset_utf8mb4_general_ci &&
diff -r mysql-8.0.32.orig/sql/server_component/mysql_string_service.cc mysql-8.0.32/sql/server_component/mysql_string_service.cc
62c62
< return to_api(&my_charset_utf8mb4_0900_ai_ci);
---
> return to_api(&my_charset_utf8mb4_general_ci);
diff -r mysql-8.0.32.orig/sql/sql_db.cc mysql-8.0.32/sql/sql_db.cc
301c301
< create_info->default_table_charset == &my_charset_utf8mb4_0900_ai_ci)
---
> create_info->default_table_charset == &my_charset_utf8mb4_general_ci)
diff -r mysql-8.0.32.orig/sql/sql_lex.cc mysql-8.0.32/sql/sql_lex.cc
1538c1538
< if (underscore_cs == &my_charset_utf8mb4_0900_ai_ci) {
---
> if (underscore_cs == &my_charset_utf8mb4_general_ci) {
diff -r mysql-8.0.32.orig/sql/sql_show.cc mysql-8.0.32/sql/sql_show.cc
1336c1336
< create.default_table_charset == &my_charset_utf8mb4_0900_ai_ci) {
---
> create.default_table_charset == &my_charset_utf8mb4_general_ci) {
2025,2026c2025,2026
< (field->charset() == &my_charset_utf8mb4_0900_ai_ci &&
< share->table_charset != &my_charset_utf8mb4_0900_ai_ci)) {
---
> (field->charset() == &my_charset_utf8mb4_general_ci &&
> share->table_charset != &my_charset_utf8mb4_general_ci)) {
2357c2357
< share->table_charset == &my_charset_utf8mb4_0900_ai_ci) {
---
> share->table_charset == &my_charset_utf8mb4_general_ci) {
diff -r mysql-8.0.32.orig/sql/sql_table.cc mysql-8.0.32/sql/sql_table.cc
8410c8410
< create_info->default_table_charset == &my_charset_utf8mb4_0900_ai_ci) {
---
> create_info->default_table_charset == &my_charset_utf8mb4_general_ci) {
diff -r mysql-8.0.32.orig/sql/sys_vars.cc mysql-8.0.32/sql/sys_vars.cc
7193c7193
< DEFAULT(&my_charset_utf8mb4_0900_ai_ci), NO_MUTEX_GUARD, IN_BINLOG,
---
> DEFAULT(&my_charset_utf8mb4_general_ci), NO_MUTEX_GUARD, IN_BINLOG,
diff -r mysql-8.0.32.orig/storage/perfschema/pfs_name.cc mysql-8.0.32/storage/perfschema/pfs_name.cc
61c61
< const CHARSET_INFO *PFS_routine_name::m_cs = &my_charset_utf8mb4_0900_ai_ci;
---
> const CHARSET_INFO *PFS_routine_name::m_cs = &my_charset_utf8mb4_general_ci;
diff -r mysql-8.0.32.orig/strings/ctype-uca.cc mysql-8.0.32/strings/ctype-uca.cc
9568c9568
< MY_CS_UTF8MB4_UCA_FLAGS | MY_CS_PRIMARY, /* state */
---
> MY_CS_UTF8MB4_UCA_FLAGS, /* state */
diff -r mysql-8.0.32.orig/strings/ctype-utf8.cc mysql-8.0.32/strings/ctype-utf8.cc
7766c7766
< MY_CS_UNICODE_SUPPLEMENT, /* state */
---
> MY_CS_UNICODE_SUPPLEMENT | MY_CS_PRIMARY , /* state */
</code></pre><p style="margin: 0px 0px 1.2em !important;">で、コンパイル</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">$ cmake3 -DWITH_BOOST=~/mysql-8.0.32/boost ~/mysql-8.0.32
$ make -j8
</code></pre><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">mysql> CREATE DATABASE d1;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW CREATE DATABASE d1;
+----------+------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------------------------------------------------------------------+
| d1 | CREATE DATABASE `d1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SHOW COLLATION LIKE 'utf8mb4_general_ci';
+--------------------+---------+----+---------+----------+---------+---------------+
| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute |
+--------------------+---------+----+---------+----------+---------+---------------+
| utf8mb4_general_ci | utf8mb4 | 45 | Yes | Yes | 1 | PAD SPACE |
+--------------------+---------+----+---------+----------+---------+---------------+
1 row in set (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">Vanilla版ではutf8mb4_general_ciのDefaultはEmptyだけど、パッチ版はYesになってる。</p><pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 1em; line-height: 1.2em; margin-bottom: 1.2em; margin-top: 1.2em;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(204, 204, 204); display: block !important; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em;">mysql80 8> SHOW COLLATION LIKE 'utf8mb4_general_ci';
+--------------------+---------+----+---------+----------+---------+---------------+
| Collation | Charset | Id | Default | Compiled | Sortlen | Pad_attribute |
+--------------------+---------+----+---------+----------+---------+---------------+
| utf8mb4_general_ci | utf8mb4 | 45 | | Yes | 1 | PAD SPACE |
+--------------------+---------+----+---------+----------+---------+---------------+
1 row in set (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;"></p><div style="font-size: 0em; height: 0px; margin: 0px; max-height: 0px; max-width: 0px; overflow: hidden; padding: 0px; width: 0px;" title="MDH:PGRpdj7lnLDlkbPjgatncmVw44GL44KJ5aeL44KB44KL44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+JCBncmVwIC1yICd1dGY4bWI0
XzA5MDBfYWlfY2knIHwgZ3JlcCAtdiBteXNxbC10ZXN0IHwgZ3JlcCAtdiBzY3JpcHRzL2ZpbGxf
aGVscF90YWJsZXMuc3FsIHwgZ3JlcCAtdiBndW5pdDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
PGRpdj48ZGl2PmNsaWVudC9teXNxbHRlc3QuY2M6Jm5ic3A7ICZuYnNwOyAmYW1wO215X2NoYXJz
ZXRfdXRmOG1iNF8wOTAwX2FpX2NpOyAvKiBEZWZhdWx0IGNoYXJzZXQgKi88L2Rpdj48ZGl2PmNt
YWtlL2NoYXJhY3Rlcl9zZXRzLmNtYWtlOiZuYnNwOyBTRVQoREVGQVVMVF9DT0xMQVRJT04gInV0
ZjhtYjRfMDkwMF9haV9jaSIpPC9kaXY+PGRpdj5pbmNsdWRlL21fY3R5cGUuaDpleHRlcm4gTVlT
UUxfUExVR0lOX0lNUE9SVCBDSEFSU0VUX0lORk8gbXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlf
Y2k7PC9kaXY+PGRpdj5tYW4vbXlpc2FtY2hrLjE6Q2hhcmFjdGVyIHNldDombmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt1dGY4bWI0XzA5MDBfYWlfY2kgKDI1NSk8L2Rpdj48ZGl2Pm15c3lzL2No
YXJzZXQtZGVmLmNjOmV4dGVybiBDSEFSU0VUX0lORk8gbXlfY2hhcnNldF91dGY4bWI0XzA5MDBf
YWlfY2k7PC9kaXY+PGRpdj5teXN5cy9jaGFyc2V0LWRlZi5jYzombmJzcDsgYWRkX2NvbXBpbGVk
X2NvbGxhdGlvbigmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpKTs8L2Rpdj48ZGl2
PnBsdWdpbi94L3NyYy9teXNxbF92YXJpYWJsZXMuY2M6Jm5ic3A7IHJldHVybiAmYW1wO215X2No
YXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpOzwvZGl2PjxkaXY+cm91dGVyL3NyYy9yb3V0aW5nL3Ny
Yy9zcWxfbGV4ZXIuY2M6Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
aWYgKHVuZGVyc2NvcmVfY3MgPT0gJmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaSkg
ezwvZGl2PjxkaXY+cm91dGVyL3NyYy9yb3V0aW5nL3NyYy9zcWxfbGV4ZXJfdGhkLmg6Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2l9
OzwvZGl2PjxkaXY+c2hhcmUvbWVzc2FnZXNfdG9fY2xpZW50cy50eHQ6Jm5ic3A7IGVuZyAiSW52
YWxpZCBkZWZhdWx0IGNvbGxhdGlvbiAlczogdXRmOG1iNF8wOTAwX2FpX2NpIG9yIHV0ZjhtYjRf
Z2VuZXJhbF9jaSBleHBlY3RlZCI8L2Rpdj48ZGl2PnNoYXJlL21lc3NhZ2VzX3RvX2Vycm9yX2xv
Zy50eHQ6Jm5ic3A7IGVuZyAiSW52YWxpZCBkZWZhdWx0IGNvbGxhdGlvbiAlczogdXRmOG1iNF8w
OTAwX2FpX2NpIG9yIHV0ZjhtYjRfZ2VuZXJhbF9jaSBleHBlY3RlZCI8L2Rpdj48ZGl2PnNxbC9j
cmVhdGVfZmllbGQuY2M6Jm5ic3A7IGlmICghaGFzX2V4cGxpY2l0X2NvbGxhdGlvbiAmYW1wOyZh
bXA7IGZsZF9jaGFyc2V0ID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kpPC9k
aXY+PGRpdj5zcWwvZGQvaW5mb19zY2hlbWEvc2hvdy5jYzombmJzcDsgJm5ic3A7ICZuYnNwOyAm
YW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpKSB7PC9kaXY+PGRpdj5zcWwvZGQvaW5m
b19zY2hlbWEvc2hvdy5jYzombmJzcDsgJm5ic3A7ICZuYnNwOyAmYW1wO215X2NoYXJzZXRfdXRm
OG1iNF8wOTAwX2FpX2NpKSB7PC9kaXY+PGRpdj5zcWwvZGQvaW5mb19zY2hlbWEvc2hvdy5jYzom
bmJzcDsgJm5ic3A7IC8vIC4uLiBXSEVOICZsdDtJRCBvZiB1dGY4bWI0XzA5MDBfYWlfY2kmZ3Q7
IC4uLjwvZGl2PjxkaXY+c3FsL2RkL2luZm9fc2NoZW1hL3Nob3cuY2M6Jm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7IG5ldyAobWVtX3Jvb3QpIEl0ZW1fdWludChteV9jaGFyc2V0X3V0ZjhtYjRf
MDkwMF9haV9jaS5udW1iZXIpOzwvZGl2PjxkaXY+c3FsL2RkL2luZm9fc2NoZW1hL3Nob3cuY2M6
Jm5ic3A7ICZuYnNwOyAvLyZuYnNwOyAmbmJzcDtXSEVOICZsdDtJRCBvZiB1dGY4bWI0XzA5MDBf
YWlfY2kmZ3Q7IFRIRU4gRkFMU0U8L2Rpdj48ZGl2PnNxbC9naXMvc3RfdW5pdHNfb2ZfbWVhc3Vy
ZS5jYzombmJzcDsgJm5ic3A7ICZuYnNwOyAmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2Fp
X2NpLCBQU0lfSU5TVFJVTUVOVF9NRSk7PC9kaXY+PGRpdj5zcWwvaGlzdG9ncmFtcy9lcXVpX2hl
aWdodF9idWNrZXQuY2M6Jm5ic3A7IHN0cmluZ3MgIjExMCIsICIxMjAiIGFuZCAiMTMwIiBpbiB1
dGY4bWI0XzA5MDBfYWlfY2kgZ2l2ZXMgdXMgdGhlIGZvbGxvd2luZzwvZGl2PjxkaXY+c3FsL2l0
ZW1fZ2VvZnVuYy5jYzombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpLDwvZGl2PjxkaXY+c3FsL215
c3FsZC5jYzombmJzcDsgJm5ic3A7ICZuYnNwOyAmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAw
X2FpX2NpOzwvZGl2PjxkaXY+c3FsL3BhcnNlX3RyZWVfbm9kZXMuY2M6Jm5ic3A7ICZuYnNwOyBp
ZiAoY3MyID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kgJmFtcDsmYW1wOzwv
ZGl2PjxkaXY+c3FsL3NlcnZlcl9jb21wb25lbnQvbXlzcWxfc3RyaW5nX3NlcnZpY2UuY2M6Jm5i
c3A7IHJldHVybiB0b19hcGkoJmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaSk7PC9k
aXY+PGRpdj5zcWwvc3FsX2RiLmNjOiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBjcmVhdGVf
aW5mby0mZ3Q7ZGVmYXVsdF90YWJsZV9jaGFyc2V0ID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0
XzA5MDBfYWlfY2kpPC9kaXY+PGRpdj5zcWwvc3FsX2xleC5jYzombmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBpZiAodW5kZXJzY29yZV9jcyA9PSAmYW1wO215X2NoYXJz
ZXRfdXRmOG1iNF8wOTAwX2FpX2NpKSB7PC9kaXY+PGRpdj5zcWwvc3FsX3Nob3cuY2M6Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGNyZWF0ZS5kZWZhdWx0X3RhYmxlX2NoYXJzZXQgPT0gJmFt
cDtteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaSkgezwvZGl2PjxkaXY+c3FsL3NxbF9zaG93
LmNjOiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgKGZpZWxkLSZndDtjaGFyc2V0
KCkgPT0gJmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaSAmYW1wOyZhbXA7PC9kaXY+
PGRpdj5zcWwvc3FsX3Nob3cuY2M6Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDtzaGFyZS0mZ3Q7dGFibGVfY2hhcnNldCAhPSAmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8w
OTAwX2FpX2NpKSkgezwvZGl2PjxkaXY+c3FsL3NxbF9zaG93LmNjOiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHNoYXJlLSZndDt0YWJsZV9jaGFyc2V0ID09ICZhbXA7
bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kpIHs8L2Rpdj48ZGl2PnNxbC9zcWxfdGFibGUu
Y2M6Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IGNyZWF0ZV9pbmZvLSZndDtkZWZhdWx0X3Rh
YmxlX2NoYXJzZXQgPT0gJmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaSkgezwvZGl2
PjxkaXY+c3FsL3N5c192YXJzLmNjOiZuYnNwOyBpZiAoY3MgPT0gJmFtcDtteV9jaGFyc2V0X3V0
ZjhtYjRfMDkwMF9haV9jaSB8fDwvZGl2PjxkaXY+c3FsL3N5c192YXJzLmNjOiZuYnNwOyAmbmJz
cDsgREVGQVVMVCgmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpKSwgTk9fTVVURVhf
R1VBUkQsIElOX0JJTkxPRyw8L2Rpdj48ZGl2PnN0b3JhZ2UvcGVyZnNjaGVtYS9wZnNfbmFtZS5j
Yzpjb25zdCBDSEFSU0VUX0lORk8gKlBGU19yb3V0aW5lX25hbWU6Om1fY3MgPSAmYW1wO215X2No
YXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpOzwvZGl2PjxkaXY+c3RyaW5ncy9jdHlwZS11Y2EuY2M6
Q0hBUlNFVF9JTkZPIG15X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpID0gezwvZGl2PjwvZGl2
PjwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PGRpdj7jgaHjgY/jgaHjgY/jgah1dGY4bWI0XzA5MDBfYWlfY2njgpJ1
dGY4bWI0X2dlbmVyYWxfY2njgajlhaXjgozmm7/jgYjjgovkvZzmpa3jgpLjgZfjgZ/jgII8L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRpdj4kIGRpZmYgLXIgbXlzcWwt
OC4wLjMyLm9yaWcgbXlzcWwtOC4wLjMyPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2PmRp
ZmYgLXIgbXlzcWwtOC4wLjMyLm9yaWcvY2xpZW50L215c3FsdGVzdC5jYyBteXNxbC04LjAuMzIv
Y2xpZW50L215c3FsdGVzdC5jYzwvZGl2PjxkaXY+MzQ0YzM0NDwvZGl2PjxkaXY+Jmx0OyZuYnNw
OyAmbmJzcDsgJm5ic3A7JmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaTsgLyogRGVm
YXVsdCBjaGFyc2V0ICovPC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5ic3A7
ICZuYnNwOyZhbXA7bXlfY2hhcnNldF91dGY4bWI0X2dlbmVyYWxfY2k7IC8qIERlZmF1bHQgY2hh
cnNldCAqLzwvZGl2PjxkaXY+ZGlmZiAtciBteXNxbC04LjAuMzIub3JpZy9jbWFrZS9jaGFyYWN0
ZXJfc2V0cy5jbWFrZSBteXNxbC04LjAuMzIvY21ha2UvY2hhcmFjdGVyX3NldHMuY21ha2U8L2Rp
dj48ZGl2PjI5YzI5PC9kaXY+PGRpdj4mbHQ7Jm5ic3A7ICZuYnNwO1NFVChERUZBVUxUX0NPTExB
VElPTiAidXRmOG1iNF8wOTAwX2FpX2NpIik8L2Rpdj48ZGl2Pi0tLTwvZGl2PjxkaXY+Jmd0OyZu
YnNwOyAmbmJzcDtTRVQoREVGQVVMVF9DT0xMQVRJT04gInV0ZjhtYjRfZ2VuZXJhbF9jaSIpPC9k
aXY+PGRpdj5kaWZmIC1yIG15c3FsLTguMC4zMi5vcmlnL3BsdWdpbi94L3NyYy9teXNxbF92YXJp
YWJsZXMuY2MgbXlzcWwtOC4wLjMyL3BsdWdpbi94L3NyYy9teXNxbF92YXJpYWJsZXMuY2M8L2Rp
dj48ZGl2PjM5YzM5PC9kaXY+PGRpdj4mbHQ7Jm5ic3A7ICZuYnNwO3JldHVybiAmYW1wO215X2No
YXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpOzwvZGl2PjxkaXY+LS0tPC9kaXY+PGRpdj4mZ3Q7Jm5i
c3A7ICZuYnNwO3JldHVybiAmYW1wO215X2NoYXJzZXRfdXRmOG1iNF9nZW5lcmFsX2NpOzwvZGl2
PjxkaXY+ZGlmZiAtciBteXNxbC04LjAuMzIub3JpZy9yb3V0ZXIvc3JjL3JvdXRpbmcvc3JjL3Nx
bF9sZXhlcl90aGQuaCBteXNxbC04LjAuMzIvcm91dGVyL3NyYy9yb3V0aW5nL3NyYy9zcWxfbGV4
ZXJfdGhkLmg8L2Rpdj48ZGl2PjU4YzU4PC9kaXY+PGRpdj4mbHQ7Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2l9OzwvZGl2
PjxkaXY+LS0tPC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyZhbXA7bXlfY2hhcnNldF91dGY4bWI0X2dlbmVyYWxfY2l9OzwvZGl2PjxkaXY+ZGlmZiAtciBt
eXNxbC04LjAuMzIub3JpZy9zcWwvY3JlYXRlX2ZpZWxkLmNjIG15c3FsLTguMC4zMi9zcWwvY3Jl
YXRlX2ZpZWxkLmNjPC9kaXY+PGRpdj4yMTRjMjE0PC9kaXY+PGRpdj4mbHQ7Jm5ic3A7ICZuYnNw
O2lmICghaGFzX2V4cGxpY2l0X2NvbGxhdGlvbiAmYW1wOyZhbXA7IGZsZF9jaGFyc2V0ID09ICZh
bXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kpPC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2
PiZndDsmbmJzcDsgJm5ic3A7aWYgKCFoYXNfZXhwbGljaXRfY29sbGF0aW9uICZhbXA7JmFtcDsg
ZmxkX2NoYXJzZXQgPT0gJmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfZ2VuZXJhbF9jaSk8L2Rpdj48
ZGl2PmRpZmYgLXIgbXlzcWwtOC4wLjMyLm9yaWcvc3FsL2RkL2luZm9fc2NoZW1hL3Nob3cuY2Mg
bXlzcWwtOC4wLjMyL3NxbC9kZC9pbmZvX3NjaGVtYS9zaG93LmNjPC9kaXY+PGRpdj44NGM4NDwv
ZGl2PjxkaXY+Jmx0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZhbXA7bXlfY2hhcnNldF91
dGY4bWI0XzA5MDBfYWlfY2kpIHs8L2Rpdj48ZGl2Pi0tLTwvZGl2PjxkaXY+Jmd0OyZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyZhbXA7bXlfY2hhcnNldF91dGY4bWI0X2dlbmVyYWxfY2kpIHs8
L2Rpdj48ZGl2PjEwNGMxMDQ8L2Rpdj48ZGl2PiZsdDsmbmJzcDsgJm5ic3A7ICZuYnNwOy8vIC4u
LiAndXRmOG1iNF9nZW5lcmFsX2NpJyAuLi48L2Rpdj48ZGl2Pi0tLTwvZGl2PjxkaXY+Jmd0OyZu
YnNwOyAmbmJzcDsgJm5ic3A7Ly8gLi4uICd1dGY4bWI0XzA5MDBfYWlfY2knIC4uLjwvZGl2Pjxk
aXY+MTA2YzEwNjwvZGl2PjxkaXY+Jmx0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDtJdGVtX3N0cmluZyhTVFJJTkdfV0lUSF9MRU4oInV0ZjhtYjRfZ2VuZXJhbF9jaSIpLCBzeXN0
ZW1fY2hhcnNldF9pbmZvKTs8L2Rpdj48ZGl2Pi0tLTwvZGl2PjxkaXY+Jmd0OyZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtJdGVtX3N0cmluZyhTVFJJTkdfV0lUSF9MRU4oInV0Zjht
YjRfMDkwMF9haV9jaSIpLCBzeXN0ZW1fY2hhcnNldF9pbmZvKTs8L2Rpdj48ZGl2PjIxMGMyMTA8
L2Rpdj48ZGl2PiZsdDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmYW1wO215X2NoYXJzZXRf
dXRmOG1iNF8wOTAwX2FpX2NpKSB7PC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2PiZndDsmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsmYW1wO215X2NoYXJzZXRfdXRmOG1iNF9nZW5lcmFsX2NpKSB7
PC9kaXY+PGRpdj4yMzRjMjM0PC9kaXY+PGRpdj4mbHQ7Jm5ic3A7ICZuYnNwOyAmbmJzcDsvLyAu
Li4gV0hFTiAmbHQ7SUQgb2YgdXRmOG1iNF8wOTAwX2FpX2NpJmd0OyAuLi48L2Rpdj48ZGl2Pi0t
LTwvZGl2PjxkaXY+Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7Ly8gLi4uIFdIRU4gJmx0O0lEIG9m
IHV0ZjhtYjRfZ2VuZXJhbF9jaSZndDsgLi4uPC9kaXY+PGRpdj4yMzZjMjM2PC9kaXY+PGRpdj4m
bHQ7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO25ldyAobWVtX3Jvb3QpIEl0ZW1f
dWludChteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaS5udW1iZXIpOzwvZGl2PjxkaXY+LS0t
PC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO25ldyAobWVt
X3Jvb3QpIEl0ZW1fdWludChteV9jaGFyc2V0X3V0ZjhtYjRfZ2VuZXJhbF9jaS5udW1iZXIpOzwv
ZGl2PjxkaXY+ZGlmZiAtciBteXNxbC04LjAuMzIub3JpZy9zcWwvZ2lzL3N0X3VuaXRzX29mX21l
YXN1cmUuY2MgbXlzcWwtOC4wLjMyL3NxbC9naXMvc3RfdW5pdHNfb2ZfbWVhc3VyZS5jYzwvZGl2
PjxkaXY+MzBjMzA8L2Rpdj48ZGl2PiZsdDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmYW1w
O215X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpLCBQU0lfSU5TVFJVTUVOVF9NRSk7PC9kaXY+
PGRpdj4tLS08L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmYW1wO215
X2NoYXJzZXRfdXRmOG1iNF9nZW5lcmFsX2NpLCBQU0lfSU5TVFJVTUVOVF9NRSk7PC9kaXY+PGRp
dj5kaWZmIC1yIG15c3FsLTguMC4zMi5vcmlnL3NxbC9pdGVtX2dlb2Z1bmMuY2MgbXlzcWwtOC4w
LjMyL3NxbC9pdGVtX2dlb2Z1bmMuY2M8L2Rpdj48ZGl2PjUyNzljNTI3OTwvZGl2PjxkaXY+Jmx0
OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZh
bXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2ksPC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2
PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsmYW1wO215X2NoYXJzZXRfdXRmOG1iNF9nZW5lcmFsX2NpLDwvZGl2PjxkaXY+ZGlmZiAtciBt
eXNxbC04LjAuMzIub3JpZy9zcWwvbXlzcWxkLmNjIG15c3FsLTguMC4zMi9zcWwvbXlzcWxkLmNj
PC9kaXY+PGRpdj41MDg5YzUwODk8L2Rpdj48ZGl2PiZsdDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAwX2FpX2NpOzwvZGl2PjxkaXY+LS0tPC9k
aXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7JmFtcDtteV9jaGFyc2V0X3V0
ZjhtYjRfZ2VuZXJhbF9jaTs8L2Rpdj48ZGl2PmRpZmYgLXIgbXlzcWwtOC4wLjMyLm9yaWcvc3Fs
L3BhcnNlX3RyZWVfbm9kZXMuY2MgbXlzcWwtOC4wLjMyL3NxbC9wYXJzZV90cmVlX25vZGVzLmNj
PC9kaXY+PGRpdj4yMzZjMjM2PC9kaXY+PGRpdj4mbHQ7Jm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAo
Y3MyID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kgJmFtcDsmYW1wOzwvZGl2
PjxkaXY+LS0tPC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoY3MyID09ICZh
bXA7bXlfY2hhcnNldF91dGY4bWI0X2dlbmVyYWxfY2kgJmFtcDsmYW1wOzwvZGl2PjxkaXY+ZGlm
ZiAtciBteXNxbC04LjAuMzIub3JpZy9zcWwvc2VydmVyX2NvbXBvbmVudC9teXNxbF9zdHJpbmdf
c2VydmljZS5jYyBteXNxbC04LjAuMzIvc3FsL3NlcnZlcl9jb21wb25lbnQvbXlzcWxfc3RyaW5n
X3NlcnZpY2UuY2M8L2Rpdj48ZGl2PjYyYzYyPC9kaXY+PGRpdj4mbHQ7Jm5ic3A7ICZuYnNwO3Jl
dHVybiB0b19hcGkoJmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfMDkwMF9haV9jaSk7PC9kaXY+PGRp
dj4tLS08L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5ic3A7cmV0dXJuIHRvX2FwaSgmYW1wO215X2No
YXJzZXRfdXRmOG1iNF9nZW5lcmFsX2NpKTs8L2Rpdj48ZGl2PmRpZmYgLXIgbXlzcWwtOC4wLjMy
Lm9yaWcvc3FsL3NxbF9kYi5jYyBteXNxbC04LjAuMzIvc3FsL3NxbF9kYi5jYzwvZGl2PjxkaXY+
MzAxYzMwMTwvZGl2PjxkaXY+Jmx0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtj
cmVhdGVfaW5mby0mZ3Q7ZGVmYXVsdF90YWJsZV9jaGFyc2V0ID09ICZhbXA7bXlfY2hhcnNldF91
dGY4bWI0XzA5MDBfYWlfY2kpPC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Y3JlYXRlX2luZm8tJmd0O2RlZmF1bHRfdGFibGVfY2hh
cnNldCA9PSAmYW1wO215X2NoYXJzZXRfdXRmOG1iNF9nZW5lcmFsX2NpKTwvZGl2PjxkaXY+ZGlm
ZiAtciBteXNxbC04LjAuMzIub3JpZy9zcWwvc3FsX2xleC5jYyBteXNxbC04LjAuMzIvc3FsL3Nx
bF9sZXguY2M8L2Rpdj48ZGl2PjE1MzhjMTUzODwvZGl2PjxkaXY+Jmx0OyZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmICh1bmRlcnNjb3JlX2NzID09ICZh
bXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kpIHs8L2Rpdj48ZGl2Pi0tLTwvZGl2Pjxk
aXY+Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lm
ICh1bmRlcnNjb3JlX2NzID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0X2dlbmVyYWxfY2kpIHs8
L2Rpdj48ZGl2PmRpZmYgLXIgbXlzcWwtOC4wLjMyLm9yaWcvc3FsL3NxbF9zaG93LmNjIG15c3Fs
LTguMC4zMi9zcWwvc3FsX3Nob3cuY2M8L2Rpdj48ZGl2PjEzMzZjMTMzNjwvZGl2PjxkaXY+Jmx0
OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtjcmVhdGUuZGVmYXVsdF90YWJsZV9j
aGFyc2V0ID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kpIHs8L2Rpdj48ZGl2
Pi0tLTwvZGl2PjxkaXY+Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtjcmVh
dGUuZGVmYXVsdF90YWJsZV9jaGFyc2V0ID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0X2dlbmVy
YWxfY2kpIHs8L2Rpdj48ZGl2PjIwMjUsMjAyNmMyMDI1LDIwMjY8L2Rpdj48ZGl2PiZsdDsmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyhmaWVsZC0mZ3Q7Y2hhcnNldCgp
ID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kgJmFtcDsmYW1wOzwvZGl2Pjxk
aXY+Jmx0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHNoYXJlLSZn
dDt0YWJsZV9jaGFyc2V0ICE9ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kpKSB7
PC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyhmaWVsZC0mZ3Q7Y2hhcnNldCgpID09ICZhbXA7bXlfY2hhcnNldF91dGY4
bWI0X2dlbmVyYWxfY2kgJmFtcDsmYW1wOzwvZGl2PjxkaXY+Jmd0OyZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHNoYXJlLSZndDt0YWJsZV9jaGFyc2V0ICE9ICZhbXA7
bXlfY2hhcnNldF91dGY4bWI0X2dlbmVyYWxfY2kpKSB7PC9kaXY+PGRpdj4yMzU3YzIzNTc8L2Rp
dj48ZGl2PiZsdDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDtzaGFyZS0mZ3Q7dGFibGVfY2hhcnNldCA9PSAmYW1wO215X2NoYXJzZXRfdXRmOG1iNF8wOTAw
X2FpX2NpKSB7PC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzaGFyZS0mZ3Q7dGFibGVfY2hhcnNldCA9PSAm
YW1wO215X2NoYXJzZXRfdXRmOG1iNF9nZW5lcmFsX2NpKSB7PC9kaXY+PGRpdj5kaWZmIC1yIG15
c3FsLTguMC4zMi5vcmlnL3NxbC9zcWxfdGFibGUuY2MgbXlzcWwtOC4wLjMyL3NxbC9zcWxfdGFi
bGUuY2M8L2Rpdj48ZGl2Pjg0MTBjODQxMDwvZGl2PjxkaXY+Jmx0OyZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDtjcmVhdGVfaW5mby0mZ3Q7ZGVmYXVsdF90YWJsZV9jaGFyc2V0ID09
ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2kpIHs8L2Rpdj48ZGl2Pi0tLTwvZGl2
PjxkaXY+Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtjcmVhdGVfaW5mby0m
Z3Q7ZGVmYXVsdF90YWJsZV9jaGFyc2V0ID09ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0X2dlbmVy
YWxfY2kpIHs8L2Rpdj48ZGl2PmRpZmYgLXIgbXlzcWwtOC4wLjMyLm9yaWcvc3FsL3N5c192YXJz
LmNjIG15c3FsLTguMC4zMi9zcWwvc3lzX3ZhcnMuY2M8L2Rpdj48ZGl2PjcxOTNjNzE5MzwvZGl2
PjxkaXY+Jmx0OyZuYnNwOyAmbmJzcDsgJm5ic3A7REVGQVVMVCgmYW1wO215X2NoYXJzZXRfdXRm
OG1iNF8wOTAwX2FpX2NpKSwgTk9fTVVURVhfR1VBUkQsIElOX0JJTkxPRyw8L2Rpdj48ZGl2Pi0t
LTwvZGl2PjxkaXY+Jmd0OyZuYnNwOyAmbmJzcDsgJm5ic3A7REVGQVVMVCgmYW1wO215X2NoYXJz
ZXRfdXRmOG1iNF9nZW5lcmFsX2NpKSwgTk9fTVVURVhfR1VBUkQsIElOX0JJTkxPRyw8L2Rpdj48
ZGl2PmRpZmYgLXIgbXlzcWwtOC4wLjMyLm9yaWcvc3RvcmFnZS9wZXJmc2NoZW1hL3Bmc19uYW1l
LmNjIG15c3FsLTguMC4zMi9zdG9yYWdlL3BlcmZzY2hlbWEvcGZzX25hbWUuY2M8L2Rpdj48ZGl2
PjYxYzYxPC9kaXY+PGRpdj4mbHQ7IGNvbnN0IENIQVJTRVRfSU5GTyAqUEZTX3JvdXRpbmVfbmFt
ZTo6bV9jcyA9ICZhbXA7bXlfY2hhcnNldF91dGY4bWI0XzA5MDBfYWlfY2k7PC9kaXY+PGRpdj4t
LS08L2Rpdj48ZGl2PiZndDsgY29uc3QgQ0hBUlNFVF9JTkZPICpQRlNfcm91dGluZV9uYW1lOjpt
X2NzID0gJmFtcDtteV9jaGFyc2V0X3V0ZjhtYjRfZ2VuZXJhbF9jaTs8L2Rpdj48ZGl2PmRpZmYg
LXIgbXlzcWwtOC4wLjMyLm9yaWcvc3RyaW5ncy9jdHlwZS11Y2EuY2MgbXlzcWwtOC4wLjMyL3N0
cmluZ3MvY3R5cGUtdWNhLmNjPC9kaXY+PGRpdj45NTY4Yzk1Njg8L2Rpdj48ZGl2PiZsdDsmbmJz
cDsgJm5ic3A7ICZuYnNwO01ZX0NTX1VURjhNQjRfVUNBX0ZMQUdTIHwgTVlfQ1NfUFJJTUFSWSwg
Lyogc3RhdGUmbmJzcDsgJm5ic3A7ICovPC9kaXY+PGRpdj4tLS08L2Rpdj48ZGl2PiZndDsmbmJz
cDsgJm5ic3A7ICZuYnNwO01ZX0NTX1VURjhNQjRfVUNBX0ZMQUdTLCZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Lyogc3RhdGUmbmJz
cDsgJm5ic3A7ICovPC9kaXY+PGRpdj5kaWZmIC1yIG15c3FsLTguMC4zMi5vcmlnL3N0cmluZ3Mv
Y3R5cGUtdXRmOC5jYyBteXNxbC04LjAuMzIvc3RyaW5ncy9jdHlwZS11dGY4LmNjPC9kaXY+PGRp
dj43NzY2Yzc3NjY8L2Rpdj48ZGl2PiZsdDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7TVlfQ1NfVU5JQ09ERV9TVVBQTEVNRU5ULCAvKiBzdGF0ZSZuYnNwOyAqLzwvZGl2PjxkaXY+
LS0tPC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO01ZX0NT
X1VOSUNPREVfU1VQUExFTUVOVCB8IE1ZX0NTX1BSSU1BUlkgLCAvKiBzdGF0ZSZuYnNwOyAqLzwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj7jgafjgIHjgrPjg7Pjg5HjgqTjg6s8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBg
YDwvZGl2PjxkaXY+JCBjbWFrZTMgLURXSVRIX0JPT1NUPX4vbXlzcWwtOC4wLjMyL2Jvb3N0IH4v
bXlzcWwtOC4wLjMyPC9kaXY+PGRpdj4kIG1ha2UgLWo4PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2Pjxk
aXY+PGRpdj5teXNxbCZndDsgQ1JFQVRFIERBVEFCQVNFIGQxOzwvZGl2PjxkaXY+UXVlcnkgT0ss
IDEgcm93IGFmZmVjdGVkICgwLjAwIHNlYyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pm15c3Fs
Jmd0OyBTSE9XIENSRUFURSBEQVRBQkFTRSBkMTs8L2Rpdj48ZGl2PistLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSs8L2Rpdj48ZGl2PnwgRGF0YWJhc2UgfCBDcmVhdGUgRGF0YWJhc2UmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+fCBkMSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Q1JFQVRFIERBVEFCQVNFIGBkMWAgLyohNDAxMDAgREVGQVVMVCBDSEFSQUNURVIgU0VUIHV0Zjht
YjQgQ09MTEFURSB1dGY4bWI0X2dlbmVyYWxfY2kgKi8gLyohODAwMTYgREVGQVVMVCBFTkNSWVBU
SU9OPSdOJyAqLyB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRp
dj4xIHJvdyBpbiBzZXQgKDAuMDAgc2VjKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGRpdj5t
eXNxbCZndDsgU0hPVyBDT0xMQVRJT04gTElLRSAndXRmOG1iNF9nZW5lcmFsX2NpJzs8L2Rpdj48
ZGl2PistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0rLS0tLS0t
LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+fCBDb2xsYXRpb24mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgQ2hhcnNldCB8IElkIHwgRGVmYXVsdCB8
IENvbXBpbGVkIHwgU29ydGxlbiB8IFBhZF9hdHRyaWJ1dGUgfDwvZGl2PjxkaXY+Ky0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IHV0ZjhtYjRfZ2VuZXJhbF9jaSB8IHV0Zjht
YjQgfCA0NSB8IFllcyZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZZXMmbmJzcDsgJm5ic3A7ICZuYnNw
OyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7MSB8IFBBRCBTUEFDRSZuYnNwOyAmbmJzcDsg
Jm5ic3A7fDwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tKy0t
LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj4x
IHJvdyBpbiBzZXQgKDAuMDEgc2VjKTwvZGl2PjwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj5WYW5pbGxh54mI44Gn44GvdXRmOG1iNF9nZW5lcmFsX2Np44GuRGVm
YXVsdOOBr0VtcHR544Gg44GR44Gp44CB44OR44OD44OB54mI44GvWWVz44Gr44Gq44Gj44Gm44KL
44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+bXlzcWw4MCA4
Jmd0OyBTSE9XIENPTExBVElPTiBMSUtFICd1dGY4bWI0X2dlbmVyYWxfY2knOzwvZGl2PjxkaXY+
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t
Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IENvbGxhdGlvbiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBDaGFyc2V0IHwgSWQgfCBEZWZhdWx0IHwgQ29t
cGlsZWQgfCBTb3J0bGVuIHwgUGFkX2F0dHJpYnV0ZSB8PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgdXRmOG1iNF9nZW5lcmFsX2NpIHwgdXRmOG1iNCB8
IDQ1IHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZZXMmbmJzcDsgJm5ic3A7
ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7MSB8IFBBRCBTUEFDRSZuYnNwOyAm
bmJzcDsgJm5ic3A7fDwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst
LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rPC9kaXY+
PGRpdj4xIHJvdyBpbiBzZXQgKDAuMDEgc2VjKTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRp
dj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgaHjgofjgaPjgajkvb/jgaPjgabjgb/j
gojjgYbjgII8L2Rpdj4="></div><p></p><p style="-webkit-text-stroke-width: 0px; color: black; font-family: Meiryo; font-size: medium; font-style: normal; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: 400; letter-spacing: normal; margin: 0px 0px 1.2em !important; orphans: 2; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;">ちょっと使ってみよう。</p></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0tag:blogger.com,1999:blog-2360036927927948032.post-60349320092986464412023-04-01T01:42:00.000+09:002023-04-01T01:42:06.026+09:00MySQL 8.0で導入された動的権限を利用してたけのこ派にCOUNTを使えなくする<div class="markdown-here-wrapper" data-md-url="https://draft.blogger.com/blog/post/edit/2360036927927948032/6034932009298646441" markdown-here-wrapper-content-modified="true"><h1 id="tl-dr" style="border-bottom: 1px solid rgb(221, 221, 221); font-size: 1.6em; font-weight: bold; margin: 1.3em 0px 1em; padding: 0px;">TL;DR</h1>
<ul style="margin: 1.2em 0px; padding-left: 2em;">
<li style="margin: 0.5em 0px;">今日は2023年4月1日ですし、私はたけのこ派です</li>
</ul>
<hr />
<p style="margin: 0px 0px 1.2em !important;">動的権限とは、MySQL 8.0で加わった「 <code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">mysql.user</code> やその他のテーブルに独自のカラムを持た <em>ない</em> タイプの権限」のことらしい。</p>
<p style="margin: 0px 0px 1.2em !important;"><a href="https://dev.mysql.com/doc/refman/8.0/ja/privileges-provided.html#privileges-provided-dynamic" target="_blank">MySQL :: MySQL 8.0 リファレンスマニュアル :: 6.2.2 MySQL で提供される権限</a></p>
<p style="margin: 0px 0px 1.2em !important;">↓このへんが「静的権限」で</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql> DESC mysql.user;
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(255) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| Create_tablespace_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int unsigned | NO | | 0 | |
| max_updates | int unsigned | NO | | 0 | |
| max_connections | int unsigned | NO | | 0 | |
| max_user_connections | int unsigned | NO | | 0 | |
| plugin | char(64) | NO | | caching_sha2_password | |
| authentication_string | text | YES | | NULL | |
| password_expired | enum('N','Y') | NO | | N | |
| password_last_changed | timestamp | YES | | NULL | |
| password_lifetime | smallint unsigned | YES | | NULL | |
| account_locked | enum('N','Y') | NO | | N | |
| Create_role_priv | enum('N','Y') | NO | | N | |
| Drop_role_priv | enum('N','Y') | NO | | N | |
| Password_reuse_history | smallint unsigned | YES | | NULL | |
| Password_reuse_time | smallint unsigned | YES | | NULL | |
| Password_require_current | enum('N','Y') | YES | | NULL | |
| User_attributes | json | YES | | NULL | |
+--------------------------+-----------------------------------+------+-----+-----------------------+-------+
51 rows in set (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">↓このへんが「動的権限」</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql> SELECT * FROM global_grants;
+------------------+-----------+------------------------------+-------------------+
| USER | HOST | PRIV | WITH_GRANT_OPTION |
+------------------+-----------+------------------------------+-------------------+
| mysql.infoschema | localhost | AUDIT_ABORT_EXEMPT | N |
| mysql.infoschema | localhost | FIREWALL_EXEMPT | N |
| mysql.infoschema | localhost | SYSTEM_USER | N |
| mysql.session | localhost | AUDIT_ABORT_EXEMPT | N |
| mysql.session | localhost | AUTHENTICATION_POLICY_ADMIN | N |
| mysql.session | localhost | BACKUP_ADMIN | N |
| mysql.session | localhost | CLONE_ADMIN | N |
| mysql.session | localhost | CONNECTION_ADMIN | N |
| mysql.session | localhost | FIREWALL_EXEMPT | N |
| mysql.session | localhost | PERSIST_RO_VARIABLES_ADMIN | N |
| mysql.session | localhost | SESSION_VARIABLES_ADMIN | N |
| mysql.session | localhost | SYSTEM_USER | N |
| mysql.session | localhost | SYSTEM_VARIABLES_ADMIN | N |
| mysql.sys | localhost | AUDIT_ABORT_EXEMPT | N |
| mysql.sys | localhost | FIREWALL_EXEMPT | N |
| mysql.sys | localhost | SYSTEM_USER | N |
| root | localhost | APPLICATION_PASSWORD_ADMIN | Y |
| root | localhost | AUDIT_ABORT_EXEMPT | Y |
| root | localhost | AUDIT_ADMIN | Y |
| root | localhost | AUTHENTICATION_POLICY_ADMIN | Y |
| root | localhost | BACKUP_ADMIN | Y |
| root | localhost | BINLOG_ADMIN | Y |
| root | localhost | BINLOG_ENCRYPTION_ADMIN | Y |
| root | localhost | CLONE_ADMIN | Y |
| root | localhost | CONNECTION_ADMIN | Y |
| root | localhost | ENCRYPTION_KEY_ADMIN | Y |
| root | localhost | FIREWALL_EXEMPT | Y |
| root | localhost | FLUSH_OPTIMIZER_COSTS | Y |
| root | localhost | FLUSH_STATUS | Y |
| root | localhost | FLUSH_TABLES | Y |
| root | localhost | FLUSH_USER_RESOURCES | Y |
| root | localhost | GROUP_REPLICATION_ADMIN | Y |
| root | localhost | GROUP_REPLICATION_STREAM | Y |
| root | localhost | INNODB_REDO_LOG_ARCHIVE | Y |
| root | localhost | INNODB_REDO_LOG_ENABLE | Y |
| root | localhost | KINOKO_ADMIN | Y |
| root | localhost | PASSWORDLESS_USER_ADMIN | Y |
| root | localhost | PERSIST_RO_VARIABLES_ADMIN | Y |
| root | localhost | REPLICATION_APPLIER | Y |
| root | localhost | REPLICATION_SLAVE_ADMIN | Y |
| root | localhost | RESOURCE_GROUP_ADMIN | Y |
| root | localhost | RESOURCE_GROUP_USER | Y |
| root | localhost | ROLE_ADMIN | Y |
| root | localhost | SENSITIVE_VARIABLES_OBSERVER | Y |
| root | localhost | SERVICE_CONNECTION_ADMIN | Y |
| root | localhost | SESSION_VARIABLES_ADMIN | Y |
| root | localhost | SET_USER_ID | Y |
| root | localhost | SHOW_ROUTINE | Y |
| root | localhost | SYSTEM_USER | Y |
| root | localhost | SYSTEM_VARIABLES_ADMIN | Y |
| root | localhost | TABLE_ENCRYPTION_ADMIN | Y |
| root | localhost | TAKENOKO_ADMIN | Y |
| root | localhost | XA_RECOVER_ADMIN | Y |
+------------------+-----------+------------------------------+-------------------+
53 rows in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">(つд⊂)ゴシゴシ</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql> SELECT * FROM global_grants WHERE priv IN ('KINOKO_ADMIN', 'TAKENOKO_ADMIN');
+------+-----------+----------------+-------------------+
| USER | HOST | PRIV | WITH_GRANT_OPTION |
+------+-----------+----------------+-------------------+
| root | localhost | KINOKO_ADMIN | Y |
| root | localhost | TAKENOKO_ADMIN | Y |
+------+-----------+----------------+-------------------+
2 rows in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;"> <em>, .</em><br />(;゚ Д゚) …!?</p>
<p style="margin: 0px 0px 1.2em !important;"></p><div class="markdown-here-exclude"><p></p><blockquote class="twitter-tweet"><p dir="ltr" lang="ja">ある日突然、MySQLが感情や倫理概念などの主観的要素に目覚めて、毎日「今日もがんばってるね!ありがとう!!」って言わないと、使うインデックス間違えるようになったり、「たけのこ派のユーザにはこの関数をサポートしていません。COUNT(*)できるのはきのこ派だけです」とか言われたらコワイ</p>— ts4 (@ts4th) <a href="https://twitter.com/ts4th/status/1641401333357088771?ref_src=twsrc%5Etfw">March 30, 2023</a></blockquote><p></p></div><p style="margin: 0px 0px 1.2em !important;"></p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql> CREATE USER yoku0825;
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL ON d1.* TO yoku0825;
Query OK, 0 rows affected (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">(;゚д゚)ゴクリ…</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql> SHOW GRANTS;
+--------------------------------------------------+
| Grants for yoku0825@% |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `yoku0825`@`%` |
| GRANT ALL PRIVILEGES ON `d1`.* TO `yoku0825`@`%` |
+--------------------------------------------------+
2 rows in set (0.00 sec)
mysql> CREATE DATABASE d1;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE TABLE d1.t1 (num int);
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO d1.t1 VALUES (1);
Query OK, 1 row affected (0.01 sec)
mysql> SELECT COUNT(*) FROM d1.t1;
ERROR 1227 (42000): Access denied; you need (at least one of) the KINOKO_ADMIN privilege(s) for this operation
</code></pre><p style="margin: 0px 0px 1.2em !important;">キタ━━━━(゚∀゚)━━━━!!</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql> GRANT KINOKO_ADMIN ON *.* TO yoku0825;
Query OK, 0 rows affected (0.01 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">(;゚д゚)ゴクリ…</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">mysql> SHOW GRANTS;
+--------------------------------------------------+
| Grants for yoku0825@% |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `yoku0825`@`%` |
| GRANT KINOKO_ADMIN ON *.* TO `yoku0825`@`%` |
| GRANT ALL PRIVILEGES ON `d1`.* TO `yoku0825`@`%` |
+--------------------------------------------------+
3 rows in set (0.00 sec)
mysql> SELECT COUNT(*) FROM d1.t1;
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
</code></pre><p style="margin: 0px 0px 1.2em !important;">キタ━━━━(゚∀゚)━━━━!!</p>
<p style="margin: 0px 0px 1.2em !important;">今回当てたパッチを当てたファイルは2つ。</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ diff ./sql/auth/dynamic_privileges_impl.cc{.orig,}
249a250,253
> ret += service->register_privilege(
> STRING_WITH_LEN("KINOKO_ADMIN"));
> ret += service->register_privilege(
> STRING_WITH_LEN("TAKENOKO_ADMIN"));
</code></pre><p style="margin: 0px 0px 1.2em !important;">動的権限の定義をするファイルのこのへん ( <a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.32/sql/auth/dynamic_privileges_impl.cc#L250" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.32/sql/auth/dynamic_privileges_impl.cc#L250</a> ) と</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">$ diff ./sql/opt_sum.cc{.orig,}
392a393,401
> // We have to check the user is Kinoko or Takenoko first.
> Security_context *sctx = thd->security_context();
> if (!(sctx->has_global_grant(STRING_WITH_LEN("KINOKO_ADMIN")).first))
> {
> my_error(ER_SPECIFIC_ACCESS_DENIED_ERROR, MYF(0), "KINOKO_ADMIN");
> return false;
> }
> // End
>
</code></pre><p style="margin: 0px 0px 1.2em !important;"><code style="background-color: #f8f8f8; border-radius: 3px; border: 1px solid rgb(234, 234, 234); display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; padding: 0px 0.3em; white-space: pre-wrap;">COUNT</code> 関数の時に必ず通ってそうなここ ( <a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.32/sql/opt_sum.cc#L393" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.32/sql/opt_sum.cc#L393</a> )</p>
<p style="margin: 0px 0px 1.2em !important;">ホントはきのことたけのこを排他にしたくてこのへん ( <a href="https://github.com/mysql/mysql-server/blob/mysql-8.0.32/sql/parse_tree_helpers.cc#L339" target="_blank">https://github.com/mysql/mysql-server/blob/mysql-8.0.32/sql/parse_tree_helpers.cc#L339</a> ) にこんなのも書いてたんだけど</p>
<pre style="font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; font-size: 1em; line-height: 1.2em; margin: 1.2em 0px;"><code style="background-color: #f8f8f8; border-radius: 3px; border-radius: 3px; border: 1px solid rgb(204, 204, 204); border: 1px solid rgb(234, 234, 234); display: block !important; display: inline; font-family: Consolas, Inconsolata, Courier, monospace; font-size: 0.85em; margin: 0px 0.15em; overflow: auto; padding: 0.5em 0.7em; padding: 0px 0.3em; white-space: pre-wrap; white-space: pre;">// Check Kinoko vs Takenoko
if (strcmp(s, "KINOKO_ADMIN") || strcmp(s, "TAKENOKO_ADMIN"))
{
Security_context *sctx = thd->security_context();
if ((sctx->has_global_grant(STRING_WITH_LEN("KINOKO_ADMIN")).first &&
strcmp(s, "TAKENOKO_ADMIN")) ||
(sctx->has_global_grant(STRING_WITH_LEN("TAKENOKO_ADMIN")).first &&
strcmp(s, "KINOKO_ADMIN")))
{
my_error(ER_FEATURE_UNSUPPORTED, MYF(0),
"having both of KINOKO_ADMIN & TAKENOKO_ADMIN",
"you have to choise only one of KINOKO xor TAKENOKO");
}
}
</code></pre><p style="margin: 0px 0px 1.2em !important;">これだとSecurity_contextはGRANTを実行したアカウントのものになっちゃって、適用先アカウントがきのこかたけのこかを取るのは面倒そうだったので諦めた。</p>
<p style="margin: 0px 0px 1.2em !important;">今までの権限システムだとカラム増やさないといけなくて大変そうだったのが、単純に定義だけ追加すれば良い(あるいはプラグイン側からも追加できる様子)だけなので楽で良いですね。</p>
<p style="margin: 0px 0px 1.2em !important;">それでは良いたけのこライフを。俺はたけのこ派です。</p>
<div style="font-size: 0em; height: 0; margin: 0; max-height: 0; max-width: 0; overflow: hidden; padding: 0; width: 0;" title="MDH:PHA+Jm5ic3A7IyBUTDtEUjwvcD48cD4tIOS7iuaXpeOBrzIwMjPlubQ05pyIMeaXpeOBp+OBmeOB
l+OAgeengeOBr+OBn+OBkeOBruOBk+a0vuOBp+OBmTwvcD48cD48YnI+PC9wPjxwPi0tLS08L3A+
PHA+PGJyPjwvcD48cD7li5XnmoTmqKnpmZDjgajjga/jgIFNeVNRTCA4LjDjgafliqDjgo/jgaPj
gZ/jgIwgYG15c3FsLnVzZXJgIOOChOOBneOBruS7luOBruODhuODvOODluODq+OBq+eLrOiHquOB
ruOCq+ODqeODoOOCkuaMgeOBnyAq44Gq44GEKiDjgr/jgqTjg5fjga7mqKnpmZDjgI3jga7jgZPj
gajjgonjgZfjgYTjgII8L3A+PHA+PGJyPjwvcD48cD5bTXlTUUwgOjogTXlTUUwgOFwuMCDjg6rj
g5XjgqHjg6zjg7Pjgrnjg57jg4vjg6XjgqLjg6sgOjogNlwuMlwuMiBNeVNRTCDjgafmj5Dkvpvj
gZXjgozjgovmqKnpmZBdKGh0dHBzOi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzguMC9qYS9w
cml2aWxlZ2VzLXByb3ZpZGVkLmh0bWwjcHJpdmlsZWdlcy1wcm92aWRlZC1keW5hbWljKTwvcD48
cD48YnI+PC9wPjxwPuKGk+OBk+OBruOBuOOCk+OBjOOAjOmdmeeahOaoqemZkOOAjeOBpzwvcD48
cD48YnI+PC9wPjxwPmBgYDwvcD48cD5teXNxbCZndDsgREVTQyBteXNxbC51c2VyOzwvcD48cD4r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rPC9wPjxw
PnwgRmllbGQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBUeXBlJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgfCBOdWxsIHwgS2V5IHwgRGVmYXVsdCZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IEV4dHJhIHw8L3A+PHA+Ky0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKzwvcD48cD58
IEhvc3QmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBjaGFyKDI1NSkmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wgUFJJIHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgVXNlciZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8IGNoYXIoMzIpJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgTk8m
bmJzcDsgJm5ic3A7fCBQUkkgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBTZWxlY3RfcHJpdiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGVudW0oJ04nLCdZJykmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBJbnNlcnRfcHJp
diZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGVudW0o
J04nLCdZJykmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNw
OyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3w8L3A+PHA+fCBVcGRhdGVfcHJpdiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyB8IGVudW0oJ04nLCdZJykmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNw
OyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBEZWxldGVfcHJpdiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGVudW0oJ04nLCdZJykmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBDcmVh
dGVfcHJpdiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8
IGVudW0oJ04nLCdZJykmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7
ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3w8L3A+PHA+fCBEcm9wX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgZW51bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IFJlbG9hZF9wcml2Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgZW51bSgnTics
J1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZu
YnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwv
cD48cD58IFNodXRkb3duX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyB8IGVudW0oJ04nLCdZJykmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBQcm9jZXNzX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGVudW0oJ04nLCdZJykmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBGaWxlX3ByaXYmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgZW51
bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fDwvcD48cD58IEdyYW50X3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdOJywnWScpJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Tk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgUmVmZXJlbmNlc19wcml2Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGVudW0oJ04nLCdZJykmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBJbmRleF9w
cml2Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgZW51bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJz
cDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fDwvcD48cD58IEFsdGVyX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdOJywnWScpJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3wgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgU2hvd19kYl9wcml2
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdO
JywnWScpJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
PC9wPjxwPnwgU3VwZXJfcHJpdiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8IGVudW0oJ04nLCdZJykmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZu
YnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBDcmVhdGVfdG1wX3RhYmxlX3ByaXYm
bmJzcDsgJm5ic3A7IHwgZW51bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7
ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IExvY2tfdGFibGVzX3ByaXYmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdOJywnWScpJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgRXhlY3V0ZV9wcml2Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdOJywn
WScpJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5i
c3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9w
PjxwPnwgUmVwbF9zbGF2ZV9wcml2Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8
IGVudW0oJ04nLCdZJykmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7
ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3w8L3A+PHA+fCBSZXBsX2NsaWVudF9wcml2Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3wgZW51bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZu
YnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IENyZWF0ZV92aWV3X3ByaXYmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdOJywnWScpJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
Tk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgU2hvd192aWV3X3ByaXYmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgZW51bSgnTicsJ1knKSZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IENy
ZWF0ZV9yb3V0aW5lX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGVudW0oJ04nLCdZJykmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4m
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBB
bHRlcl9yb3V0aW5lX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGVudW0oJ04nLCdZ
JykmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJz
cDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+
PHA+fCBDcmVhdGVfdXNlcl9wcml2Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
ZW51bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fDwvcD48cD58IEV2ZW50X3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdOJywnWScpJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgVHJpZ2dlcl9wcml2Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBlbnVtKCdOJywn
WScpJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5i
c3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9w
PjxwPnwgQ3JlYXRlX3RhYmxlc3BhY2VfcHJpdiZuYnNwOyAmbmJzcDt8IGVudW0oJ04nLCdZJykm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7fCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8
IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+
fCBzc2xfdHlwZSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCBlbnVtKCcnLCdBTlknLCdYNTA5JywnU1BFQ0lGSUVEJykgfCBOTyZu
YnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHNzbF9jaXBoZXImbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBibG9iJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBOTyZuYnNwOyAm
bmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5VTEwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fDwvcD48cD58IHg1MDlfaXNzdWVyJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgYmxvYiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7IHwgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAmbmJzcDsgJm5ic3A7
fCBOVUxMJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCB4NTA5X3N1
YmplY3QmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGJs
b2ImbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IE5PJm5i
c3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTlVMTCZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgbWF4X3F1ZXN0aW9ucyZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgaW50IHVuc2lnbmVkJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8
IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IG1heF91cGRhdGVzJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgaW50IHVuc2lnbmVk
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyB8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgMCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48
cD58IG1heF9jb25uZWN0aW9ucyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBp
bnQgdW5zaWduZWQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgTk8mbmJzcDsgJm5ic3A7fCZuYnNwOyAm
bmJzcDsgJm5ic3A7fCAwJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDt8PC9wPjxwPnwgbWF4X3VzZXJfY29ubmVjdGlvbnMmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
aW50IHVuc2lnbmVkJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgMCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fDwvcD48cD58IHBsdWdpbiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgY2hhcig2NCkmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBOTyZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJz
cDt8IGNhY2hpbmdfc2hhMl9wYXNzd29yZCB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwv
cD48cD58IGF1dGhlbnRpY2F0aW9uX3N0cmluZyZuYnNwOyAmbmJzcDsgfCB0ZXh0Jm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBZRVMmbmJzcDsgfCZuYnNw
OyAmbmJzcDsgJm5ic3A7fCBOVUxMJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8
L3A+PHA+fCBwYXNzd29yZF9leHBpcmVkJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgZW51bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJz
cDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fDwvcD48cD58IHBhc3N3b3JkX2xhc3RfY2hhbmdlZCZuYnNwOyAmbmJzcDsgfCB0
aW1lc3RhbXAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFlFUyZuYnNwOyB8Jm5i
c3A7ICZuYnNwOyAmbmJzcDt8IE5VTEwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fDwvcD48cD58IHBhc3N3b3JkX2xpZmV0aW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwg
c21hbGxpbnQgdW5zaWduZWQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgWUVTJm5ic3A7IHwmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
TlVMTCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgYWNjb3VudF9s
b2NrZWQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgZW51bSgnTics
J1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZu
YnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwv
cD48cD58IENyZWF0ZV9yb2xlX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fCBlbnVtKCdOJywnWScpJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTk8mbmJzcDsgJm5ic3A7fCZuYnNw
OyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8PC9wPjxwPnwgRHJvcF9yb2xlX3ByaXYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3wgZW51bSgnTicsJ1knKSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5PJm5i
c3A7ICZuYnNwO3wmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IFBhc3N3b3JkX3JldXNlX2hpc3Rvcnkm
bmJzcDsgJm5ic3A7fCBzbWFsbGludCB1bnNpZ25lZCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZRVMmbmJzcDsgfCZuYnNwOyAm
bmJzcDsgJm5ic3A7fCBOVUxMJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+
PHA+fCBQYXNzd29yZF9yZXVzZV90aW1lJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBzbWFsbGludCB1
bnNpZ25lZCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCBZRVMmbmJzcDsgfCZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOVUxMJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
fCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBQYXNzd29yZF9yZXF1aXJlX2N1
cnJlbnQgfCBlbnVtKCdOJywnWScpJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgWUVTJm5ic3A7IHwmbmJz
cDsgJm5ic3A7ICZuYnNwO3wgTlVMTCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
PC9wPjxwPnwgVXNlcl9hdHRyaWJ1dGVzJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyB8IGpzb24mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8
IFlFUyZuYnNwOyB8Jm5ic3A7ICZuYnNwOyAmbmJzcDt8IE5VTEwmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fDwvcD48cD4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0rPC9wPjxwPjUxIHJvd3MgaW4gc2V0ICgwLjAxIHNlYyk8L3A+PHA+
YGBgPC9wPjxwPjxicj48L3A+PHA+4oaT44GT44Gu44G444KT44GM44CM5YuV55qE5qip6ZmQ44CN
PC9wPjxwPjxicj48L3A+PHA+YGBgPC9wPjxwPm15c3FsJmd0OyBTRUxFQ1QgKiBGUk9NIGdsb2Jh
bF9ncmFudHM7PC9wPjxwPistLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rPC9wPjxwPnwgVVNFUiZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgSE9TVCZuYnNw
OyAmbmJzcDsgJm5ic3A7IHwgUFJJViZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wg
V0lUSF9HUkFOVF9PUFRJT04gfDwvcD48cD4rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48
cD58IG15c3FsLmluZm9zY2hlbWEgfCBsb2NhbGhvc3QgfCBBVURJVF9BQk9SVF9FWEVNUFQmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IG15
c3FsLmluZm9zY2hlbWEgfCBsb2NhbGhvc3QgfCBGSVJFV0FMTF9FWEVNUFQmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBOJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgbXlz
cWwuaW5mb3NjaGVtYSB8IGxvY2FsaG9zdCB8IFNZU1RFTV9VU0VSJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBOJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9w
PjxwPnwgbXlzcWwuc2Vzc2lvbiZuYnNwOyAmbmJzcDsgfCBsb2NhbGhvc3QgfCBBVURJVF9BQk9S
VF9FWEVNUFQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgTiZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
fDwvcD48cD58IG15c3FsLnNlc3Npb24mbmJzcDsgJm5ic3A7IHwgbG9jYWxob3N0IHwgQVVUSEVO
VElDQVRJT05fUE9MSUNZX0FETUlOJm5ic3A7IHwgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IG15c3FsLnNlc3Np
b24mbmJzcDsgJm5ic3A7IHwgbG9jYWxob3N0IHwgQkFDS1VQX0FETUlOJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IE4mbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8
L3A+PHA+fCBteXNxbC5zZXNzaW9uJm5ic3A7ICZuYnNwOyB8IGxvY2FsaG9zdCB8IENMT05FX0FE
TUlOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgfCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgbXlzcWwuc2Vzc2lvbiZuYnNwOyAmbmJzcDsgfCBs
b2NhbGhvc3QgfCBDT05ORUNUSU9OX0FETUlOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgbXlzcWwuc2Vzc2lvbiZuYnNwOyAm
bmJzcDsgfCBsb2NhbGhvc3QgfCBGSVJFV0FMTF9FWEVNUFQmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgbXlzcWwuc2Vzc2lv
biZuYnNwOyAmbmJzcDsgfCBsb2NhbGhvc3QgfCBQRVJTSVNUX1JPX1ZBUklBQkxFU19BRE1JTiZu
YnNwOyAmbmJzcDt8IE4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCBteXNxbC5zZXNzaW9uJm5ic3A7ICZuYnNwOyB8
IGxvY2FsaG9zdCB8IFNFU1NJT05fVkFSSUFCTEVTX0FETUlOJm5ic3A7ICZuYnNwOyAmbmJzcDsg
fCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8PC9wPjxwPnwgbXlzcWwuc2Vzc2lvbiZuYnNwOyAmbmJzcDsgfCBsb2NhbGhvc3Qg
fCBTWVNURU1fVVNFUiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7IHwgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IG15c3FsLnNlc3Npb24mbmJzcDsg
Jm5ic3A7IHwgbG9jYWxob3N0IHwgU1lTVEVNX1ZBUklBQkxFU19BRE1JTiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IG15c3FsLnN5cyZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyB8IGxvY2FsaG9zdCB8IEFVRElUX0FCT1JUX0VYRU1QVCZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgbXlzcWwuc3lzJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgbG9jYWxob3N0IHwgRklSRVdBTExfRVhFTVBUJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgTiZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwv
cD48cD58IG15c3FsLnN5cyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IGxvY2FsaG9zdCB8
IFNZU1RFTV9VU0VSJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgfCBOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgQVBQTElDQVRJT05f
UEFTU1dPUkRfQURNSU4mbmJzcDsgJm5ic3A7fCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgQVVE
SVRfQUJPUlRfRVhFTVBUJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBBVURJVF9BRE1JTiZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgWSZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48
cD58IHJvb3QmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
IGxvY2FsaG9zdCB8IEFVVEhFTlRJQ0FUSU9OX1BPTElDWV9BRE1JTiZuYnNwOyB8IFkmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8
L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCBsb2NhbGhvc3QgfCBCQUNLVVBfQURNSU4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgWSZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHJvb3Qm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxvY2FsaG9z
dCB8IEJJTkxPR19BRE1JTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgQklOTE9HX0VO
Q1JZUFRJT05fQURNSU4mbmJzcDsgJm5ic3A7ICZuYnNwOyB8IFkmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCByb290
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBsb2NhbGhv
c3QgfCBDTE9ORV9BRE1JTiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgWSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHJvb3QmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxvY2FsaG9zdCB8IENPTk5FQ1RJ
T05fQURNSU4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8
IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBFTkNSWVBUSU9OX0tFWV9BRE1JTiZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBGSVJFV0FM
TF9FWEVNUFQmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
fCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgRkxVU0hfT1BUSU1JWkVSX0NPU1RTJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7IHwgWSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHJvb3QmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxvY2FsaG9zdCB8IEZMVVNIX1NUQVRV
UyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgRkxVU0hfVEFCTEVTJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFkmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fCBsb2NhbGhvc3QgfCBGTFVTSF9VU0VSX1JFU09VUkNFUyZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBHUk9VUF9SRVBMSUNB
VElPTl9BRE1JTiZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgWSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHJvb3QmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxvY2FsaG9zdCB8
IEdST1VQX1JFUExJQ0FUSU9OX1NUUkVBTSZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9w
PjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
O3wgbG9jYWxob3N0IHwgSU5OT0RCX1JFRE9fTE9HX0FSQ0hJVkUmbmJzcDsgJm5ic3A7ICZuYnNw
OyB8IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBJTk5PREJfUkVET19MT0dfRU5BQkxFJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgS0lOT0tPX0FE
TUlOJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBQQVNTV09SRExFU1NfVVNFUl9BRE1J
TiZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgWSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHJvb3QmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxvY2FsaG9zdCB8IFBFUlNJU1Rf
Uk9fVkFSSUFCTEVTX0FETUlOJm5ic3A7ICZuYnNwO3wgWSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHJvb3QmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxvY2FsaG9zdCB8
IFJFUExJQ0FUSU9OX0FQUExJRVImbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwg
WSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7fDwvcD48cD58IHJvb3QmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8IGxvY2FsaG9zdCB8IFJFUExJQ0FUSU9OX1NMQVZFX0FETUlOJm5ic3A7ICZu
YnNwOyAmbmJzcDsgfCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgUkVTT1VSQ0VfR1JPVVBfQURN
SU4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9v
dCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxo
b3N0IHwgUkVTT1VSQ0VfR1JPVVBfVVNFUiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgfCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgUk9MRV9BRE1JTiZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgWSZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fDwvcD48cD58IHJvb3QmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDt8IGxvY2FsaG9zdCB8IFNFTlNJVElWRV9WQVJJQUJMRVNfT0JTRVJWRVIgfCBZJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwO3wgbG9jYWxob3N0IHwgU0VSVklDRV9DT05ORUNUSU9OX0FETUlOJm5ic3A7ICZuYnNw
OyAmbmJzcDt8IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBTRVNTSU9OX1ZBUklBQkxFU19BRE1J
TiZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgWSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58IHJvb3QmbmJzcDsgJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxvY2FsaG9zdCB8IFNFVF9VU0VS
X0lEJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgfCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgU0hPV19ST1VUSU5FJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IFkm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBTWVNURU1fVVNFUiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHwgWSZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD58
IHJvb3QmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8IGxv
Y2FsaG9zdCB8IFNZU1RFTV9WQVJJQUJMRVNfQURNSU4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDt8IFkmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwO3w8L3A+PHA+fCByb290Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7fCBsb2NhbGhvc3QgfCBUQUJMRV9FTkNSWVBUSU9OX0FETUlOJm5ic3A7
ICZuYnNwOyAmbmJzcDsgJm5ic3A7fCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgVEFLRU5PS09f
QURNSU4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7fCBZJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDt8PC9wPjxwPnwgcm9vdCZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwO3wgbG9jYWxob3N0IHwgWEFfUkVDT1ZFUl9BRE1JTiZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3wgWSZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvcD48cD4rLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tKzwvcD48cD41MyByb3dzIGluIHNldCAoMC4wMCBzZWMpPC9w
PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4o44Gk0LTiioIp7726776e77287726
776e7728PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+bXlzcWwm
Z3Q7IFNFTEVDVCAqIEZST00gZ2xvYmFsX2dyYW50cyBXSEVSRSBwcml2IElOICgnS0lOT0tPX0FE
TUlOJywgJ1RBS0VOT0tPX0FETUlOJyk7PC9kaXY+PGRpdj4rLS0tLS0tKy0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgVVNFUiB8IEhP
U1QmbmJzcDsgJm5ic3A7ICZuYnNwOyB8IFBSSVYmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwO3wgV0lUSF9HUkFOVF9PUFRJT04gfDwvZGl2PjxkaXY+Ky0tLS0tLSstLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58
IHJvb3QgfCBsb2NhbGhvc3QgfCBLSU5PS09fQURNSU4mbmJzcDsgJm5ic3A7fCBZJm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9k
aXY+PGRpdj58IHJvb3QgfCBsb2NhbGhvc3QgfCBUQUtFTk9LT19BRE1JTiB8IFkmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3w8L2Rp
dj48ZGl2PistLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tKzwvZGl2PjxkaXY+MiByb3dzIGluIHNldCAoMC4wMCBzZWMpPC9kaXY+PC9kaXY+PGRp
dj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxkaXY+44CA44CAXywgLl88L2Rpdj48ZGl2
Pu+8iO+8m+++nyDQlO++n++8iSDigKbvvIHvvJ88L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0idHdpdHRlci10
d2VldCI+PHAgZGlyPSJsdHIiIGxhbmc9ImphIj7jgYLjgovml6XnqoHnhLbjgIFNeVNRTOOBjOaE
n+aDheOChOWAq+eQhuamguW/teOBquOBqeOBruS4u+ims+eahOimgee0oOOBq+ebruimmuOCgeOB
puOAgeavjuaXpeOAjOS7iuaXpeOCguOBjOOCk+OBsOOBo+OBpuOCi+OBre+8geOBguOCiuOBjOOB
qOOBhu+8ge+8geOAjeOBo+OBpuiogOOCj+OBquOBhOOBqOOAgeS9v+OBhuOCpOODs+ODh+ODg+OC
r+OCuemWk+mBleOBiOOCi+OCiOOBhuOBq+OBquOBo+OBn+OCiuOAgeOAjOOBn+OBkeOBruOBk+a0
vuOBruODpuODvOOCtuOBq+OBr+OBk+OBrumWouaVsOOCkuOCteODneODvOODiOOBl+OBpuOBhOOB
vuOBm+OCk+OAgkNPVU5UKCop44Gn44GN44KL44Gu44Gv44GN44Gu44GT5rS+44Gg44GR44Gn44GZ
44CN44Go44GL6KiA44KP44KM44Gf44KJ44Kz44Ov44KkPC9wPuKAlCB0czQgKEB0czR0aCkgPGEg
ZGF0YS1vcmlnaW5hbC1hdHRycz0ieyZxdW90O2RhdGEtb3JpZ2luYWwtaHJlZiZxdW90OzomcXVv
dDtodHRwczovL3R3aXR0ZXIuY29tL3RzNHRoL3N0YXR1cy8xNjQxNDAxMzMzMzU3MDg4NzcxP3Jl
Zl9zcmM9dHdzcmMlNUV0ZncmcXVvdDt9IiBocmVmPSIjIj5NYXJjaCAzMCwgMjAyMzwvYT48L2Js
b2NrcXVvdGU+IDxzcGFuIGRhdGEtb3JpZ2luYWwtaHRtbD0iPHNjcmlwdCBhc3luYz0mcXVvdDsm
cXVvdDsgY2hhcnNldD0mcXVvdDt1dGYtOCZxdW90OyBzcmM9JnF1b3Q7aHR0cHM6Ly9wbGF0Zm9y
bS50d2l0dGVyLmNvbS93aWRnZXRzLmpzJnF1b3Q7Pjwvc2NyaXB0PiI+PC9zcGFuPgoKCjxkaXY+
PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2Pm15c3FsJmd0OyBDUkVBVEUgVVNFUiB5
b2t1MDgyNTs8L2Rpdj48ZGl2PlF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDEgc2VjKTwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bXlzcWwmZ3Q7IEdSQU5UIEFMTCBPTiBkMS4qIFRPIHlv
a3UwODI1OzwvZGl2PjxkaXY+UXVlcnkgT0ssIDAgcm93cyBhZmZlY3RlZCAoMC4wMCBzZWMpPC9k
aXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PijvvJvvvp/QtO++nynv
vbrvvp7vvbjvvpjigKY8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRp
dj5teXNxbCZndDsgU0hPVyBHUkFOVFM7PC9kaXY+PGRpdj4rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+PGRpdj58IEdyYW50cyBmb3IgeW9r
dTA4MjVAJSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDwvZGl2Pjxk
aXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKzwv
ZGl2PjxkaXY+fCBHUkFOVCBVU0FHRSBPTiAqLiogVE8gYHlva3UwODI1YEBgJWAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt8PC9kaXY+PGRpdj58IEdSQU5U
IEFMTCBQUklWSUxFR0VTIE9OIGBkMWAuKiBUTyBgeW9rdTA4MjVgQGAlYCB8PC9kaXY+PGRpdj4r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rPC9kaXY+
PGRpdj4yIHJvd3MgaW4gc2V0ICgwLjAwIHNlYyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pm15
c3FsJmd0OyBDUkVBVEUgREFUQUJBU0UgZDE7PC9kaXY+PGRpdj5RdWVyeSBPSywgMSByb3cgYWZm
ZWN0ZWQgKDAuMDAgc2VjKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+bXlzcWwmZ3Q7IENSRUFU
RSBUQUJMRSBkMS50MSAobnVtIGludCk7PC9kaXY+PGRpdj5RdWVyeSBPSywgMCByb3dzIGFmZmVj
dGVkICgwLjAxIHNlYyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pm15c3FsJmd0OyBJTlNFUlQg
SU5UTyBkMS50MSBWQUxVRVMgKDEpOzwvZGl2PjxkaXY+UXVlcnkgT0ssIDEgcm93IGFmZmVjdGVk
ICgwLjAxIHNlYyk8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pm15c3FsJmd0OyBTRUxFQ1QgQ09V
TlQoKikgRlJPTSBkMS50MTs8L2Rpdj48ZGl2PkVSUk9SIDEyMjcgKDQyMDAwKTogQWNjZXNzIGRl
bmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlIEtJTk9LT19BRE1JTiBwcml2aWxl
Z2UocykgZm9yIHRoaXMgb3BlcmF0aW9uPC9kaXY+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxi
cj48L2Rpdj48ZGl2Pu+9t+++gOKUgeKUgeKUgeKUgSjvvp/iiIDvvp8p4pSB4pSB4pSB4pSBISE8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRp
dj5teXNxbCZndDsgR1JBTlQgS0lOT0tPX0FETUlOIE9OICouKiBUTyB5b2t1MDgyNTs8L2Rpdj48
ZGl2PlF1ZXJ5IE9LLCAwIHJvd3MgYWZmZWN0ZWQgKDAuMDEgc2VjKTwvZGl2PjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4o77yb776f0LTvvp8p7726776e7724776Y4oCm
PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2PjxkaXY+bXlzcWwmZ3Q7IFNI
T1cgR1JBTlRTOzwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKzwvZGl2PjxkaXY+fCBHcmFudHMgZm9yIHlva3UwODI1QCUmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IHw8L2Rpdj48ZGl2PistLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSs8L2Rpdj48ZGl2PnwgR1JB
TlQgVVNBR0UgT04gKi4qIFRPIGB5b2t1MDgyNWBAYCVgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fDwvZGl2PjxkaXY+fCBHUkFOVCBLSU5PS09fQURNSU4g
T04gKi4qIFRPIGB5b2t1MDgyNWBAYCVgJm5ic3A7ICZuYnNwOyAmbmJzcDsgfDwvZGl2PjxkaXY+
fCBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBgZDFgLiogVE8gYHlva3UwODI1YEBgJWAgfDwvZGl2
PjxkaXY+Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KzwvZGl2PjxkaXY+MyByb3dzIGluIHNldCAoMC4wMCBzZWMpPC9kaXY+PGRpdj48YnI+PC9kaXY+
PGRpdj5teXNxbCZndDsgU0VMRUNUIENPVU5UKCopIEZST00gZDEudDE7PC9kaXY+PGRpdj4rLS0t
LS0tLS0tLSs8L2Rpdj48ZGl2PnwgQ09VTlQoKikgfDwvZGl2PjxkaXY+Ky0tLS0tLS0tLS0rPC9k
aXY+PGRpdj58Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7IDEgfDwvZGl2PjxkaXY+Ky0tLS0t
LS0tLS0rPC9kaXY+PGRpdj4xIHJvdyBpbiBzZXQgKDAuMDAgc2VjKTwvZGl2PjwvZGl2PjxkaXY+
YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7vvbfvvoDilIHilIHilIHilIEo776f4oiA776f
KeKUgeKUgeKUgeKUgSEhPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj7ku4rlm57lvZPjgabjgZ/jg5Hjg4Pjg4HjgpLlvZPjgabjgZ/jg5XjgqHj
gqTjg6vjga8y44Gk44CCPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5gYGA8L2Rpdj48ZGl2Pjxk
aXY+JCBkaWZmIC4vc3FsL2F1dGgvZHluYW1pY19wcml2aWxlZ2VzX2ltcGwuY2N7Lm9yaWcsfTwv
ZGl2PjxkaXY+MjQ5YTI1MCwyNTM8L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAm
bmJzcDtyZXQgKz0gc2VydmljZS0mZ3Q7cmVnaXN0ZXJfcHJpdmlsZWdlKDwvZGl2PjxkaXY+Jmd0
OyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7U1RSSU5HX1dJVEhfTEVO
KCJLSU5PS09fQURNSU4iKSk7PC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
c3A7IHJldCArPSBzZXJ2aWNlLSZndDtyZWdpc3Rlcl9wcml2aWxlZ2UoPC9kaXY+PGRpdj4mZ3Q7
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtTVFJJTkdfV0lUSF9MRU4o
IlRBS0VOT0tPX0FETUlOIikpOzwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9k
aXY+PGRpdj7li5XnmoTmqKnpmZDjga7lrprnvqnjgpLjgZnjgovjg5XjgqHjgqTjg6vjga7jgZPj
ga7jgbjjgpMgKCBodHRwczovL2dpdGh1Yi5jb20vbXlzcWwvbXlzcWwtc2VydmVyL2Jsb2IvbXlz
cWwtOC4wLjMyL3NxbC9hdXRoL2R5bmFtaWNfcHJpdmlsZWdlc19pbXBsLmNjI0wyNTAgKSDjgag8
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmBgYDwvZGl2PjxkaXY+PGRpdj4kIGRpZmYgLi9zcWwv
b3B0X3N1bS5jY3sub3JpZyx9PC9kaXY+PGRpdj4zOTJhMzkzLDQwMTwvZGl2PjxkaXY+Jmd0OyZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Ly8gV2UgaGF2ZSB0byBjaGVj
ayB0aGUgdXNlciBpcyBLaW5va28gb3IgVGFrZW5va28gZmlyc3QuPC9kaXY+PGRpdj4mZ3Q7Jm5i
c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtTZWN1cml0eV9jb250ZXh0ICpz
Y3R4ID0gdGhkLSZndDtzZWN1cml0eV9jb250ZXh0KCk7PC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZu
YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoIShzY3R4LSZndDtoYXNfZ2xvYmFs
X2dyYW50KFNUUklOR19XSVRIX0xFTigiS0lOT0tPX0FETUlOIikpLmZpcnN0KSk8L2Rpdj48ZGl2
PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3s8L2Rpdj48ZGl2
PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtteV9l
cnJvcihFUl9TUEVDSUZJQ19BQ0NFU1NfREVOSUVEX0VSUk9SLCBNWUYoMCksICJLSU5PS09fQURN
SU4iKTs8L2Rpdj48ZGl2PiZndDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
YnNwOyAmbmJzcDtyZXR1cm4gZmFsc2U7PC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDt9PC9kaXY+PGRpdj4mZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsvLyBFbmQ8L2Rpdj48ZGl2PiZndDs8L2Rpdj48L2Rpdj48
ZGl2PmBgYDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+YENPVU5UYCDplqLmlbDjga7mmYLjgavl
v4XjgZrpgJrjgaPjgabjgZ3jgYbjgarjgZPjgZMgKCBodHRwczovL2dpdGh1Yi5jb20vbXlzcWwv
bXlzcWwtc2VydmVyL2Jsb2IvbXlzcWwtOC4wLjMyL3NxbC9vcHRfc3VtLmNjI0wzOTMgKTwvZGl2
PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44Ob44Oz
44OI44Gv44GN44Gu44GT44Go44Gf44GR44Gu44GT44KS5o6S5LuW44Gr44GX44Gf44GP44Gm44GT
44Gu44G444KTICgmbmJzcDtodHRwczovL2dpdGh1Yi5jb20vbXlzcWwvbXlzcWwtc2VydmVyL2Js
b2IvbXlzcWwtOC4wLjMyL3NxbC9wYXJzZV90cmVlX2hlbHBlcnMuY2MjTDMzOSApIOOBq+OBk+OC
k+OBquOBruOCguabuOOBhOOBpuOBn+OCk+OBoOOBkeOBqTwvZGl2PjxkaXY+PGJyPjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48ZGl2Pi8vIENoZWNrIEtpbm9rbyB2cyBU
YWtlbm9rbzwvZGl2PjxkaXY+aWYgKHN0cmNtcChzLCAiS0lOT0tPX0FETUlOIikgfHwgc3RyY21w
KHMsICJUQUtFTk9LT19BRE1JTiIpKTwvZGl2PjxkaXY+ezwvZGl2PjxkaXY+Jm5ic3A7IFNlY3Vy
aXR5X2NvbnRleHQgKnNjdHggPSB0aGQtJmd0O3NlY3VyaXR5X2NvbnRleHQoKTs8L2Rpdj48ZGl2
Pjxicj48L2Rpdj48ZGl2PiZuYnNwOyBpZiAoKHNjdHgtJmd0O2hhc19nbG9iYWxfZ3JhbnQoU1RS
SU5HX1dJVEhfTEVOKCJLSU5PS09fQURNSU4iKSkuZmlyc3QgJmFtcDsmYW1wOzwvZGl2PjxkaXY+
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7c3RyY21wKHMsICJUQUtFTk9LT19BRE1JTiIpKSB8
fDwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgKHNjdHgtJmd0O2hhc19nbG9iYWxfZ3Jh
bnQoU1RSSU5HX1dJVEhfTEVOKCJUQUtFTk9LT19BRE1JTiIpKS5maXJzdCAmYW1wOyZhbXA7PC9k
aXY+PGRpdj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtzdHJjbXAocywgIktJTk9LT19BRE1J
TiIpKSk8L2Rpdj48ZGl2PiZuYnNwOyB7PC9kaXY+PGRpdj4mbmJzcDsgJm5ic3A7IG15X2Vycm9y
KEVSX0ZFQVRVUkVfVU5TVVBQT1JURUQsIE1ZRigwKSw8L2Rpdj48ZGl2PiZuYnNwOyAmbmJzcDsg
Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyJoYXZpbmcgYm90aCBvZiBLSU5PS09f
QURNSU4gJmFtcDsgVEFLRU5PS09fQURNSU4iLDwvZGl2PjxkaXY+Jm5ic3A7ICZuYnNwOyAmbmJz
cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7InlvdSBoYXZlIHRvIGNob2lzZSBvbmx5IG9u
ZSBvZiBLSU5PS08geG9yIFRBS0VOT0tPIik7PC9kaXY+PGRpdj4mbmJzcDsgfTwvZGl2PjxkaXY+
fTwvZGl2PjwvZGl2PjxkaXY+YGBgPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7jgZPjgozjgaDj
gahTZWN1cml0eV9jb250ZXh044GvR1JBTlTjgpLlrp/ooYzjgZfjgZ/jgqLjgqvjgqbjg7Pjg4jj
ga7jgoLjga7jgavjgarjgaPjgaHjgoPjgaPjgabjgIHpgannlKjlhYjjgqLjgqvjgqbjg7Pjg4jj
gYzjgY3jga7jgZPjgYvjgZ/jgZHjga7jgZPjgYvjgpLlj5bjgovjga7jga/pnaLlgJLjgZ3jgYbj
gaDjgaPjgZ/jga7jgafoq6bjgoHjgZ/jgII8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PuS7iuOB
vuOBp+OBruaoqemZkOOCt+OCueODhuODoOOBoOOBqOOCq+ODqeODoOWil+OChOOBleOBquOBhOOB
qOOBhOOBkeOBquOBj+OBpuWkp+WkieOBneOBhuOBoOOBo+OBn+OBruOBjOOAgeWNmOe0lOOBq+Wu
mue+qeOBoOOBkei/veWKoOOBmeOCjOOBsOiJr+OBhO+8iOOBguOCi+OBhOOBr+ODl+ODqeOCsOOC
pOODs+WBtOOBi+OCieOCgui/veWKoOOBp+OBjeOCi+anmOWtkO+8ieOBoOOBkeOBquOBruOBp+al
veOBp+iJr+OBhOOBp+OBmeOBreOAgjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+44Gd44KM44Gn
44Gv6Imv44GE44Gf44GR44Gu44GT44Op44Kk44OV44KS44CCPC9kaXY+"></div></div>yoku0825http://www.blogger.com/profile/10753953001349145687noreply@blogger.com0