tencent cloud

TDSQL-C for MySQL

ドキュメントTDSQL-C for MySQL自社開発カーネルカーネル問題のチェックと修復二つのblobフィールドのpurge/rollback操作によるテーブルスペースfsegのnot full list破損

二つのblobフィールドのpurge/rollback操作によるテーブルスペースfsegのnot full list破損

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:14:40

問題

二つのblobフィールドのパージ・ロールバックがテーブルスペースのfseg not full listの破損を引き起こします。

トリガーシナリオ

2列のblobデータを持つテーブルに対するDML操作は、テーブルスペースのnot full listの破損を引き起こす可能性があります。その結果、そのテーブルスペースでのDML操作がクラッシュし、プライマリとバックアップのデータが同時に破損する可能性があり、デュアルマシンのクラッシュを引き起こします。

問題が発生したカーネルバージョン

TXSQL 8.0 バージョン 3.0.1~3.1.7。

修正済みカーネルバージョン

TXSQL 8.0 3.1.8。

チェック方法

以下のコマンドを参考に、スクリーニングを行ってください。
テーブル詳細カラム情報照会
SELECT
t1.TABLE_SCHEMA,
t1.TABLE_NAME,
t1.COLUMN_NAME,
t1.DATA_TYPE
FROM
INFORMATION_SCHEMA.COLUMNS t1
INNER JOIN (
-- サブクエリ:まずは条件に合致する(特定タイプの列数 >= 2)テーブルを抽出します
SELECT
TABLE_SCHEMA,
TABLE_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
DATA_TYPE IN ('blob', 'mediumblob', 'longblob', 'json', 'text', 'MEDIUMTEXT', 'LONGTEXT', 'geometry')
AND TABLE_SCHEMA IN ('xxx', 'xxxx') -- 実際のライブラリ名に置き換えてください
GROUP BY
TABLE_SCHEMA,
TABLE_NAME
HAVING
COUNT(*) >= 2
) t2 ON t1.TABLE_SCHEMA = t2.TABLE_SCHEMA AND t1.TABLE_NAME = t2.TABLE_NAME
WHERE
-- 外側で再度タイプをフィルタリングし、リスクを引き起こすカラムのみをリストアップすることを保証します
t1.DATA_TYPE IN ('blob', 'mediumblob', 'longblob', 'json', 'text', 'MEDIUMTEXT', 'LONGTEXT', 'geometry');
リスクテーブル情報照会
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COUNT(*) as risky_column_count,
GROUP_CONCAT(COLUMN_NAME) as risky_columns -- 任意:カラム名を結合して一行に表示します
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
DATA_TYPE IN ('blob', 'mediumblob', 'longblob', 'json', 'text', 'MEDIUMTEXT', 'LONGTEXT', 'geometry')
AND TABLE_SCHEMA IN ('xxx', 'xxxx')
GROUP BY
TABLE_SCHEMA,
TABLE_NAME
HAVING
COUNT(*) >= 2;

修正方法

1. カーネルバージョンをTXSQL 8.0 3.1.8にアップグレードしてください。操作方法については、カーネルマイナーバージョンのアップグレードを参照してください。
2. カーネルバージョンのアップグレード後、破損したテーブルの再構築修復を実施できます。alter table xx engine = innodb;の方法で修復可能です。テーブルロックによる業務影響を避けるため、pt-oscなどのツールを使用し、業務閑散期に修復を行うことを推奨します。

ヘルプとサポート

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

フィードバック