Skip to content

Commit

Permalink
sql-statements: flashback cluster support through ddl history (pingca…
Browse files Browse the repository at this point in the history
…p#12811)

* sql-statements: flashback cluster support through ddl history

* Update sql-statement-flashback-to-timestamp.md

* Update sql-statement-flashback-to-timestamp.md

* Update sql-statements/sql-statement-flashback-to-timestamp.md

Co-authored-by: Ran <huangran.alex@gmail.com>

* Update sql-statements/sql-statement-flashback-to-timestamp.md

Co-authored-by: Ran <huangran.alex@gmail.com>

* Update sql-statements/sql-statement-flashback-to-timestamp.md

Co-authored-by: Ran <huangran.alex@gmail.com>

* Update sql-statement-flashback-to-timestamp.md

* Update sql-statements/sql-statement-flashback-to-timestamp.md

* Update sql-statements/sql-statement-flashback-to-timestamp.md

* Update sql-statements/sql-statement-flashback-to-timestamp.md

* Update sql-statements/sql-statement-flashback-to-timestamp.md

* Update sql-statements/sql-statement-flashback-to-timestamp.md

---------

Co-authored-by: Ran <huangran.alex@gmail.com>
  • Loading branch information
Defined2014 and ran-huang authored Feb 10, 2023
1 parent c9e5721 commit b68dd45
Showing 1 changed file with 18 additions and 16 deletions.
34 changes: 18 additions & 16 deletions sql-statements/sql-statement-flashback-to-timestamp.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,11 @@ FlashbackToTimestampStmt ::=
```

* 执行 `FLASHBACK CLUSTER` SQL 语句的用户需要有 `SUPER` 权限。
*`FLASHBACK` 指定的时间点到开始执行的时间段内不能存在相关表结构变更的 DDL 记录。若存在,TiDB 会拒绝该 DDL 操作。
* 在执行 `FLASHBACK CLUSTER TO TIMESTAMP` 前,TiDB 会主动断开所有相关表上的连接,并禁止对这些表进行读写操作,直到 `FLASHBACK` 完成。
* `FLASHBACK CLUSTER` 不支持回退修改 PD 相关信息的 DDL,如 `ALTER TABLE ATTRIBUTE``ALTER TABLE REPLICA``CREATE PLACEMENT POLICY` 等。
* `FLASHBACK CLUSTER` 指定的时间点不能存在未执行完成的 DDL 记录。若存在,TiDB 会拒绝该 DDL 操作。
* 在执行 `FLASHBACK CLUSTER TO TIMESTAMP` 前,TiDB 会主动断开所有相关表上的连接,并禁止对这些表进行读写操作,直到 `FLASHBACK CLUSTER` 完成。
* `FLASHBACK CLUSTER TO TIMESTAMP` 命令不能取消,一旦开始执行 TiDB 会一直重试,直到成功。
*`FLASHBACK CLUSTER` 导致了元信息(表结构、库结构)的回滚,则相关的修改**不会**被 TiCDC 同步。因此,用户需主动暂停任务,待 `FLASHBACK CLUSTER` 完成后将上下游的 schema 定义手动同步一致,然后重新创建 TiCDC changefeed。

## 示例

Expand Down Expand Up @@ -74,22 +76,22 @@ mysql> SELECT * FROM t;
Empty set (0.00 sec)
```

如果从 `FLASHBACK` 指定的时间点到开始执行的时间段内有改变表结构的 DDL 记录,那么将执行失败
如果 `FLASHBACK CLUSTER` 指定的时间点有未完成的 DDL 记录,那么 `FLASHBACK CLUSTER` 将执行失败

```sql
mysql> SELECT now();
+---------------------+
| now() |
+---------------------+
| 2022-10-09 16:40:51 |
+---------------------+
1 row in set (0.01 sec)
mysql> CREATE TABLE t(a int);
Query OK, 0 rows affected (0.12 sec)
mysql> FLASHBACK CLUSTER TO TIMESTAMP '2022-10-09 16:40:51';
ERROR 1105 (HY000): Detected schema change due to another DDL job during [2022-10-09 16:40:51 +0800 CST, now), can't do flashback
mysql> ALTER TABLE t ADD INDEX k(a);
Query OK, 0 rows affected (0.56 sec)
mysql> ADMIN SHOW DDL JOBS 1;
+--------+---------+-----------------------+------------------------+--------------+-----------+----------+-----------+---------------------+---------------------+---------------------+--------+
| JOB_ID | DB_NAME | TABLE_NAME | JOB_TYPE | SCHEMA_STATE | SCHEMA_ID | TABLE_ID | ROW_COUNT | CREATE_TIME | START_TIME | END_TIME | STATE |
+--------+---------+-----------------------+------------------------+--------------+-----------+----------+-----------+---------------------+---------------------+---------------------+--------+
| 84 | test | t | add index /* ingest */ | public | 2 | 82 | 0 | 2023-01-29 14:33:11 | 2023-01-29 14:33:11 | 2023-01-29 14:33:12 | synced |
+--------+---------+-----------------------+------------------------+--------------+-----------+----------+-----------+---------------------+---------------------+---------------------+--------+
1 rows in set (0.01 sec)
mysql> FLASHBACK CLUSTER TO TIMESTAMP '2023-01-29 14:33:12';
ERROR 1105 (HY000): Detected another DDL job at 2023-01-29 14:33:12 +0800 CST, can't do flashback
```

可以通过日志查看 `FLASHBACK` 执行进度,具体的日志如下所示:
Expand Down

0 comments on commit b68dd45

Please sign in to comment.