2023.12.15

MariaDB

MariaDB Enterprise Server 10.4.32-22 GA版(リリース日:2023年12月12日)

修正されたセキュリティ脆弱性

CVE CVSS base score
CVE-2023-22084 4.9

注目すべき変更点

  • WolfSSL使用時のCHACHA20-POLY1305のサポート
  • 半同期レプリケーションのマジックナンバーエラー "[ERROR] Read semi-sync reply magic number error"が改善され、障害が発生したネットワークパケットの16進ダンプを出力して半同期確認応答が報告されるようになりました
  • MariaDBのTLS v1.0および1.1を無効にします。TLS v1.1がデフォルトのtls_versionシステム変数から削除されました。
    • TLS v1.0またはTLS v1.1が選択されている場合は、警告が表示されます。

修正された問題

データ損失が発生する可能性があるもの

  • バイナリログが有効な場合、binlog_{do,ignore}_dbオプションのいずれかによってバイナリログから除外されたトランザクションはエンジンで失われる可能性があります。
  • DROP INDEXに続いてCREATE INDEXを実行すると、データが破損する可能性がある
  • CREATE SEQUENCEの並列レプリケーション時にMDL_context::acquire_lockでアサーションが失敗する

ハングまたはクラッシュを引き起こす可能性があるもの

  • ハングまたはクラッシュが、一時テーブルを変更するSTATEMENTバイナリログ形式トランザクションの並列レプリケーションで見られる可能性があります。例えば、rpl.rpl_parallel_temptableの障害で確認されます。
  • ローカル操作であるにもかかわらず、CACHE INDEXおよびLOAD INDEX INTO CACHEの不必要なレプリケーションが原因で発生する障害。
  • Rowidフィルターはストレージエンジンエラーを正しく処理しません。ロック読み取りを実行し、Rowidフィルターを使用しているクエリでは、Rowidフィルターの構築時にロック待機タイムアウト、デッドロック、または同様のエラーが発生した場合、サーバーがクラッシュする可能性があります。
  • 相関サブクエリ内のHAVINGが外部クエリ内の列を参照するとクラッシュする
  • SSTスクリプトの欠陥により、datadirまたは一部のinnodbログディレクトリが実際に実際のデータディレクトリへのシンボリックリンクであるパスを指している場合、SSTを実行できませんでした。
  • SPIDERタイプのテーブルがSPIDERのパラメータではないコメント文字列で始まると、サーバーがクラッシュする可能性があります。
  • "CREATE TABLE ... WITH SYSTEM VERSIONING AS SELECT ..."を実行しようとするとノードがクラッシュする
  • INSERT-SELECT、autoinc、およびステートメントベースのレプリケーションでのロック待機タイムアウト
  • BINLOGステートメントを使用すると(アプライアだけでなく)マスターでもbinlogイベントを実行できるため、アサーションが厳密すぎると問題が発生します。
  • Galeraは、CREATE TABLE AS SELECT中にwsrep_forced_binlog_format=[MIXED|STATEMENT]をサポートできません。しかし、アサーションという形でのクラッシュは過剰反応です。現在は代わりに警告が発行されます。
  • ROW_FORMAT=COMPRESSEDを使用すると、サーバーがクラッシュし、サーバーログに"InnoDB: 2048 bytes should have been read. Only 0 bytes read. Retrying for the remaining bytes."という警告が表示されることがあります。
  • SPIDERオプション spider_delete_all_rowsを0に設定し、spiderテーブルの全ての行を削除すると、サーバーがクラッシュする可能性がある
  • INサブクエリの左式にネストされた行構造を使用すると、エラーが発生します。例:(a,(b,c)) IN (SELECT ...)。一部の縮退ケースでは、エラーが検出されず、クエリ処理のその後の段階でクラッシュが発生することがあります。
  • ( SELECT two LIMIT 1 OFFSET 1)のような、ゼロ以外のオフセットを持つLIMIT句を含むテーブルのないサブクエリでは、予期しない結果が生じる可能性があります。ORDER BY内で使用されると、クラッシュが発生する可能性があります。
  • FULLTEXT...WITH PARSERを使用すると、全文検索プラグインパーサーでクラッシュする可能性があります。
  • SEQUENCEをGaleraと組み合わせて使用すると断続的にクラッシュする
  • 2つのクライアントがGaleraノード上でFLUSH TABLES WITH READ LOCK/UNLOCK TABLESを実行すると、ノードが一時停止状態になることがあります。これにより、その次のリクエストが失敗する可能性があります。
  • (マスターノードとレプリカノードの間での)mysql.gtid_slave_posテーブルの不整合の問題により、非同期レプリケーションが有効になっている状態で起動またはシャットダウンした時にノードがクラスターから削除されることがあります。これは、以前はこのテーブルがクラスター内でレプリケートされていなかったためです。
  • CREATE TABLE .. SEQUENCE=1 AS SELECT ..の際にcheck_sequence_fieldsでサーバーがクラッシュする
  • 派生テーブルの最適な分割を検索するとクラッシュする
  • FLUSH PRIVILEGESの実行中に新しいユーザーが接続しているか、ユーザーがパスワードを変更していると、サーバーがクラッシュする可能性がある

予期しない動作を引き起こす可能性があるもの

  • データ挿入時に、MyISAMおよびAriaでCHARのプレフィックスキーがエラー "ERROR 1062 (23000): Duplicate entry 's' for key 'a' "を返す
  • SET big_tables=1;が設定されているの場合、NOPAD照合順序を使用したDISTINCTの誤った結果が発生する可能性があります。
  • SQLスレッドが並列スレーブワーカーキューが空になるのを待機する時に、強制終了が失敗します。KILLクエリはレプリケーションスレッドに影響を与えず、ユーザーが予期せず生きたままになっていました。
  • InnoDBは、仮想列プレフィックスのインデックスの削除マークの付いていないレコードをパージしようとします。"InnoDB: tried to purge non-delete-marked record in index b of table test`.`tのようなエラーがサーバーログに表示されます。
  • information_schema.innodb_metricsのlock_row_lock_current_waitsカウンターが負になる可能性がある
  • エラーが発生したレプリカの再起動時にSHOW REPLICA STATUS Last_SQL_Errno競合状態が発生します。slave_running_statusの矛盾するYESとLast_SQL_Errnoのエラーコードが表示されます。
  • 自動インクリメントは明示的なFTS_DOC_IDに対して機能しなくなりました。
  • 場合によっては、他のMariaDB Enterprise Clusterノードでトランザクションを再実行すると、誤った"Failed to insert streaming client"という警告が表示されることがあります。
  • COALESCEを使用したビットエンコーディングが間違っています。
  • FOR..DOでITERATEを使用すると、エラー 'Illegal parameter data types row and bigint for operation '+' 'が発生します。
  • 外部キー制約で変更されたカラムをチェックしている時に、InnoDBが仮想列を無視できない
  • seconds_behind_masterは遅延レプリケーションでは不正確です。
  • wsrep_sst_method変数が、SETステートメントを使用して無効な値に設定できます。
  • mysqlbinlog(mariadb-binlog)の-T/--tableオプションに関する誤解を招くヘルプテキスト
  • mbstreamはXFSでのページ圧縮を中断する
  • MyISAMテーブルは、アクティブなトランザクションがないにもかかわらず、トランザクションメタデータロックを取得しました。
  • "rpm --setugids"によりPAM認証が中断される
  • テーブルにハッシュを使用した一意のインデックスがある場合、空のテーブルへの複数行のInsertが失敗します。CHECK TABLEは"Table 't1' is marked as crashed and should be repaired"を返します。
  • InnoDBの"row too big"エラーでテーブル名が間違っている
  • スローログのslow_logのRows_examinedが範囲外になる可能性があります。この場合、サーバーログには"([ERROR] Unable to write to mysql.slow_log)"が記録されます。
  • スロークエリログにおいて、または、LIMIT ROWS EXAMINEDと一緒に、または、クエリが関数内で実行される時のANALYZE FORMAT=JSONと一緒に等、場合によっては、間違った検査行番号が使用されます。各ストアドファンクションの呼び出しは、処理中に現在のカウントを2倍にします。

パフォーマンスに関連するもの

  • Windowsでテーブルスペースを開く速度を向上させるためにis_file_on_ssd()を最適化する
  • 外部結合が多いクエリでの大幅な速度低下
  • スロークエリログにおいて、または、LIMIT ROWS EXAMINEDと一緒に、または、クエリが関数内で実行される時のANALYZE FORMAT=JSONと一緒に等、場合によっては、間違った検査行番号が使用されます。各ストアドファンクションの呼び出しは、処理中に現在のカウントを2倍にします。
  • 並列レプリケーションのdeadlock victim設定コードが誤って削除されました。その結果、並列スレーブは必要以上にトランザクションの実行を再試行する可能性がありました。

インストールやアップグレードに関連するもの

  • mysql_install_dbが全てのデフォルトのrootユーザーアカウントにプロキシ権限を適切に付与しない
  • datadirがNFSアクセスのあるNetAppストレージ上にある場合、Galera SST rsyncがスナップショットディレクトリをレプリケートする必要があるため、2番目のノードを起動できない

プラットフォーム

エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.4.32-22は次のプラットフォームに提供されます:

  • CentOS 7 (x86_64)
  • Debian 10 (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)
  • Rocky Linux 8 (x86_64, ARM64)
  • SUSE Linux Enterprise Server 12 (x86_64)
  • SUSE Linux Enterprise Server 15 (x86_64, ARM64)
  • Ubuntu 20.04 (x86_64, ARM64)

MariaDB Enterprise Serverの一部のコンポーネントは、プラットフォームのサブセットでサポートされています。


MariaDB Enterprise Server 10.4.32-22のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/server/release-notes/mariadb-enterprise-server-10-4/10-4-32-22/


MariaDBプロダクト・サポート・サービス

MariaDB
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。