2022.12.22

MariaDB

MariaDB Enterprise Server 10.5.18-13 GA版(リリース日:2022年12月21日)

バックポートされた機能

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

  • 新しいslave_max_statement_timeシステム変数を使用して、レプリカノードでのクエリの最大実行時間を設定できます。
    • レプリカ(スレーブ)ノードでのクエリの実行にslave_max_statement_time秒以上かかる場合、クエリは中止され、レプリケーションはエラーで停止します。
    • システム変数は10進数値に設定できます。この場合、10進数部分の精度はマイクロ秒です。
    • 0に設定すると、タイムアウトはありません。
    • デフォルト値は0です。

注目すべき変更点

  • information_schema.INNODB_SYS_TABLESPACESビューには、InnoDB一時テーブルが格納されるテーブルスペースであるInnoDB一時テーブルスペースに関する詳細が表示されます。
    • このリリース以降、名前innodb_temporaryの問い合わせをすることで、InnoDB一時テーブルスペースに関する詳細を表示できます。
      SELECT * FROM information_schema.INNODB_SYS_TABLESPACES
      WHERE name LIKE 'innodb_temporary';
  • テーブルのデフォルトの照合がテーブルの文字セットのデフォルトの照合に設定されている場合、SHOW CREATE TABLEはCOLLATE句を表示します。
    • 以前のリリースでは、MariaDB Enterprise Serverは、テーブルのデフォルトの照合がテーブルの文字セットのデフォルトの照合に設定されている場合、COLLATE句を除外することでSHOW CREATE TABLE出力のサイズを縮小しました。

ストレージ エンジンの変更

  • このリリースには、MariaDB ColumnStoreストレージエンジンのバージョン 5.6.8が組み込まれています。

修正された問題

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

  • NOCOPYアルゴリズムを使用してALTER TABLE .. RENAME COLUMNでパーティション化されたテーブルで列の名前を変更すると、テーブルが破損する可能性があります。
  • InnoDBストレージエンジンがバッファ変更操作を実行すると、InnoDB Redoログがオーバーフローし、テーブルが破損する可能性があります。

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

  • クエリにIN/ALL/ANY述語が含まれ、サブクエリにIN/ALL/ANY述語を持つGROUP BY句が含まれ、左オペランドとして単一値サブクエリがある場合、サーバーがクラッシュする可能性があります。
  • InnoDBテーブルに外部キー制約が含まれていて、子テーブルの DATABASE_NAME/TABLE_NAME.ibdが330文字を超えている場合、親テーブルの名前が変更されると、サーバーがクラッシュする可能性があります。
  • INPLACEアルゴリズムを使用してDDLステートメントが実行され、innodb_adaptive_hash_index=ONが設定されている場合、サーバーがハングする可能性があります。
  • テーブルの名前を長い名前に変更すると、サーバーがクラッシュする可能性があります。
  • ALTER TABLEステートメントによってInnoDBが空間インデックスを使用してテーブルを再構築すると、サーバーがクラッシュする可能性があります。
  • InnoDB一時テーブルに空間インデックスが含まれている時に、一時テーブルがDROP TEMPORARY TABLEまたはクライアントの切断によって削除されると、サーバーがクラッシュする可能性があります。
  • PARTITION構文を使用してパーティション化されたテーブルにクエリを実行する時、WHERE句によってインデックスマージが発生すると、サーバーがクラッシュする可能性があります。
  • 1つ以上の再帰CTEを含むネストされたCTEのCTE依存関係を検出すると、サーバーがクラッシュするまで無限再帰が発生する可能性があります。
  • バンドルされているwsrep_notify.shスクリプトを使用するようにwsrep_notify_cmdシステム変数が設定されている場合、起動中にサーバーがハングすることがあります。
  • InnoDBのinformation_schemaビュー(INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITSなど)から選択する時、開いているXAトランザクションとの接続が同時に切断または強制終了されると、サーバーがクラッシュする可能性があります。
  • クエリに参加している列に対する、異なるが変換可能な文字セットを持つテーブルを含む一部のクエリでは、そのようなクエリを準備済みステートメントモードで、またはストアドルーチンの一部として繰り返し実行すると、サーバーがクラッシュする可能性があります。
  • SELECT .. UNION .. SELECTまたはEXPLAIN EXTENDEDステートメントを実行すると、サーバーがクラッシュする可能性があります。
  • optimizer_switch='condition_pushdown_for_derived=on'が設定され、サブクエリを含むビューがクエリされると、サーバーがクラッシュします。
  • InnoDB変更バッファが破損している場合、シャットダウン中にサーバーがハングアップする可能性があります。
  • InnoDBテーブルスペースが、INSTANTアルゴリズムを使用した以前のALTER TABLE操作からの非標準形式である場合、InnoDBは、クラッシュリカバリ中およびMariaDB Enterprise Backupを使用したバックアップの準備中に、テーブルへの変更の適用に失敗する可能性があります。
  • InnoDBがクラッシュリカバリ中にROW_FORMAT=DYNAMICを指定してテーブルのセカンダリインデックスにINSERT_HEAP_DYNAMICレコードを適用しようとすると、その操作がエラーで失敗する可能性があります。
    • 以前のリリースでは、MariaDB ESエラーログに次のようなエラーが含まれる場合がありました:
      [ERROR] InnoDB: Not applying INSERT_HEAP_DYNAMIC due to corruption on [page id: space=5, page number=4]
  • ALTER TABLE .. ADD PERIOD IF NOT EXISTSを使用して空の名前のアプリケーション期間がテーブルに追加されると、サーバーがクラッシュする可能性があります。
    • 以前のリリースでは、次のようなステートメントによってサーバーがクラッシュする可能性がありました:
      ALTER TABLE t
      ADD PERIOD IF NOT EXISTS FOR `` (s,e);
  • SpiderストレージエンジンのODBC外部データラッパーをMariaDB Connector/ODBC 3.1.10以降で使用すると、サーバーがクラッシュする可能性があります。
  • 準備済みステートメントを使用してサブクエリを含むINSERT .. RETURNINGステートメントを実行すると、サーバーがクラッシュする可能性があります。

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

  • レプリケーションフィルターが存在する場合、プライマリ(マスター)に存在しないユーザーから権限を取り消すと、レプリカ(スレーブ)でのレプリケーションが中断されます。
  • レプリカノードでreplica_wild_ignore_table='mysql.%'が設定されている場合、レプリカノードは複製されたSET DEFAULT ROLEステートメントをスキップしません。
  • Spiderテーブルにプレフィックスインデックスがある場合、クエリの結果が正しくない可能性があります。
  • InnoDBは、追加の容量が必要ない場合、テーブルスペースファイルを拡張できます。
  • InnoDBテーブルが再構築され、オンライン再構築中にBLOBが更新されると、メモリリークが発生する可能性があります。
  • 準備済みステートメントを使用してビューをクエリすると、クエリはER_NEED_REPREPAREエラーコードで失敗します。
    • 以前のリリースでは、次のエラーが発生していました:
      ERROR 1615 (HY000): Prepared statement needs to be re-prepared
  • InnoDBテーブルに、インデックスが作成された仮想生成列が含まれている場合、InnoDBはセカンダリインデックスレコードのパージに失敗します。
  • InnoDBアダプティブハッシュインデックスを使用する場合、ACID違反の可能性があるため、非ロック読み取りで間違った結果が返される可能性があります。
  • 一時テーブルでSHOW COLUMNSを使用すると、空の結果セットが返されます。
  • シーケンスがテーブルのデフォルト値として使用されている場合、INSERT ... SELECTステートメントによって挿入された行に間違った値が割り当てられる可能性があります。
  • 列にUNIQUEインデックスとFULLTEXTインデックスの両方がある場合、MATCH(..) AGAINST(..) を使用した全文検索は正しく機能しません。
  • --sslオプションを有効にしてサーバーを起動しているが、TLS証明書とキーが設定されていない場合、サーバーはハンドシェイクでTLSサポートを通知しますが、実際にはそれを使用することはできません。
  • MariaDB Enterprise Clusterでは、wsrep_sst_method='mariabackup'が設定されている場合、ジョイナーノードはinnodb_buffer_pool_filenameシステム変数のカスタム値を無視し、SST は代わりにバッファプールファイルをデフォルトの場所にコピーします。
  • INET6列がALL演算子内のサブクエリでフィルター処理されると、結果が正しくない場合があります。
  • 開いているXAトランザクションがない状態でXA COMMITを実行すると、操作は引き続きバイナリログに記録されます。
    • 以前のリリースでは、レプリカノードがイベントを適用しようとすると、ER_XAER_NOTAエラー コードで失敗していました:
      Last_SQL_Errno 1397
      Last_SQL_Error Error 'XAER_NOTA: Unknown XID' on query. Default database: 'DATABASE_NAME'. Query: 'XA COMMIT ..'
  • テーブルスペースファイルが最初にMariaDB Enterprise Server 10.4以前で構築された場合、InnoDBはINSTANTアルゴリズムを使用してテーブルに列を追加することを拒否していました。
    • 以前のリリースでは、次のエラーメッセージが表示されて操作が失敗していました:
      ERROR 1845 (0A000): ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=INPLACE
  • ALL演算子内のサブクエリでTIMESTAMP列がフィルター処理されると、結果が正しくない場合があります。
  • wsrep_node_incoming_addressシステム変数にポート番号が含まれていない場合、wsrep_incoming_addressesステータス変数はポート番号として0を示します。
  • optimizer_switch='rowid_filter=on'が有効になっている時、ROWIDフィルタに要素が含まれていない場合、パフォーマンスが影響を受けます。

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

  • mariadb-upgradeが実行されると、テーブルの再構築に関する誤ったエラーがログに記録されます。
    • 以前のリリースでは、ツール自体で問題が既に軽減されていても、次のメッセージがログに記録されました:
      error: Table rebuild required. Please do "ALTER TABLE `TABLE_NAME` FORCE" or dump/reload to fix it!"

インターフェースの変更

  • ER_BINLOG_UNSAFE_SKIP_LOCKEDエラーコードが追加されました
  • ER_CM_OPTION_MISSING_REQUIREMENTエラーコードが追加されました
  • ER_INCONSISTENT_SLAVE_TEMP_TABLEエラーコードが追加されました
  • ER_JSON_HISTOGRAM_PARSE_FAILEDエラーコードが追加されました
  • ER_JSON_TABLE_ALIAS_REQUIREDエラーコードが追加されました
  • ER_JSON_TABLE_ERROR_ON_FIELDエラーコードが追加されました
  • ER_JSON_TABLE_MULTIPLE_MATCHESエラーコードが追加されました
  • ER_JSON_TABLE_SCALAR_EXPECTEDエラーコードが追加されました
  • ER_PARTITION_CONVERT_SUBPARTITIONEDエラーコードが追加されました
  • ER_PK_INDEX_CANT_BE_IGNOREDエラーコードが追加されました
  • ER_PROVIDER_NOT_LOADEDエラーコードが追加されました
  • ER_REMOVED_ORPHAN_TRIGGERエラーコードが追加されました
  • ER_SF_OUT_INOUT_ARG_NOT_ALLOWEDエラーコードが追加されました
  • ER_SLAVE_STATEMENT_TIMEOUTエラーコードが追加されました
  • ER_STORAGE_ENGINE_DISABLEDエラーコードが追加されました
  • ER_VERS_HIST_PART_FAILEDエラーコードが追加されました
  • ER_WITH_TIES_NEEDS_ORDERエラーコードが追加されました
  • mariadbd --slave-max-statement-timeコマンドラインオプションが追加されまし
  • slave_max_statement_timeシステム変数が追加されました
  • WARN_OPTION_CHANGINGエラーコードが追加されました
  • WARN_SFORMAT_ERRORエラーコードが追加されました

プラットフォーム

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

  • CentOS 7 (x86_64)
  • Debian 10 (x86_64, ARM64)
  • Debian 11 (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)
  • Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8パッケージ)
  • Rocky Linux 9 (x86_64, ARM64 Red Hat Enterprise Linux 9パッケージ)
  • 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の一部のコンポーネントは、全てのプラットフォームをサポートしていない場合があります。


MariaDB Enterprise Server 10.5.18-13のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/server/release-notes/mariadb-enterprise-server-10-5/10-5-18-13/


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

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