tencent cloud

TDSQL-C for MySQL

動向とお知らせ
製品アップデート
製品お知らせ
初心者ガイド
製品概要
プロダクト概要
製品の強み
適用シーン
製品アーキテクチャ
製品仕様
インスタンスタイプ
製品機能一覧
データベースのバージョン
リージョンとアベイラビリティゾーン
基本概念
利用制限
利用ガイドの推奨事項
自社開発カーネル
カーネル概要
カーネルバージョンのアップデート情報
カーネル最適化バージョン
機能特性
パフォーマンス関連機能
セキュリティカテゴリの機能
安定性機能
分析エンジン特性
カーネル問題のチェックと修復
購入ガイド
課金概要
製品価格
クラスタを作成する
構成変更説明
未払いについての説明
継続支払いの説明
返金ポリシー
従量課金から年/月単位サブスクリプションへの変換
従量課金からServerlessへの変換
付加価値サービスの課金説明
料金請求書の確認
クイックスタート
データベース監査
概要
監査インスタンス一覧
監査サービスを有効化する
監査ログの確認
ログ配信
事後アラーム設定
監査ルールの変更
監査サービスを変更する
監査サービスを停止する
監査ルールテンプレート
監査タスクの照会
サブユーザーへのデータベース監査利用権限付与
Serverlessサービス
Serverless入門
サーバーレス版クラスタの作成と管理
伸縮性スケーリング管理ツール
Serverlessリソースパック
マルチAZデプロイ
設定を変更する
よくあるご質問
Serverlessコスト見積ツール
操作ガイド
操作概要
コンソールでのクラスタページビューの切り替え
データベース接続
インスタンス管理
設定を変更する
インスタンス形態管理
クラスタ管理
読み取り専用インスタンス管理 
データベースプロキシ
アカウント管理
DMC
DMC(データベース管理ツール)
パラメータ設定
マルチAZデプロイ
グローバルデータベース
バックアップとリストア
操作ログ
データマイグレーション
パラレルクエリ
列ストレージインデックス CSI
分析エンジン
データベースセキュリティと暗号化
モニタリングとアラーム
SQLの基本操作
以下のコマンドを実行して、TDSQL-C for MySQLに接続してログインします
Tag
実践チュートリアル
TDSQL-C for MySQL データベース監査の等級保護実践
非InnoDBテーブル問題のワンクリック移行検出処理方法
DTSによるデータベースバージョンのアップグレード MySQL 5.7から8.0へ
TDSQL-C for MySQL 使用規範
新版コンソール
データベースプロキシの複数接続アドレスによる複数ROグループの実現
データベースプロキシのメリット
ストレージの課金モードの選び方
DTSによるリモートディザスタリカバリの構築
クラスタ用VPCの作成
データ復旧の方法
CPU使用率の高騰問題の解決方法
サブユーザーへの監視データ閲覧権限付与方法
ホワイトペーパー
セキュリティホワイトペーパー
性能ホワイトペーパー
トラブルシューティング
接続関連
性能関連
よくあるご質問
基本概念
購入と課金
サポートされるフォーマット
接続とネットワーク
機能特性
コンソールの操作
データベーステーブル
パフォーマンスとログ
データベース監査
TDSQL-C for MySQLとTencentDB for MySQLの違い
関連契約
SLA
利用規約
TDSQL-C ポリシー
プライバシーポリシー
データ処理と安全プロトコル
汎用参考
標準と認証
用語一覧
お問い合わせ

自動読み書き分離の紹介

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:40:06
本稿は、TDSQL-C for MySQLのデータベースプロキシサービスの自動読み書き分離、機能の利点、読み書き分離ルーティングルールを主に紹介します。

自動リードライト分離

現在、多くの本番環境ユーザーのビジネスシナリオでは、読み取りが多く書き込みが少ない状況や、予測不可能な業務負荷が存在します。大量の読み取りリクエストが発生するアプリケーションシナリオでは、単一のインスタンスが読み取り負荷に耐えられず、ビジネスに影響を与える可能性があります。読み取り能力の弾力的な拡張を実現し、データベースの負荷を分散させるために、1つまたは複数の読み取り専用インスタンスを作成し、大量のデータベース読み取り需要を満たすことができます。ただし、このようなソリューションでは、ビジネス側で読み書き分離の改修対応が必要であり、コードの堅牢性がビジネスの読み書き分離の品質を決定するため、ユーザーの技術要件が高く、柔軟性と拡張性に欠けます。 したがって、読み取り専用インスタンス作成後、データベースプロキシを開通し、アクセスアドレス戦略を設定した上で、アプリケーションにデータベースプロキシアドレスを設定することで、書き込みリクエストは自動的にプライマリインスタンスに転送され、読み取りリクエストは各読み取り専用インスタンスに自動転送されます。データベースプロキシは自動読み書き分離機能に加え、他の業務課題に対してもより優れたソリューションを提供します。具体的には以下の通りです:
負荷予測不能または不規則な変動/負荷の「急激な増加」現象が顕著なシナリオ インターネットビジネスシナリオでは、業務負荷とアクセス圧力は予測不可能で不安定なことが多く、頻繁な変動と「急激な負荷増加」が発生します。ビジネス側でショートコネクションを多用してデータベースにアクセスする場合、こうしたシナリオでは多数の新規接続(つまりデータベースとアプリケーション間の接続数)が容易に発生し、業務アクセス負荷の頻繁な変動に伴って変動しやすくなります。 データベースプロキシの接続管理により、ユーザーはデータベース接続を効果的に再利用することで、予測不可能なワークロードに対応するアプリケーション接続問題を適切に拡張できます。まず、複数のアプリケーション接続がデータベース接続を共有できるようにし、データベースリソースを効率的に活用します。次に、オープン状態のデータベース接続数を調整することで、データベースのパフォーマンスを維持できます。最後に、使用不能なアプリケーションリクエストを削除し、アプリケーション全体のパフォーマンスと可用性を保持します。
アプリケーションとデータベースが頻繁に接続を確立・切断するシナリオ サーバーレス、PHP、Ruby on Railsなどの技術で構築されたアプリケーションでは、アプリケーションリクエストを満たすためにデータベース接続を頻繁にオープン・クローズする可能性があります。 データベースプロキシはデータベース接続プールを維持することで、データベースの計算リソースや新規接続確立用メモリへの不要な負荷を回避できます。
データベースアクセス接続が長時間アイドル状態で解放されないシナリオ SaaSや電子商取引業界の従来型アプリケーションでは、ユーザーの再参加時の応答時間を最小限に抑えるため、データベース接続をアイドル状態のまま保持する場合があります。ユーザーはデータベースプロキシを使用してアイドル接続を維持し、必要に応じてデータベース接続を確立することで、大多数のアイドル接続をサポートするために閾値を過度に引き上げたり、高スペックデータベースへアップグレードしたりすることを回避できます。
データベースPaaSサービスのフェイルオーバーシナリオにおけるスムーズさと安定性の向上 データベースプロキシを使用することで、ユーザーは複雑な障害処理コードを記述する必要なく、データベースのフェイルオーバー(アクティブ/パッシブ)を透過的に許容できるアプリケーションを構築できます。データベースプロキシは読み取りトラフィックを新しいデータベースインスタンスに自動的にルーティングすると同時に、アプリケーション接続を維持します。


機能メリット

セルフサービス型リードライト分離と統一アクセスアドレス。
ネイティブリンクサポート、性能向上、保守コスト削減。
重みと閾値を設定可能で、ユーザーが柔軟に選択できます。
フェイルオーバー機能を備えており、データベースプロキシに障害が発生しても、リクエストはプライマリデータベースに正常にアクセスできます。
読み書きインスタンスの切り替え、構成変更、読み取り専用インスタンスの増減などが発生しても、データベースプロキシは設定を動的にホットロードできるため、ネットワーク中断や再起動が発生しません。

機能説明

TDSQL-C for MySQLのデータベースプロキシサービスは自動的な読み書き分離機能を備えており、読み書きインスタンスと複数の読み取り専用インスタンスに対する読み取り重みの割り当てをサポートしています。注意が必要なのは、ここの重みは読み取りリクエスト(非トランザクション)向けの重み割り当て戦略であることです。

読み書き分離のルーティング規則

マスターインスタンスに送信する

CREATE、ALTER、DROP、RENAMEなどのDDLステートメント。
INSERT、UPDATE、DELETEなどのDMLステートメント。
SELECT FOR UPDATEステートメント。
一時テーブル関連のステートメント。
一部のシステム関数呼び出し(例:last_insert_id())およびすべてのユーザー定義関数呼び出し。
LOCK関連ステートメント。
トランザクション開始後のステートメント(set autocommit=0を含む)。
ストアドプロシージャ。
セミコロンで接続された複数ステートメント。
SQL文内のKILL(コマンドではないKILL)。
すべてのユーザー変数に対するクエリおよび変更。

読み取り専用インスタンスを送信する

トランザクション外のSELECT文。
注意:
読み取り専用分析エンジンは読み書き分離をサポートしていません。

すべてのインスタンスに送信する

show processlist文。
すべてのシステム変数の変更(SETコマンド)。
USEコマンド

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック