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:14:39

機能説明

データベース運用保守プロセスにおいて誤操作が発生する可能性があり、これらの誤操作はビジネスに深刻な影響を与える恐れがあります。誤操作によって業務が影響を受けた場合、一般的な復旧手段としてはロールバックやクローンなどの操作がありますが、少量のデータ変更や緊急障害復旧においては、ミスが発生しやすく時間もかかり、データ量が大きい場合の復旧時間は制御不能です。 TXSQLチームはInnodbエンジン上にフラッシュバッククエリ機能を設計・実装し、単純なSQL文を使用するだけで誤操作前の履歴データを照会可能としました。特定のSQL構文で指定時点のデータを照会することで、大量のデータ検索と復旧時間を大幅に削減し、誤操作後のデータを迅速に復旧させ、ビジネスの早期復旧を確保します。

サポートバージョン

カーネルバージョンはTDSQL-C for MySQL 5.7の2.1.13.001以上です。
カーネルバージョンはTDSQL-C for MySQL 8.0の3.1.10以上です。

適用シーン

フラッシュバッククエリ機能は、データベース運用保守プロセスにおいて誤操作後に履歴データを迅速に照会するために使用されます。 本機能を使用する際には、以下の点に注意が必要です:
Innodb物理テーブルのみサポートされ、ビューやその他のエンジンはサポートされていません。また、last_insert_id()など実際の列に対応しない関数もサポートされていません。
秒単位のフラッシュバッククエリのみサポートされ、100%の正確性を保証するものではありません。1秒以内に複数の変更があった場合、いずれかの変更がクエリされる可能性があります。
フラッシュバッククエリは主キー(または GEN_CLUST_INDEX)のみサポートします。
prepared statementおよびstored procedureでの使用はサポートしていません。
DDLはサポートされていません。テーブルに対してDDL(例:truncate table - このような操作はごみ箱からの復元を推奨)を実行した場合、フラッシュバッククエリの結果が期待通りでない可能性があります。
同一ステートメント内で同じテーブルに複数のフラッシュバッククエリ時間を指定した場合、現在のクエリ時間から最も古い時間が選択されます。
プライマリインスタンスとスタンバイインスタンスの間に時間差が生じるため、同じ時間を指定してフラッシュバッククエリを実行しても、両インスタンスで取得される結果が異なる可能性があります。
フラッシュバッククエリを有効にすると、undoログのクリーンアップが遅延し、メモリ使用量が増加します。Innodb_backquery_windowの設定を過大(推奨値は900~1800)にすることは推奨されません。特にビジネスアクセスが頻繁なインスタンスでは注意が必要です。
データベースインスタンスが再起動またはクラッシュした場合、再起動またはクラッシュ前の履歴情報を照会できなくなります。指定された時間はサポート範囲内である必要があります(サポート範囲はステータス変数 Innodb_backquery_up_time および Innodb_backquery_low_time で確認可能です。show status like '%backquery%'を実行します)。

使用説明

フラッシュバッククエリは新しいAS OF構文を提供します。パラメータ設定でInnodb_backquery_enableパラメータをONに設定することで本機能を有効化し、特定の構文を使用して指定時点のデータを照会できます。構文は以下の通りです:
SELECT ... FROM <テーブル名>
AS OF TIMESTAMP <時間>;
指定時間クエリの参考例
MySQL [test]> create table t1(id int,c1 int) engine=innodb;
Query OK, 0 rows affected (0.06 sec)

MySQL [test]> insert into t1 values(1,1),(2,2),(3,3),(4,4);
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0

MySQL [test]> select now();
+---------------------+
| now() |
+---------------------+
| 2023-08-17 15:50:01 |
+---------------------+
1 row in set (0.00 sec)

MySQL [test]> delete from t1 where id=4;
Query OK, 1 row affected (0.00 sec)

MySQL [test]> select * from t1;
+------+------+
| id | c1 |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+------+------+
3 rows in set (0.00 sec)

MySQL [test]> select * from t1 as of timestamp '2023-08-17 15:50:01';
+------+------+
| id | c1 |
+------+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
+------+------+
4 rows in set (0.00 sec)
履歴データを介したテーブル作成の例
create table t3 select * from t1 as of timestamp '2023-08-17 15:50:01';
履歴データのテーブルへの挿入例
insert into t4 select * from t1 as of timestamp '2023-08-17 15:50:01';
フラッシュバッククエリは永続化をサポートしており、メモリ内のリードビュー情報を定期的に物理テーブルに永続化できます。これにより再起動後も、再起動前のフラッシュバッククエリを実行可能です。この機能を有効にするには、フラッシュバッククエリを有効化した上で永続化スイッチをオンにする必要があります(永続化設定:innodb_backquery_persistent = ON)。そうでない場合は無効になります。
説明:
フラッシュバッククエリの永続化機能を利用するには、TDSQL-C for MySQL 8.0 カーネルバージョンが3.1.15以上である必要があります。

パラメータ説明

以下の表では、フラッシュバッククエリ機能で設定可能なパラメータの説明を列举します。
パラメータ名
パラメータ範囲
タイプ
既定値
値の範囲
再起動の要否
説明
innodb_backquery_enable
グローバルパラメータ
Boolean
OFF
ON/OFF
いいえ
フラッシュバッククエリ機能のスイッチ。
innodb_backquery_window
グローバルパラメータ
Integer
900
1 - 86400
いいえ
フラッシュバッククエリがサポートする時間範囲(単位:秒)。このパラメータの値が大きいほど、フラッシュバッククエリでサポートされる履歴データの照会期間が長くなりますが、同時にundo表領域が占有するストレージスペースも増加します。
innodb_backquery_history_limit
グローバルパラメータ
Integer
8000000
1 - 9223372036854476000
いいえ
undo履歴リンクリストの長さ制限。設定値を超えると、Innodb_backquery_windowを無視してパージがトリガーされ、履歴リンクリストの長さが設定値より低くなるまで継続します。
innodb_backquery_persistent
非グローバルパラメータ
Boolean
OFF
ON/OFF
いいえ
フラッシュバッククエリ永続化のスイッチ。

ヘルプとサポート

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

フィードバック