修正されたセキュリティ脆弱性
CVE | CVSS base score |
CVE-2024-21096 | 4.9 |
注目すべき変更点
- Galeraが26.4.18に更新されました
ストレージエンジンの変更
- このリリースには、MariaDB ColumnStoreエンジンのバージョン 23.10.1が組み込まれています。
修正された問題
データ損失が発生する可能性があるもの
- --gtid-ignore-duplicateを設定すると、最初のソースからトランザクションを適用する際に並列実行で再試行が必要な場合、別のレプリケーションソースからトランザクションが二重に適用される可能性があります。
- innodb_encrypt_tables=1のサーバーのバックアップは、mariadb-backup --prepareで破損する可能性がある
- 複数のGTIDドメインでは、XA-PREPAREイベントグループを含む楽観的な並列スレーブの競合が正しく解決されず、スレーブサーバーの不要な停止が発生する可能性があります。
- '1970-01-01 00:00:00'のTIMESTAMP値は、strictモードでINSERT ...FROM ... SELECTを介して挿入できますが、エラーが発生するはずです。
- バージョン管理が使用されると、Galeraでレプリケートされたイベントに間違った時間が含まれる場合がある
- insert ... on duplicateとreplaceの対象行が間違っており、データが破損する
ハングまたはクラッシュを引き起こす可能性があるもの
- 現在のMariaDB Enterprise Backupを古いサーバーに対して使用すると、システム変数 @@aria_log_dir_pathが存在しないため、クラッシュが発生する可能性がある
- innodb_change_bufferingにデフォルト以外の設定を使用すると、サーバーがクラッシュする可能性がある
- 4Gを超える行が挿入または更新された全文検索クエリを実行すると、サーバーがクラッシュする可能性がある
- InnoDBは、DDLでFOREIGN KEYの子テーブルロックを待機している間、共有dict_sys.latchを保持している
- InnoDBは、一時的にバッファプールを使い果たすとハングする可能性がある
- 暗号化されたテーブルスペースの場合、暗号化スレッドが同じテーブルスペースで動作しているときにALTER操作がハングする可能性がある
- A)が@@expensive_subquery_limit行未満を調べ、B)が結合バッファを使用するクエリプランを持つサブクエリを使用するEXPLAINステートメントは、クラッシュを引き起こす可能性があります。
- SPIDERテーブルの場合、テーブルからパーティションを削除すると、サーバーがクラッシュする可能性がある
- 一時領域がいっぱいのためにARIAテーブルに対するALTER TABLEが失敗した後、後続のクエリで一時領域が使用される場合、次のエラーが発生します:
ERROR 1021 (HY000): Disk full (./org/test1.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")
- mariadb-binlogでバイナリログを再生する場合、バイナリログにSELECT NEXTVAL(s)などのシーケンスに関連するステートメントが含まれていると、ツールがクラッシュすることがある
- バックアップの準備手順で、TRX SYSページにwsrep xidの位置を格納するデータディレクトリに遭遇すると、MariaDB Enterprise Backupは次のエラーメッセージで失敗します:
InnoDB: Crash recovery is broken due to insufficient innodb_log_file_size
- XA PREPARE状態のトランザクション中にクライアントが切断された場合、または、サーバー起動時に未完了のトランザクションがundoログから回復され、まだロールバックされていない場合、アサーションが失敗する
- アイドル状態のストリーミングトランザクションがBFで中止された場合、次のエラーメッセージで失敗します:
WSREP: Failed to apply write set with flags = (rollback | pa_unsafe)
- ユーザーが認証中に強制終了されたDDLの空のトランザクションをコミットした時のアサーション:
!wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && !thd->is_current_stmt_binlog_format_row()) || thd->wsrep_cs().transaction().state() == wsrep::transaction::s_aborted
- トランザクションがInnoDBレベルから明示的なMDLロックを取得する場合、永続的な統計がテーブルに対して再読み取りされ、そのようなトランザクションがBFアボートの対象になる時は、MDLロックの競合が発生する可能性がある
- SSLが使用される時、正常なノードのシャットダウンによってgarbdがクラッシュし、MariaDB Enterprise Clusterが非プライマリになることがある
予期しない動作を引き起こす可能性があるもの
- 外部エンジンにプッシュされたマージ可能な派生テーブルを使用したSELECTからのプリペアドステートメントの2回目の実行によって、間違った結果セットが返される
- IMPORT TABLESPACEは列数またはインデックス数の不一致で失敗します:
ERROR 1808 (HY000): Schema mismatch (Number of columns don't match, table has x columns but the tablespace meta-data file has y columns)
- (SELECT @var:=... ) as derived_tblなどの副作用のある構造を使用する派生テーブルを使用するクエリは、間違った結果を生成する可能性がありました
- ORDER BY COLLATEが非文字列に不適切に適用され、順序付けされていない結果セットが生成される
- Read UncommittedおよびRead Committed分離レベルでのUPDATEの動作に一貫性がない
- 2つのトランザクションが分離レベル REPEATABLE-READで同時にデータを変更すると、後者のトランザクションは最初のトランザクションからの変更を考慮しない
- Spider/ODBCが、ANSIスタイルで名前に二重引用符を渡しました
- デフォルトの文字セットがPHP MySQLi拡張機能で機能しない
- 文字セット変換時にGROUP_CONCATのSEPARATOR値が間違っていると、間違った結果になることがある
- Spiderは、on式を()に変換することにより、有効な左結合選択の解析エラーを返す
- 非SUPER/READ ONLY ADMINユーザーとしてInnoDBテーブルからCREATE TEMPORARY TABLE ... AS SELECT ...を使用して一時InnoDBテーブルを作成すると、テーブルが作成される代わりに次のエラーが表示されます:
ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statement
- CREATE TEMPORARY TABLE (SELECTなし)、INSERT ... SELECT、および、CREATE ... LIKEは、このバグの影響を受けません
- PRIMARY KEYのUPDATEによって発生したファントム行
- Mariadb-dumpはサーバーを信頼し、データを検証しません。変更されたダンプファイルには、mariadb-clientによって使用されるシステムコマンドが含まれる場合があります。ダンプはデフォルトでサンドボックスモードでロードされるようになり、システムコールでエラーが発生します。
- 大文字と小文字を区別しない大きな一意のキーを、値の大文字小文字を区別しない変更で更新すると、重複キーエラーが発生する可能性があります。
- binlog_annotate_row_events=1を設定すると、binlogファイルのイベントが切り捨てられる可能性があります。
- WHERE句にINサブクエリ述語があり、分割マテリアライズド最適化を適用できるFROM句に派生テーブルがあるクエリからのsemi-joinおよびsplit-table派生テーブルで間違った結果が発生します。
- Galeraで、システムテーブルにアクセスして読み取りし、同じトランザクションでInnoDBテーブルに書き込みを行うと、次のエラーが発生し、正しいトランザクションをコミットできませんでした:
Transactional commit not supported by involved engine
- マージされた派生テーブルを使用してビューから選択すると、プリペアドステートメントの2回目の実行で間違った結果が発生する可能性があります。
- proxy_protocolが使用されている場合、ネットワーク関連のエラーメッセージに元のIPが表示されない
- UPDATEで評価されるDEFAULT式が間違っている
- group byの最適化により、関数内にサブジェクトが埋め込まれているサブクエリが誤って削除される
パフォーマンスに関連するもの
- XAイベントを使用したレプリケーションはパフォーマンスが低下したことを表示する可能性があります。並列スレーブのラウンドロビンスケジューリングをXAイベントに適応させます。
- 変更されていない行に対する行ロックは、XA PREPAREで解放されない
- オプティマイザーは、GROUP BYを含むクエリに対して、選択すべきでないインデックスを選択することがあり、その結果、パフォーマンスが低下します。現在の動作との互換性を保つために、修正を有効にするには、@@optimizer_adjust_secondary_key_costs="disable_forced_index_in_group_by"を設定する必要があります。
- テーブルはALTER TABLE ADD COLUMNで再構築されますが、再構築を必要としない即時操作であるはずです。
- 同時実行性が高いワークロードでは準同期待機ポイント AFTER_COMMITが遅い
- 集計関数が一意性プロパティを活用できない
- 通常、DISTINCT引数を使用して集計関数を計算する場合:aggregate_func(DISTINCT col1, col2, ...)には、重複のない引数セットを作成する必要があり、これはCPUを大量に消費する可能性があります。
- 1つのテーブルから選択する場合、引数リストにはテーブルのPRIMARY(またはUNIQUE)キーが含まれます:
SELECT aggregate_func(DISTINCT t1.primary_key, ...) FROM t1;
引数に重複がないことが保証されます。このようなケースが検出されるようになったため、オプティマイザーは重複の排除をスキップできるようになりました。
プラットフォーム
エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.6.18-14は次のプラットフォームに提供されます:
- AlmaLinux 8 (x86_64, ARM64)
- AlmaLinux 9 (x86_64, ARM64)
- CentOS 7 (x86_64)
- Debian 10 (x86_64)
- Debian 11 (x86_64, ARM64)
- Debian 12 (x86_64, ARM64)
- Microsoft Windows (x86_64)(MariaDB Enterprise Clusterは除く)
- Red Hat Enterprise Linux 7 (x86_64)
- Red Hat Enterprise Linux 8 (x86_64, ARM64)
- Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
- Rocky Linux 8 (x86_64, ARM64)
- Rocky Linux 9 (x86_64, ARM64)
- SUSE Linux Enterprise Server 12 (x86_64)
- SUSE Linux Enterprise Server 15 (x86_64, ARM64)
- Ubuntu 20.04 (x86_64, ARM64)
- Ubuntu 22.04 (x86_64, ARM64)
MariaDB Enterprise Serverの一部のコンポーネントは、全てのプラットフォームをサポートしているわけではありません。
MariaDB Enterprise Server 10.6.18-14のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/server/release-notes/mariadb-enterprise-server-10-6/10-6-18-14/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。