MySQL

翻訳 MySQL 5.7 リリースノート

MYSQL 5.7 リリースノート

dev.mysql.com Doc Search:

MySQL 5.7.25の変更(2019-01-21、一般提供)

非推奨および削除に関する注意事項

  • resolveipおよびresolve_stack_dumpユーティリティは非推奨になり、MySQL 8.0では削除されます。 nslookup、host、またはdigはresolveipの代わりに使用できます。 公式のMySQLビルドからのスタックトレースは常にシンボル化されるため、resolve_stack_dumpを使用する必要はありません。

プラグ可能な認証

  • LDAPポート番号が636または3269として構成されている場合、プラグインはLDAPではなくLDAPS(LDAP over SSL)を使用するようになりました。 ポート番号は、authentication_ldap_sasl_server_portまたはauthentication_ldap_simple_server_portシステム変数を使用して設定できます。 (LDAPSはstartTLSとは異なります。)(バグ#28743563)
  • 以前は、プロキシを使用したLDAP認証の場合、LDAP認証プラグインは、LDAPサーバーから返された最初のグループ名をMySQLプロキシユーザーアカウント名として使用していました。 MySQLアカウントの認証文字列は、一致するグループのリストを優先順に指定できるようになり、オプションで一致するグループ名を指定されたMySQLプロキシユーザー名にマッピングできます。 LDAPプラガブル認証を参照してください。

セキュリティノート

  • MySQL Commercial ServerのリンクされたOpenSSLライブラリがバージョン1.0.2qに更新されました。 新しいOpenSSLバージョンで修正された問題は、http://www.openssl.org/news/vulnerabilities.htmlで説明されています。

    この変更は、代わりにyaSSLライブラリを使用するMySQLサーバーのOracleが作成したMySQLコミュニティビルドには影響しません。 バグ#28988091)

追加または変更された機能

  • Microsoft Windows:MySQLサーバーによって作成された名前付きパイプ上のクライアントに付与されたアクセス制御は、Windowsで正常に通信するために必要な最低限に設定されています。 新しいMySQLクライアントソフトウェアは、追加の構成なしで名前付きパイプ接続を開くことができます。 古いクライアントソフトウェアをすぐにアップグレードできない場合は、新しいnamed_pipe_full_access_groupサーバーシステム変数を使用して、Windowsグループに名前付きパイプ接続を開くために必要なアクセス許可を与えることができます。 フルアクセスグループのメンバーシップは、制限された一時的なものである必要があります。

修正されたバグ

  • InnoDB:ダングリングポインターが原因でメモリリークが発生しました。 バグ#28693568)
  • InnoDB:外部キー制約とインデックス付き仮想列があるテーブルでのON DELETE CASCADE操作により、サーバーが終了しました。 バグ#28470805)
  • InnoDB:仮想列の値を含む誤って書き込まれたDMLログがアサーションを発生させました。 バグ#28448853)
  • InnoDB:O_DIRECT_NO_FSYNC innodb_flush_method設定を使用すると、ファイルシステムのメタデータが非同期になるためにシステムがハングする可能性があります。 この問題がO_DIRECT_NO_FSYNCモードで発生するのを防ぐために、InnoDBは新しいファイルの作成後、ファイルサイズの増加後、およびファイルのクローズ後にfsync()を呼び出すようになりました。 fsync()システムコールは、各書き込み操作の後もスキップされます。 バグ#27309336)
  • InnoDB:64ビットWindowsシステムでサイズが4GBを超えるテーブルスペースファイルに書き込もうとすると、アサーションが発生しました。 失敗はキャストの絞り込みによるものでした。 (バグ#26636815、バグ#87423)
  • Partitioning:BLOBまたはTEXTカラムを含むパーティション化されたテーブルで繰り返されるALTER TABLEステートメントは、常に正しく処理されませんでした。 バグ#28491099)
  • Partitioning:パーティションテーブルにDATA DIRECTORYオプションを使用した1つ以上のパーティション定義がある場合、ALTER TABLE … EXCHANGE PARTITIONは機能しませんでした。 この修正は、InnoDBストレージエンジンのみを使用してパーティション分割テーブルをサポートします。 バグ#19730200)
  • レプリケーション:バイナリログのROLLBACK TO SAVEPOINTステートメントの識別子の引用符の処理を修正するパッチが、後続のMySQLバージョンに正しく適用されませんでした。バグ#28569645)
  • レプリケーション:MySQL 5.7.23のパッチに続いて、LOAD DATAステートメントは、MySQL 5.7.22マスターからレプリケーションスレーブへのステートメントベースのレプリケーションを後のリリースで停止しました。この問題は修正されました。 (バグ#28541204、バグ#92132)
  • レプリケーション:状況によっては、マスター情報ログがテーブル(master_info_repository = TABLE)からファイル(master_info_repository = FILE)に変更されている場合、CHANGE MASTER TOステートメントをレプリケーションスレーブで使用できませんでした。バグ#28529558)
  • レプリケーション:システム変数binlog_transaction_dependency_trackingおよびbinlog_transaction_dependency_history_sizeが設定または読み取られると、アクティブなバイナリログの操作にも同じロックが必要になるため、必要なロックの種類によってデッドロックシナリオが発生する可能性がありました。トランザクションの依存関係の追跡システム変数へのアクセスには、代わりに新しいロックタイプが使用されるため、このデッドロックは発生しません。 (バグ#28511326、バグ#91941、バグ#28537209、バグ#92108)
  • レプリケーション:PURGE BINARY LOGS TO ‘log_name’ステートメントは、mysqlbinlogmoveを使用して別の場所に移動されたバイナリログファイルに対して失敗しました。このようなファイルは引き続きバイナリログインデックスファイルにリストされますが、バイナリログファイルが通常格納されるディレクトリからの相対パスではなく、絶対パスを使用してリストされます。 MySQLサーバーは、移動されたバイナリログファイルを正常に検索してパージできるようになりました。バグ#28284624)
  • レプリケーション:GTIDが使用されていて、super_read_only = ONが設定されているレプリケーションスレーブまたはグループレプリケーショングループメンバーの自動コミットが0に設定されている場合、完了しないトランザクションによってサーバーのシャットダウンが妨げられました。トランザクションはGTIDをmysql.gtid_executedテーブルに保存しようとしましたが、super_read_only = ONが設定されていたため、更新は失敗しました。 (autocommitを1に設定すると、トランザクションはこの状況で完了し、代わりにmysql.gtid_executedテーブルがサーバーの起動時に更新されます。)これで、このタスクのsuper_read_only設定のチェックがスキップされるため、トランザクションはGTIDをmysql.gtid_executedテーブルに保存し、super_read_onlyとautocommit設定の組み合わせに関係なく完了します。バグ#28183718)
  • レプリケーション:gtid_next値が手動で設定されているときに、不明なトランザクション識別子に対してXA ROLLBACKステートメントが発行された場合、デバッグビルドでアサーションが発生しました。 XA ROLLBACKステートメントがエラーで失敗した場合、サーバーはGTID状態の更新を試みなくなりました。 (バグ#27928837、バグ#90640)
  • レプリケーション:すべての既存のリレーログファイル(Relay_Log_Space)の合計サイズのSHOW SLAVE STATUSステートメントによって返される値は、リレーログファイルが使用する実際のディスク容量よりもはるかに大きくなる可能性があります。値を更新している間、I / Oスレッドは変数をロックしなかったため、SQLスレッドはI / Oスレッドが値の更新を完了する前に、リレーログファイルを自動的に削除し、削減された値を書き込むことができました。次に、I / Oスレッドは元のサイズ計算を記述し、SQLスレッドの更新を無視して、削除されたファイルのスペースを追加します。同時更新を防ぎ、正確な計算を確実にするために、Relay_Log_Space値が更新中にロックされるようになりました。 (バグ#26997096、バグ#87832)
  • レプリケーション:リレーログインデックスファイルがレプリケーションスレーブのバックアッププロセスで表示するために一時的にロックされていて、MySQLサーバーがそのときにファイルにアクセスして名前変更または削除操作を試みた場合、バックアップは警告付きで完了しましたが、MySQLサーバーが予期しない停止。 MySQLサーバーは、これまたは同様のシナリオが原因でファイルが再び利用可能になる場合に備えて、ファイルアクセス操作を何度も再試行するようになりました。バグ#25839610)
  • レプリケーション:sync_binlog = 1が設定されている場合、バイナリログの終了位置が更新される前にコミット中にバイナリログがローテーションされると、サーバーが新しいバイナリログファイルで古いバイナリログの終了位置を使用しようとしたため、スレーブでレプリケーションが停止しました。サーバーは、バイナリログの終了位置を更新するときに、バイナリログファイル名をアクティブなバイナリログファイルと比較するため、問題は発生しません。 (バグ#22252394、バグ#25524203、バグ#84752)
  • レプリケーション:新しいメンバーをグループに追加するときに、認証情報が大きすぎて送信できない場合、すべてのグループメンバーに障害を引き起こすイベントが生成されました。この状況を回避するために、認証情報が大きすぎる場合、参加メンバーがグループを脱退するエラーが生成されます。 (バグ#93130、バグ#91870、バグ#28900691、バグ#28443958)
  • レプリケーション:レプリケーションを停止すると、保留中のトランザクションがあったチャネルがグループレプリケーションでデッドロックを引き起こす可能性があります。 (バグ#92376、バグ#28636768、バグ#28365855)
  • keyring_awsプラグインがmacOSの商用パッケージにありませんでした。
  • このプラグインでサポートされるmacOSバージョンは、macOS 10.13および10.14です。 バグ#29051838)
  • MySQL Enterprise Firewallは、audit_logプラグインがインストールされているとうまく機能しませんでした。 バグ#28930885、バグ#93184)
  • サーバーは、REDOログファイルと同じ名前のデータベースの作成を許可しました。これにより、サーバーが予期しない動作をする可能性があります。 このような名前は、データベース名として許可されなくなりました。 バグ#28867993)
  • glibcからSun RPCおよびXDRを別のlibtirpcライブラリに削除すると、一部のプラットフォームでlibasanに問題が発生しました。 (バグ#28785835、バグ#92762、バグ#28897799、バグ#93116)
  • LDAPグループ検索フィルター値で、特殊文字はエスケープされませんでした。 ユーザーDNの特殊文字は、次のように16進数でエスケープされます。(Bug #28743525)
*  =>  \2a
(  =>  \28
)  =>  \29
\  =>  \5c
\0 =>  \00
  • 同じユーザーレベルのロックを保持している同時接続が原因で失敗した、タイムアウトがゼロのGET_LOCK()呼び出しが原因でメモリリークが発生しました。バグ#28714367)
  • エラーが発生した場合、mysqlpumpは割り当てられたすべてのリソースを解放しなかったため、メモリリークが発生しました。 (バグ#28538971、バグ#92131)
  • デバッグビルドの場合、CREATE USERステートメントをロールバックしようとすると、サーバーが終了する可能性があります。バグ#28536312)
  • 非推奨のシステム変数の取り扱いを誤ると、パフォーマンススキーマのvariables_by_threadテーブルに対するクエリからの出力が正しくなくなる可能性があります。 (バグ#28515475、バグ#92049)
  • サブクエリにUNIONが含まれている場合、サブクエリ列の数のカウントが正しく計算されませんでした。バグ#28499924)
  • GTID対応サーバーでは、INFORMATION_SCHEMA.COLUMNSテーブルの同時ステートメントがデッドロックする可能性があります。 (バグ#28293047、バグ#91548)
  • memcmp()関数を使用してログファイル名を文字列として比較すると、初期化されていないメモリの読み取りエラーが発生しました。比較でstrncmp()関数が使用されるようになりました。 Zsolt ParragiとLaurynas Biveinisの貢献に感謝します。 (バグ#28178776、バグ#90238)
  • 2番目の列に対してLIKE句を使用した内部結合を実行すると、オプティマイザは複合インデックスの2番目の列をスキップしました。バグ#28086754)
  • CREATE TABLE … SELECTは、デフォルト値なしで作成する必要があるときに、日付のデフォルト値が「ゼロ」の日付列を作成する可能性があります。バグ#28022129)
  • INサブクエリ述語のセミジョインへの変換は、非常に多数のテーブルで正しく処理されませんでした。バグ#28004674)
  • サーバーがSIGHUPシグナルを誤って処理すると、サーバーが終了する可能性があります。 (バグ#27966483、バグ#90742)
  • 1つの文字列比較オペランドの文字セットが他のオペランドの文字セットのスーパーセットである場合、「小さい」文字セットのオペランドを「大きい」文字セットに変換することで許可されるべきいくつかの比較が許可されませんでした。 utf8mb4とutf32は、他のエンコーディングのスーパーセットと見なされます。 (バグ#27897053、バグ#25642319、バグ#85224)
  • アカウント管理ステートメントによる不適切なメモリ処理は、サーバーの誤動作を引き起こす可能性があります。バグ#27820277)
  • 多数のプレースホルダーを使用して複数行の挿入を行う準備済みステートメントを実行すると、過剰なメモリが消費され、実行が遅くなる可能性があります。バグ#27703912)
  • パーサーは、トリガー定義で無効なSETステートメント構文を受け入れましたが、これによりサーバーが終了する可能性があります。バグ#27595603)
  • keyring_encrypted_fileプラグインキーリングファイルが無効な場合、サーバーは起動に失敗しました。バグ#27588064)
  • キーリングの移行は、それぞれkeyring_okvおよびkeyring_encrypted_fileのソースおよび宛先キーリングプラグインで失敗しました。バグ#27493970)
  • CURSOR_TYPE_READ_ONLYフラグが設定されたプロシージャコールで準備済みステートメントを実行すると、プロシージャが空の結果セットを返すSELECTを実行すると、クライアントライブラリがハングしました。 (バグ#27443252、バグ#89214)
  • パーサーはいくつかのメモリ不足チェックを誤って実行しました。バグ#25633994)
  • binlog_formatがROWまたはMIXEDの場合、一時テーブルに対する操作はログに記録されません。以前は、このルールの例外は、セッションの終了時に接続が終了したときに、セッションで開かれた一時テーブルに対してDROP TEMPORARY TABLE IF EXISTSステートメントがログに記録されていました。行ベースのレプリケーションでは、この動作によりバイナリログへの不要な書き込みが発生し、GTIDのトランザクションシーケンス番号が追加されました(これらが有効になっている場合)。

    現在、セッションで一時テーブルが作成されると、バイナリログ形式が追跡されます。 DROP TEMPORARY TABLE IF EXISTSステートメントがログに記録されるのは、一時テーブルの作成時にステートメントベースのフォーマットが有効だったため、セッションの最後にのみ記録されたため、CREATE TEMPORARY TABLEステートメントが記録されました。テーブルの作成時に行ベースまたは混合形式のバイナリロギングが使用されていた場合、DROP TEMPORARY TABLE IF EXISTSステートメントはログに記録されません。

    パッチを提供してくれたLaurynas Biveinisに感謝します。 (バグ#24670909、バグ#83003、バグ#28606948)
  • IGNOREを使用するDMLステートメントは、生成された列を持つテーブルで常に正しく処理されませんでした。 バグ#22990029)
  • ダイナミックレンジとインデックスマージを使用するクエリは、予想よりも多くのメモリを使用する可能性があります。 (バグ#89953、バグ#27659490)
MySQL
MySQL

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Scroll to top