注目すべき変更点
- Galeraが26.4.17に更新されました。
修正された問題
データ損失が発生する可能性があるもの
- FOREIGN KEYを使用したPRIMARY KEYのUPDATEでのBLOBの破損
- インスタントADD COLUMNが最大レコード長を超えようとしたために失敗した後、テーブルが破損しました。
- ALTERコマンドは、TOIに入る前に、テーブルの外部キーを収集しようとします。このため、待機中のキューにあるロック要求を無視するSHARED_HIGH_PRIO MDLロックを使用してメインテーブルを開きます。同じテーブル上で実行されているDML操作があり、実際のTOI操作も存在する場合、このTOI操作はDML操作をBFアボートしようとします。同時に、ALTERはまだTOIではなく、HIGH_PRIO MDLロックで実行されるため、待機中のTOI操作を無視してロックを取得し、TOIによって直接または中止されたDML操作によって即座にBFアボートされます。ALTERにはwsrepトランザクションがないため、トレッドにkilled状態を設定することでBFアボートになります。ただし、TOIに入る前に、ALTERは強制終了状態を確認しないため、複製されて、他のノードに正常に適用されますが、その後ローカルノードでロールバックされるため、不整合が発生します。
ハングまたはクラッシュを引き起こす可能性があるもの
- MySQL 8.0のファイルを使用したALTER TABLE...IMPORT TABLESPACEで"unsupported meta-data version"というメッセージを表示しようとするとクラッシュします。
- InnoDBシステムテーブルスペース内のテーブルに間違ったテーブル属性 PAGE_COMPRESSED=1が表示されます。
- 列の変更と外部キーの追加を同時に行うと、MariaDBがforeign_key_checks=0でクラッシュします。
- 場合によっては、Shutdown with async replicaの起動時にノードがクラスターから削除され、次のような診断が表示されることがあります:
[ERROR] Slave SQL: Error 'WSREP has not yet prepared node for application use' on query
および
[ERROR] Slave SQL: Node has dropped from cluster, Gtid 1-1-1, Internal MariaDB error code: 1047" in the server log
- CREATE TABLE ASの後、GaleraクラスターでGTIDが分岐する場合があります。
これにより、その後、次のような診断が行われる可能性があります:[ERROR] mariadbd: Error writing file '/opt/maria10.1/binlog/BINLOG' (errno: 1950 "Unknown error 1950")"
そして、ノードがクラッシュします:
wsrep::transaction::before_rollback(): Assertion state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay` failed
- SHOW SLAVE STATUSは、SHOWが発行される頃にに並列レプリカワーカーが強制終了されると、エラーが発生したレプリカをデッドロックする可能性があります。
- ユーザー変数をNULLにしてSELECT BINLOG_GTID_POS(@binlog_file...)を実行すると、サーバーがクラッシュする可能性があります。
- 特定のSQL構造を使用するクエリは、サーバーのクラッシュを引き起こす可能性があります。この構造は、テーブルのない行サブクエリと、最上位にUNION操作を持つサブクエリとの等価比較です:(SELECT 'foo', 'bar') = (SELECT col1, col2 FROM t1 ... UNION ...)
- ORDER BYおよびセミ結合の最適化を伴うDELETEはクラッシュを引き起こす可能性があります。
- クエリで派生したラテラルが行を返さないことが保証されている場合にクラッシュする可能性があります。
- EXCHANGE PARTITIONを使用してパーティションをテーブルに置き換える時に、交換されるテーブルがパーティション化キーと一致しない仮想列を使用している場合、サーバーがクラッシュする可能性があります。
- 仮想列を使用するテーブルでINSERT DELAYEDを使用すると、サーバーがクラッシュする可能性があります。
- AS OFを使用して派生テーブルからSELECTを使用すると、サーバーがクラッシュする可能性があります。
- プリペアドステートメントの比較でJSON_CONTAINS_PATHを使用すると、ステートメントの実行時にサーバーがクラッシュする可能性があります。
- SpiderテーブルでLOCK TABLESが失敗した後、サーバーがDROP DATABASEでハングします。
- OPTIMIZE TABLEで2つの一時テーブルを使用し、プリペアドステートメントとして実行されると、サーバーがクラッシュする可能性があります。
- 型変換が必要なパラメータを指定して別のSPを呼び出すSPを呼び出すと、サーバーがクラッシュする可能性があります。
予期しない動作を引き起こす可能性があるもの
- SHOW WARNINGSは、InnoDBの以前のトランザクションからの間違った外部キー関連の警告/エラーを表示する可能性があります。
- LIMIT ROWS EXAMINEDを使用したI_S.INNODB_SYS_TABLESからのクエリ時のmem_heap_create_block_funcでのLeakSanitizerエラー
- LIMIT ROWS EXAMINEDを超えるI_S.INNODB_SYS_INDEXESからのクエリにより、rec_copy_prefix_to_buf_oldでER_UNKNOWN_ERRORエラーおよびLeakSanitizerエラーが発生します。
- ALGORITHM=COPYを指定して存在しないFOREIGN KEYをDROPすると、予期しないER_ERROR_ON_RENAMEが発生します。
- FOREIGN_KEY_CHECKSは、コピー以外の変更が無効なFK構造を作成するのを防止しません。
- VARCHARが拡張されすぎて列接頭辞インデックスが使用される必要がある場合、VARCHAR列のセカンダリインデックスが破損する可能性があります。
- Spider:有効なLEFT JOINで、ERROR 1064が発生します。
- Spiderテーブルからのサブクエリを使用したクエリ時の構文エラー
- SpiderがSEMI-JOINを認識しません。
- wsrep_provider_optionsは、サーバーログの"Warning 1265 Data truncated for column 'VARIABLE_VALUE' at row 1"のような診断により、深くて長いディレクトリパスでトランケートされる可能性があります。
- Mariadb-dumpオプションの--delete-master-logsが無視されます。
- GTIDセマンティックを破壊するマルチソースレプリケーションフィルタ
- wsrep_gtid_modeがONに設定されている場合、wsrep_gtid_domain_idはブートストラップされたノード以外のノードでは無視されます。
- set rand_seed1、rand_seed2と組み合わせて使用すると、接続は次の接続で RAND()を制御できます。
- mariadb-upgradeは、バンドルされたプラグインのmysql.pluginエントリを削除しません。エラーメッセージ"[ERROR] mariadbd: Plugin 'unix_socket' is already installed."がアップグレード時に表示されます。
- MariaDB systemdユニットでTaskMaxがinfinityに設定されていないため、接続数としてmax_connectionsで定義されている値よりも低い値が可能である可能性があります。
- ストレージエンジン Spiderがサーバー起動時にロードされる場合、Spider関連システムおよびステータス変数は使用できません。
- SPIDERタイプのテーブルに対するクエリでは正規表現を使用できません。
- --target-dirオプションが--prepareと一緒に使用されていない場合、MariaDB Enterprise Backupが、Can't open shared library '/file_key_management.so' (errno: 2, cannot open shared object file: No such file, or directory)というエラーを表示することがあります。
- データベース部分では、ストアドプロシージャ名の大文字と小文字が区別されません。同じデータベース名が小文字と大文字として使用されている場合、これにより間違ったストアドプロシージャが使用される可能性があります。
- CREATE UNIQUE INDEXが正しくない"ERROR 1286 (42000): Unknown storage engine 'partition'"というエラーで失敗することがあります。
- 接続に成功すると、グローバル変数 autocommit=0が設定されているにもかかわらず、サーバーはOKパケットのserver_statusにSERVER_STATUS_AUTOCOMMITを設定します。
- spider_same_server_link=0が設定されていても、同じインスタンス上のテーブルを参照するSpiderテーブルを作成できる場合があります。
- Spiderがテーブル構造の自動検出に失敗し、ERROR 12500 (HY000): unknownが表示されます。
- REGEXP_REPLACEが、ORACLEモードのREPLACEとは異なる空の文字列を扱います。
- Enterprise Audit Pluginは常にユーザー名を報告するとは限りません。
パフォーマンスに関連するもの
- ALGORITHM=INPLACEを使用したALTERまたは新しいインデックスの追加により、テーブルスペースのファイルサイズが増加する可能性があります。
- データディレクトリが4096バイトより小さいブロックサイズを使用するNFSサーバー上に存在する場合、InnoDBファイルの拡張を伴う操作は非常に遅くなる可能性があります。
プラットフォーム
エンタープライズライフサイクルに合わせて、MariaDB Enterprise Server 10.4.33-23は次のプラットフォームに提供されます:
- 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.33-23のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/server/release-notes/mariadb-enterprise-server-10-4/10-4-33-23/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。