主な変更点
● トランザクション再生用の設定可能なチェックサム検証
・読み取り/書き込み分割ルーター(readwritesplit)でtransaction_replayパラメータが
有効になっている場合、チェックサム検証の動作を設定できるようになりました。
・新しいtransaction_replay_checksumパラメータを使用して、チェックサム検証動作を
設定できるようになりました。
・transaction_replay_checksum=fullが設定されている場合、チェックサム検証は以前の
リリースと同じように動作します。サーバーからのすべての応答はチェックサムに含まれます。
これは、再生されたトランザクションが既にクライアントに返されたトランザクションと正確に
一致する必要があるため、再生されたトランザクションの完全な整合性の保証を維持します。
・transaction_replay_checksum=result_onlyが設定されている場合、チェックサム検証は
OKパケットを除外します。チェックサムには、結果セットとエラーのみが含まれます。
このモードは、OKパケットで返された追加情報(自動生成されたID、警告など)が
アプリケーションによって使用されない場合に使用されることを目的としています。
このモードは、自動生成されたIDが後続のクエリで実際に使用されない場合にのみ安全に
使用できます。このような動作の例は、AUTO_INCREMENTフィールドを持つテーブルへの
INSERTで終了するトランザクションです。
・transaction_replay_checksum=no_insert_idが設定されている場合、チェックサム検証は、
OKパケットと、LAST_INSERT_ID()関数を使用するクエリの結果を除外します。このモードは、
クエリの結果がトランザクション内の後続のステートメントで使用されない場合にのみ安全に
使用できます。
・transaction_replay_checksumパラメータのデフォルト値がいっぱいです。
● トランザクション再生のより予測可能な再生タイムアウト
・読み取り/書き込み分割ルーター(readwritesplit)でtransaction_replayパラメータが
有効になっている場合、再生タイムアウトをより予測可能な方法で設定できるようになりました。
・新しいtransaction_replay_timeoutパラメータを使用して、タイムアウトを設定できるように
なりました。
・transaction_replay_timeoutパラメータはデフォルトでは有効になっていません。
デフォルトでは、トランザクションを再試行できる期間は、delayed_retry_timeoutおよび
transaction_replay_attemptsによって制御されます。これにより、delayed_retry_timeoutに
transaction_replay_attemptsを掛けた最大再生時間制限になる可能性があります。
デフォルトでは、これは50秒です。接続が作成された後に接続が失敗した場合、
最小再生時間制限は、transaction_replay_attempts秒(デフォルトでは5秒)まで
低くすることができます。通常、これは、データベースサーバーでmax_connections制限に
達した、または、Xpandグループの変更が進行中であるなどの問題が原因で発生します。
・新しいtransaction_replay_timeoutパラメータが継続時間値に設定されている場合、
トランザクションの再生にかけることのできる時間は、このパラメータによってのみ
制御されます。これは、接続が閉じられる前にトランザクションの再生を試行できる時間を
制御するための、より便利で予測可能な方法です。delayd_retry_timeoutが
transaction_replay_timeoutより小さい場合、同じ値に設定されます。
● サービスの設定可能なログレベル
・ログレベルをサービスごとのスコープで有効にできるようになりました。
・log_warning、log_notice、log_info、およびlog_debugパラメータは、対応する
グローバルパラメータが無効になっている場合、特定のサービスに対して有効に
できるようになりました。
バグ修正
<ハングまたはクラッシュする可能性があるもの>
・MaxScaleがセッションコマンドから誤った応答を受信すると、MaxScaleがデバッグアサーションを
発生させる可能性がありました。
・MaxScaleがトランザクションの再生中にセッションコマンドを再生すると、MaxScaleが
デバッグアサーションを発生させる可能性がありました。
・サーバーがXpand Monitor(xpandmon)からリンク解除されると、MaxScaleがデバッグアサーションを
発生させる可能性がありました。
・maxctrl set server maintenance --forceを実行すると、MaxScaleがクラッシュします。
・MaxScaleは、ダブルフリーまたは破損が原因でクラッシュする可能性があります。
・Avro Router(avrorouter)を使用してKafkaにデータを送信すると、MaxScaleがクラッシュする
可能性がありました。
<予期しない動作が発生する可能性があるもの>
・Xpand Monitor(xpandmon)の設定が実行時に変更されると、その操作は失敗します。
・読み取り/書き込み分割ルーター(readwritesplit)サービスに複数のプライマリサーバーがあり、
使用されているプライマリサーバーがダウンした場合、ルーターは他のプライマリサーバーに適切に
切り替わりません。これにより、再生されたセッションコマンドが失敗する可能性がありました。
・サーバーがXpand Monitor(xpandmon)にリンクされていると、サーバーは追加されません。
・OUTパラメータを使用したストアドプロシージャが実行されると、接続が停止する可能性がありました。
・MaxScaleがXpandからユーザーアカウントと権限をロードすると、MaxScaleログには次の警告が
含まれます。
Service user 'DATABASE_USER' of service 'SERVICE_NAME' does not have 'SHOW DATABASES' or a similar global privilege on '@@MONITOR_NAME:SERVER_NAME'. This may cause authentication errors on clients logging in to a specific database.
・遅延クエリがルーティングされると、MaxScaleログの対応するログメッセージにセッションIDが
含まれません。
・読み取り/書き込み分割ルーター(readwritesplit)でdelayed_retryパラメータが有効になっている場合、
セッションコマンドは再試行されません。
・データベース名にU+0080以上のコードポイントを持つutf8mb4文字が含まれている場合、
MaxScaleは次のエラーで接続に失敗します。
ERROR 1049 (42000): Unknown database 'DATABASE_NAME'
・MaxScaleのクエリ分類子は自動コミットを正しく追跡しません。
・MaxGUIのテーブルからモニターパラメータを変更できませんでした。
・MaxCtrlがlocalhostに接続し、http_proxy環境変数が設定されている場合、MaxCtrlはHTTPプロキシを
誤って使用します。
・MaxScaleがXpandと一緒に使用されると、MaxScaleはXpandの機能を適切に検出せず、それにより、
次のエラーがMaxScaleログに書き込まれる可能性がありました。
2021-12-08 21:22:18 error : (79) Unexpected result state. cmd: 0x08, len: 41 server: @@MONITOR_NAME:SERVER_NAME
2021-12-08 21:22:18 error : (79) Unexpected result state. cmd: 0xfe, len: 5 server: @@MONITOR_NAME:SERVER_NAME
・systemdウォッチドッグがハングのためにMaxScaleを強制終了すると、MaxScaleは間違ったスレッドの
スタックトレースをMaxScaleログに書き込む可能性がありました。
* gdbがインストールされている場合、MaxScaleはgdbを使用して、全てのスレッドの
スタックトレースをMaxScaleログに書き込むようになりました。
* gdbがインストールされていない場合、MaxScaleは、以前のリリースと同様に、シグナルを
キャッチしたスレッドのスタックトレースをMaxScaleログに書き込みます。
・MaxCtrlがstdinからパスワードを読み取る時、パスワードの一部としてstdinからコマンドを誤って
読み取る可能性がありました。
・読み取り/書き込み分割ルーター(readwritesplit)は、connection_timeoutのアイドル時間を誤って
計算します。これにより、実行中のトランザクションとの接続がアイドルと見なされる可能性があります。
・LIMIT句なしでMaxGUIを使用してSELECTクエリが実行されると、MaxScaleは自動的にLIMIT句を
追加しません。
・Kafka CDCルーター(kafkacdc)がBinlogルーター(binlogrouter)から複製すると、
次のエラーで失敗します。
Kafka: FindCoordinator response error: Group authorization failed.
・MaxScaleログをMaxGUIで表示すると、過剰なメモリを使用します。
MariaDB MaxScale 6.2.1のリリースノート(MariaDB社ウェブサイト):
https://mariadb.com/docs/release-notes/mariadb-maxscale-6/6-2-1/
MariaDBプロダクト・サポート・サービス
MariaDBプロダクト・サポート・サービスは、MariaDBおよびその関連製品をご利用されているお客様へ、必要なソフトウェアや専門的なサポートなどを提供するサービスです。