ここでは、TencentDB for MySQLデータベースプロキシのアンチフラッシュ機能について説明します。
背景情報
データベースインスタンスの運用および保守プロセス中に、必要に応じて構成の変更、計画的なHA切替、計画的な再起動などの対応する調整が常に行われます。これらの動作により、ユーザーのセッションが中断されるため、接続のフラッシュ、新しい接続の一時的失敗などの問題を引き起こす可能性があります。TencentDB for MySQLデータベースプロキシは、アンチフラッシュ機能を提供します。データベースインスタンスが損失の多い切替または転送が行われる場合に、損失のないアプリケーションの継続性を提供し、接続とトランザクションの中断を回避できます。
実装の原理
アンチフラッシュ機能は、MySQLのsession track機能を使用します。計画的な損失の多い動作が認識されると、データベースプロキシは切替前のマスターノードとの接続を切断し、クライアントからデータベースプロキシへの接続を切替た後のマスターノードとの接続に復元し、session track機能によって、セッション関連のシステム変数、ユーザー変数、および文字セットエンコーディング情報を新しいバックエンド接続に転送し、アプリケーション側での損失のない切替を実現します。
注意事項
ステートメントで一時テーブルが使用されている場合(一時テーブルは各セッションに関連付けられているため)、接続を復元できず、エラーが直接報告されます。
データベースプロキシにはアンチフラッシュ機能があり、データベースプロキシのカーネルバージョンを1.3.1以降にアップデートする必要があります。
アンチフラッシュ機能により、3秒を超えたトランザクションを自動的に中止して、トランザクションを削除します。
接続が切り替わったとき、データベースプロキシがデータベースから結果メッセージを受信しているが、マスター・スレーブの切替によりメッセージの一部のデータのみが送信されている場合、この時点でアンチフラッシュは接続を維持し続けることができません。
パフォーマンステスト
以下、TencentDB for MySQLデータベースプロキシのアンチフラッシュ機能のパフォーマンステストについて説明します。
テスト環境
リージョン/アベイラビリティゾーン:北京 - 北京七区
クライアント:S5.8XLARGE64(標準型S5、32コア64GB)
クライアントOS:CentOS 8.2 64ビット
ネットワーク:Cloud Virtual Machine (CVM)と TencentDB for MySQLインスタンスのネットワークタイプはいずれもVirtual Private Cloud (VPC)であり、同一サブネットに所属します。
テストされるTencentDB for MySQLインスタンスの情報は以下の通りです。
ストレージ種類:ローカルSSDディスク
インスタンス種類:汎用型
パラメータテンプレート:高性能テンプレート
テストツール
今回のパフォーマンステストのツールであるSysBenchは、プラットフォームを超えて使用可能かつマルチスレッドをサポートしているモジュール化基準テストツールです。ハイロードのデータベースを実行する際におけるシステムの関連コアパラメータのパフォーマンスをテストするために使用されます。複雑なデータベース基準設定やデータベースのインストールをせずに、データベースシステムのパフォーマンスを迅速に把握することが可能です。
テスト方法
さまざまなメンテナンス操作シナリオで、アンチフラッシュ接続に対する高可用性MySQLインスタンスの接続キープアライブレートをテストします(つまり、メンテナンス操作の前後のフラッシュしない接続のレート)。
テスト結果
次のメンテナンスシナリオでは、高可用性MySQLインスタンスは、データベースプロキシのアンチフラッシュ機能を通じて100%の接続キープアライブレートを維持します。