2022.06.17

MariaDB

MariaDB Enterprise Server 10.6.8-4 GA版(リリース日:2022年6月13日)

修正されたセキュリティ脆弱性
CVE / CVSSベーススコア
CVE-2022-27458 / 7.5
CVE-2022-27456 / 7.5
CVE-2022-27452 / 7.5
CVE-2022-27449 / 7.5
CVE-2022-27448 / 7.5
CVE-2022-27447 / 7.5
CVE-2022-27445 / 7.5
CVE-2022-27387 / 7.5
CVE-2022-27386 / 7.5
CVE-2022-27384 / 7.5
CVE-2022-27383 / 7.5
CVE-2022-27381 / 7.5
CVE-2022-27380 / 7.5
CVE-2022-27379 / 7.5
CVE-2022-27378 / 7.5
CVE-2022-27377 / 7.5
CVE-2022-27376 / 7.5
CVE-2022-21451 / 7.5
CVE-2022-27457 / 7.5
CVE-2022-27455 / 7.5
CVE-2022-27451 / 7.5
CVE-2022-27446 / 7.5
CVE-2022-27444 / 7.5
CVE-2022-27382 / 7.5

バックポートされた機能
MariaDB Enterprise Serverは、エンタープライズライフサイクルを通じて予測可能な開発と運用のエクスペリエンスを可能にします。これらの新機能は、MariaDB Community Serverで成熟した後にバックポートされました。

  • mariadb-dumpオプション –as-ofは、システムバージョン管理されたテーブルから特定のタイムスタンプの時点でデータを読み取ります。
  • JSONの同等性を確認するためのJSON_EQUALS()関数が追加されました。
  • JSON値を正規化するためのJSON_NORMALIZE()関数が追加されました。
  • password_reuse_checkパスワード検証プラグインが追加されました。

注目すべき変更点

  • Spiderストレージエンジンは、エンジンはそれ自体がデータを保存できず、リモートサーバーに一時テーブルを作成できないため、一時テーブルの作成の施行を拒否します。
  • ステータス変数 Innodb_encryption_key_rotation_list_length、Innodb_num_index_pages_written、Innodb_num_non_index_pages_writtenは使用されておらず、削除されました。
  • このリリース以降、wsrep_sst_methodがrsyncまたはmariabackupに設定されている場合、sst_max_binlogs SSTオプションを設定ファイルの[sst]オプショングループで指定できます。 このパラメータは、SST中にジョイナーノードに送信されるバイナリログファイルの数を指定します。
    ○ デフォルト値は0です。
    ・ binlogが存在する場合、それが転送されます。
    ・ binlogが存在しない場合、binlogは転送されません。
  • サーバーエラーメッセージは中国語で利用できます。
  • Ubuntu 22.04 LTSサポートが追加されました。
  • Galeraが26.4.12に更新されました。
  • Xpandストレージエンジンのサポートは、MariaDB Enterprise 10.6では廃止されました。

修正された問題
<データ損失が発生する可能性があるもの>

  • パーサーが文字列をバイナリ文字セットからマルチバイト文字セット(utf32など)に変換すると、無効な文字列が生成される可能性がありました。
  • LOAD DATA INFILEステートメントを介して行が中間一時テーブルに挿入され、次にその行が一時テーブルから永続テーブルにコピーされる場合、binlog_format=MIXEDが設定されていると、行はバイナリログに書き込まれません。これにより、操作がレプリカサーバーに適切に複製されなくなります。
  • innodb_disallow_writes=ONが設定されている場合、mariadb-admin shutdownがハングする可能性があります。
    ・このリリース以降、innodb_disallow_writesシステム変数は削除されています。
  • レプリカサーバーのI/Oスレッドがプライマリサーバーから不完全なイベントグループを受信した時、レプリカサーバーはリレーログへのイベントの書き込みを続行し、エラーを発生させません。
  • innodb_use_native_aio=1のbtrfsファイルシステムでのInnoDBページ破損
  • プライマリがACKを待機している間に、プライマリがアクティブな半同期接続中にシャットダウンされた場合、プライマリはアクティブな通信スレッドをハードキルし、トランザクションがレプリカによって受信されたことを保証しません。これにより、レプリケーション状態に一貫性がなくなる可能性があります。
  • Semisync-replicaサーバーのリカバリは、準備されたトランザクションのロールバックに失敗します。

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

  • Galeraを搭載したMariaDB Enterprise Clusterでは、wsrep_sst_methodがrsyncまたはmariabackupに設定されている場合、一部の設定では、ドナーノードが正しいバイナリログをジョイナーノードに転送しません。
  • UNIONを使用したSELECTステートメントのグローバルORDER BY句でウィンドウ関数が使用される場合、ステートメントは拒否されるべきですが、サーバーはステートメントを実行し、セグメンテーション障害でクラッシュします。
  • ストアドプロシージャがビューをクエリしてforループを使用する時、同じセッションでストアドプロシージャが2回呼び出されると、サーバーがセグメンテーション障害でクラッシュする可能性があります。
  • innochecksumが暗号化されたテーブルスペースファイルで–page-type-summaryまたは-Sオプションを使用して実行されると、innochecksumは–page-type-dumpまたは-Dオプションも指定されていない限り、セグメンテーション障害でクラッシュします。
  • 無効なCREATE SEQUENCE .. RESTARTステートメントがCREATE PROCEDUREまたはCREATE FUNCTIONステートメント内で使用される場合、サーバーはステートメントの解析中にクラッシュする可能性があります。
  • IF()およびDATE_FORMAT()関数を使用して定義された仮想生成列がテーブルに含まれている場合、テーブルに行を挿入すると、サーバーがセグメンテーション障害でクラッシュする可能性があります。
  • 更新不可能なビューがALGORITHM=TEMPTABLEで定義される場合、ビューからデータを選択すると、サーバーがセグメンテーション障害でクラッシュする可能性があります。
  • 10進タイプのUNIONがORDER BY句で実行されると、サーバーがセグメンテーション障害でクラッシュする可能性があります。
  • ストアドプロシージャがクエリを実行してマージ可能な派生テーブルが生成される時、同じセッションでストアドプロシージャが2回呼び出されると、サーバーがセグメンテーション障害でクラッシュする可能性があります。
    ・ビューをクエリすると、マージ可能な派生テーブルが作成される可能性があります。
    ・外部参照でサブクエリを使用すると、マージ可能な派生テーブルが作成される可能性があります。
  • ANALYZE FORMAT=JSONがサブクエリを含むクエリで実行されると、サーバーがクラッシュする可能性があります。
  • OVER (PARTITION BY ..)または(ORDER BY ..)句を持つウィンドウ関数を使用したクエリが実行されると、サーバーがセグメンテーション障害でクラッシュする可能性があります。
    ・クエリでWITH ROLLUPも使用されている場合、このクラッシュが発生する可能性が高くなります。
    ・クエリのOVER (PARTITION BY ..)またはOVER (ORDER BY ..)句が集約関数を使用している場合、このクラッシュが発生する可能性が高くなります。
  • 外部結合式とオプティマイザが低コストであると判断した非相関サブクエリがクエリに含まれている時に、オプティマイザが内部結合式を削除できると判断した場合、クエリを実行するとサーバーがクラッシュする可能性があります。
  • MariaDB Enterprise Clusterでは、インクリメンタル状態転送(IST)中にジョイナーノードのバイナリログが削除される可能性がありました。これにより、ノードはバイナリログを読み取ることができないため、ノードは起動できません。
    ・この問題は、wsrep_sst_methodをrsyncに設定すると発生することが確認されていますが、他のSST/ISTメソッドでも発生する可能性があります。
  • 65535バイトを超える非blob列(例えば、VARCHAR(16383) CHARACTER SET UTF32)に対してグループ化クエリを実行すると、クラッシュが発生する可能性があります。
  • InnoDBバッファプールサイズが変更された場合、DROP TABLE後またはDROP TABLE中にクラッシュする可能性があります。
  • 複数の同時SHOW TABLE STATUSでInnoDBがクラッシュします。
  • innodb_fast_shutdown=0の場合、InnoDBパーティションを変更するとシャットダウンがハングします。
  • インスタントALTER条件のチェック中にオンラインDDLが失敗します。
  • MariaDB Enterprise Cluster(Galera)では、slave-parallel-threadsが1より大きい場合、並列非同期レプリケーションがGaleraノードでハングします。
  • MariaDB Enterprise Cluster(Galera)では、アプライヤースレッドとイベントスケジューラによってトリガーされたストアドプロシージャ呼び出しとの競合後にクラッシュする可能性があります。
  • XAトランザクションの開始後にシャットダウンステートメントを実行すると、サーバーがクラッシュします。
  • mysql.gtid_slave_posテーブルの最後のパージ以降に追加されたGTIDの数が–gtid-cleanup-batch-size値以上の場合、mariadbdの初期化中にサーバーがクラッシュする可能性があります。
  • INSERT .. SELECTまたはREPLACE .. SELECTステートメントの最上位のselectにON式が含まれており、この式が列参照を含むサブクエリを使用した場合、サーバーがクラッシュする可能性があります。

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

  • OPTIMIZE TABLEがシーケンスで実行されると、binlog_formatがROWまたはMIXEDに設定されている場合でも、サーバーはER_BINLOG_UNSAFE_STATEMENT警告を生成します。
    ・警告は、MariaDB Error Logに次のように表示されます。
    [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave Statement: OPTIMIZE TABLE SEQUENCE_NAME
  • UPDATEまたはDELETEステートメントがOR句を使用すると、サーバーはER_UPDATE_WITHOUT_KEY_IN_SAFE_MODEエラーを発生させます。
    ・エラーは、次のようにクライアントに表示されます。
    You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
  • UPDATEステートメントがIN()句内でサブクエリを使用する時、オプティマイザーは、範囲スキャン(タイプ:range)の方が効率的である場合に、フルテーブルスキャン(タイプ:ALL)の実行を誤って選択する可能性があります。
  • テーブルに同じ値の複数のENUM列が含まれている場合、マルチバイト文字セットが使用されると、値が破損する可能性があります。
  • DECIMAL列がinformation_schema.PROCESSLISTから読み取られると、サーバーが誤ってER_BAD_DATA警告を発生させる可能性があります。
    ・警告は、SHOW WARNINGSを実行した後、クライアントに次のように表示されます。
    Encountered illegal value ” when converting to DECIMAL
  • sql_mode=ORACLEの場合、パーサーは関数がPACKAGE_NAME.FUNCTION_NAME()を使用して呼び出されることを可能にしますが、関数がDATABASE_NAME.PACKAGE_NAME.FUNCTION_NAME()を使用して呼び出されると、パーサーはER_PARSE_ERRORエラーを発生させます。
  • ビューが単一のUPDATEステートメントで一時テーブルの複数の行を更新するために使用されると、サーバーは誤ってER_WARN_VIEW_WITHOUT_KEY警告を発生させます。
    ・警告は、SHOW WARNINGSを実行した後、クライアントに次のように表示されます。
    View being updated does not have complete key of underlying table in it
  • –rawおよび–stop-neverとともにmariadb-binlogを使用する場合、プライマリサーバーの現在アクティブなログファイルからのイベントは、–result-fileで指定されたそれぞれのログファイルに書き込まれません。
  • プリペアドステートメントがEXPLAINを実行するために使用されると、2回目の実行で別のクエリプランを返す可能性があります。
  • slave_compressed_protocolが半同期レプリケーションで有効になっている場合、パケットヘッダーの番号付けがプライマリサーバーとレプリカサーバーの間で同期しなくなる可能性がありますが、その不整合がMariaDB Enterprise Serverのリリースビルドに悪影響を与えることはありません。
  • サーバーとMariaDB Enterprise Backupは、一部のシナリオでテーブルスペースIDに関する不要な警告を発生させる可能性があります。
    ・警告は次のように表示されます。
    InnoDB: Allocated tablespace ID TABLESPACE_ID for DATABASE_NAME/TABLE_NAME, old maximum was 0
    ・この警告は、MariaDB Enterprise Backupを使用してバックアップを準備する時に、標準出力(stdout)に書き込まれます。
    ・この警告は、InnoDBが起動時にクラッシュリカバリを実行する時に、MariaDB Error Logに書き込まれます。
  • MariaDB Enterprise Clusterでは、innodb_log_group_home_dirがdatadirとは異なるディレクトリを指定すると、ジョイナーノードはSSTを完了できません。
  • DATA DIRECTORY句を使用するパーティション化されていないテーブルがパーティション化されたテーブルに変換されると、DATA DIRECTORY句は黙って無視され、パーティション化されたテーブルはデフォルトディレクトリに移動されます。
  • このリリース以降、サーバーはWARN_OPTION_IGNORED警告を発生させます。
  • テーブルに非表示の列が含まれている場合、mariadb-dumpはバックアップファイルに正しいCREATE TABLEステートメントを生成しません。
  • IF(COUNT() ..)を使用してSpiderテーブルがクエリされると、サーバーはER_BAD_FIELD_ERRORエラーを発生させる可能性があります。
  • MariaDB Enterprise Clusterでは、バイナリログが有効になっている場合、ドナーノードで状態スナップショット転送(SST)が失敗する可能性があります。
  • MariaDB Enterprise Clusterでは、wsrep_node_addressにIPv6アドレスが含まれていて、wsrep_sst_receive_addressがデフォルト値のAUTOに設定されている場合、状態スナップショット転送(SST)が失敗する可能性があります。
  • 一時テーブルでは、システムバージョン管理されたテーブルがmariadb-dumpを介してレプリカ上に作成されると、元のテーブルが以前に変更されていた場合、レプリケーションが中断する可能性があります。
  • mariabackupは、マルチソースレプリケーションプライマリを検出しません。
  • Master_SSL_Crlは、SHOW REPLICA STATUS出力にMaster_SSL_CA値を表示します。
  • MariaDB Auditプラグインは、CONNECTイベントの破損したログエントリを生成します。
  • mariadb-dumpは、SQL/PLパッケージに対してsql_modeが正しく設定されているダンプを作成しません。
  • INSERT .. ON DUPLICATE KEY UPDATEのbinlogデータがありません。
  • 完全バックアップ後に新しいスキーマが作成された場合、mariabackupの準備は増分バックアップで失敗します。
  • オプティマイザは、UPDATE中に全てのパーティションを使用し、パーティションフィルターを無視します。
  • INSERT .. ON DUPLICATE KEY UPDATEが実行され、binlog_formatがMIXEDに設定されている場合、ステートメントが行ベースの形式でバイナリログに書き込まれていても、サーバーはER_BINLOG_UNSAFE_STATEMENT警告を生成します。
    ・警告は、MariaDB Error Logに次のように表示されます。
    [Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT… ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe Statement: INSERT INTO TABLE_NAME VALUES (..) ON DUPLICATE KEY UPDATE KEY_NAME = KEY_VALUE
  • INSERT .. ON DUPLICATE KEY UPDATEが実行され、binlog_row_imageがFULLに設定されている場合、サーバーは変更されていない列をバイナリログに書き込みません。
  • 設定されたサーバーIDがクラッシュしたデータディレクトリのサーバーIDと一致しない場合、クラッシュリカバリが失敗します。
  • innochecksum -wオプションが誤って削除されました。
  • InnoDBとutf8mb3での不十分なスケーリング
  • mariabackup –log-copy-intervalは、MariaDB Enterprise Server 10.5ではミリ秒単位で、MariaDB Enterprise Server 10.6ではマイクロ秒単位で測定されます。
  • ALTER TABLE中にアップサートすると、重複エントリエラーが発生します。
  • 失敗したIMPORT TABLESPACEによりファイルの削除に失敗した後、テーブルのDROP TABLEでERROR 1005 (HY000): Can’t create table `test`.`t2` (errno: 184 “Tablespace already exists”)が発生する可能性があります。
  • 多くのテーブルを使用すると、クエリのパフォーマンスが低下します。
  • Enterprise Spiderでは、ODBCソースに接続する時に”Error while parsing DSN”が返される場合があります。
  • 最後のbinlogファイルと位置は、mariabackup –prepare出力で”空”です。
  • バックグラウンドスレッドのパフォーマンススキーマテーブルP_S.THREADS_CONNECTION_TYPEで、NULLの代わりに”Error”が表示されます。
  • Enterprise Spiderでは、パスワードにセミコロンが含まれると、ODBCリソースへのログインが失敗します。
  • group_concat_max_lenを1GB以上に設定し、サブクエリでGROUP_CONCAT()を使用すると、結果が切り捨てられます。
  • PAM v2プラグイン(auth_pam)は、ゾンビプロセスを生成します。
  • MariaDB Enterprise Cluster(Galera)では、wsrep_incoming_addressesにアドレスの詳細は含まれません。
  • HashiCorpキー管理(hashicorp_key_management)では、hashicorp_key_management_cache_timeoutシステム変数およびhashicorp_key_management_cache_version_timeoutシステム変数への動的な変更は無視されます。
  • JSON_TABLEでは、JSON “”subdocument””をJSON列に抽出することはできません。
  • MariaDB Enterprise Clusterでは、暗号化設定なしで起動しても共有暗号警告は表示されません。警告は、ssl_cert設定が欠落していることに関するものであるべきです。

<インストールとアップグレード>

  • Galeraスナップショット転送は、一部のメジャーバージョン間でのアップグレードに失敗します。
  • Windowsでは、MSIインストーラーはクライアント共有ライブラリをインストールしません。
  • Windowsでは、10.6.5から10.6.7へのアップグレード中にエラーが発生しました:Installation directory ”C:\Program Files\MariaDB 10.6\” exists and is not empty
  • Windowsでは、インストール中にエラーが発生しました:InnoDB: innodb_page_size=65536 requires innodb_buffer_pool_size >= 20MiB current 10MiB
  • hashicorp_key_management暗号化プラグインがロードされると、後方互換性のない変更のために、全てのマイナーアップグレードおよびメジャーアップグレードの前に、mariadb-dumpを使用して論理バックアップを作成する必要があります。
    ・このリリース以降、hashicorp_key_management暗号化プラグインは、16進表記の数字以外の文字を含む暗号化キーを拒否します。
    ・データベースが16進表記の数字のみを含む暗号化キーで暗号化されている場合、暗号化キーは新しいバージョンで引き続き機能します。
    ・データベースが有効でなくなった暗号化キーで暗号化されている場合は、新しいバージョンをクリーンなシステムにインストールし、データの論理バックアップを復元することによってアップグレードすることをお勧めします。ただし、別の選択肢は、アップグレードの前に、16進表記の数字のみを含む新しい暗号化キーにシステムを移行することです。代替ルートを使用する場合は、暗号化された全てのデータが新しい暗号化キーを使用するように特別な注意を払う必要があります。このプロセスのヘルプについては、MariaDBサポートにお問い合わせください。
    ・DebianとUbuntuでマイナーアップグレードとメジャーアップグレードを実行する場合は、サーバーとプラグインのパッケージをアップグレードする前に論理バックアップをとる必要があります。古いパッケージがアップグレードされると、プラグインの非互換性に関するメッセージが出力されますが、サーバーとプラグインのパッケージはアップグレードされます。
    ・CentOS、RHEL、Rocky Linux、およびSUSEでマイナーアップグレードを実行する場合は、サーバーパッケージのアップグレードの前または後に論理バックアップを作成できます。古いパッケージがアップグレードされると、プラグインの非互換性に関するメッセージが出力され、サーバーパッケージはアップグレードされますが、プラグインパッケージはアップグレードされません。古いプラグインパッケージは手動で削除しなければなりません。それから、新しいプラグインパッケージをインストールできます。
    ・CentOS、RHEL、Rocky Linux、およびSUSEでメジャーアップグレードを実行する場合は、サーバーおよびプラグインパッケージをアップグレードする前に、論理バックアップを作成する必要があります。古いサーバーパッケージとプラグインパッケージは手動で削除しなければなりません。その後、新しいサーバーパッケージとプラグインパッケージをインストールできます。
    ・プラグインパッケージを手動で削除すると、プラグイン設定ファイルも削除される可能性があるため、ファイルをバックアップすることをお勧めします。

インターフェースの変更

  • hashicorp_key_management_check_kv_versionシステム変数が追加されました
  • innochecksum –write (-w)コマンドラインオプションが追加されました
  • innodb_disallow_writesシステム変数が削除されました
  • Innodb_encryption_key_rotation_list_lengthステータス変数が削除されました
  • Innodb_num_index_pages_writtenステータス変数が削除されました
  • Innodb_num_non_index_pages_writtenステータス変数が削除されました
  • JSON_EQUALS()関数が追加されました
  • JSON_NORMALIZE()関数が追加されました
  • mariadb-backup –sst-max-binlogsコマンドラインオプションが追加されました
  • mariadb-dump –as-ofコマンドラインオプションが追加されました
  • mariadbd –hashicorp-key-management-check-kv-versionコマンドラインオプションが追加されました
  • mariadbd –password-reuse-checkコマンドラインオプションが追加されました
  • mariadbd –password-reuse-check-intervalコマンドラインオプションが追加されました
  • password_reuse_checkpassword_reuse_check.soプラグインが追加されました
  • password_reuse_check_historyシステムテーブルが追加されました
  • password_reuse_check_intervalシステム変数が追加されました

プラットフォーム
エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.6.8-4は以下のプラットフォーム用に提供されています:

  • CentOS 7 (x86_64)
  • Debian 9 (x86_64 / ARM64)
  • Debian 10 (x86_64 / ARM64)
  • Debian 11 (x86_64 / ARM64)
  • Microsoft Windows (x86_64)
  • 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 18.04 (x86_64 / ARM64)
  • Ubuntu 20.04 (x86_64 / ARM64)

MariaDB Enterprise Serverの一部のコンポーネントは、全てのプラットフォームをサポートしていない場合があります。
注意:これはDebian 9用の最終リリースです。

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


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

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