mysql> select * from xxg limit 10;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 1 | Window | 1600 |
| 2 | Window | 1600 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
±—±-------±-----+
10 rows in set (0.00 sec)
抽样获取10行数据。
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-09 16:13:38 |
±--------------------+
1 row in set (0.00 sec)
mysql> delete from xxg where id=1;
Query OK, 1 row affected (0.01 sec)
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-09 16:14:18 |
±--------------------+
1 row in set (0.01 sec)
mysql> update xxg set n=300 where id=2;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-09 16:14:43 |
±--------------------+
1 row in set (0.00 sec)
mysql> select * from xxg limit 10;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 2 | Window | 300 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
| 11 | Window | 1600 |
±—±-------±-----+
10 rows in set (0.01 sec)
mysql> select * from xxg as of timestamp ‘2025-06-09 16:12:50’ limit 10;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 1 | Window | 1600 |
| 2 | Window | 1600 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
±—±-------±-----+
10 rows in set (0.01 sec)
mysql> select * from xxg as of timestamp ‘2025-06-09 16:14:30’ limit 10;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 2 | Window | 1600 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
| 11 | Window | 1600 |
±—±-------±-----+
10 rows in set (0.01 sec)
mysql> select * from xxg as of timestamp ‘2025-06-09 16:14:50’ limit 10;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 2 | Window | 300 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
| 11 | Window | 1600 |
±—±-------±-----+
10 rows in set (0.00 sec)
mysql> select * from xxg limit 10;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 2 | Window | 300 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
| 11 | Window | 1600 |
±—±-------±-----+
10 rows in set (0.01 sec)
mysql> create table t1 as select * from xxg as of timestamp ‘2025-06-09 16:12:50’ limit 10;
ERROR 1105 (HY000): ‘CREATE TABLE … SELECT’ is not implemented yet
mysql> create table t1 as select * from xxg where 1=2;
ERROR 1105 (HY000): ‘CREATE TABLE … SELECT’ is not implemented yet
mysql> create table t1 as select * from xxg;
ERROR 1105 (HY000): ‘CREATE TABLE … SELECT’ is not implemented yet
mysql>
mysql> show create table xxg\G
*************************** 1. row ***************************
Table: xxg
Create Table: CREATE TABLE
xxg (
id int NOT NULL AUTO_INCREMENT,
m varchar(10) DEFAULT NULL,
n int DEFAULT NULL,
PRIMARY KEY (
id) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=12329325
1 row in set (0.00 sec)
mysql> create table t1 (
->
id int NOT NULL AUTO_INCREMENT,
->
m varchar(10) DEFAULT NULL,
->
n int DEFAULT NULL,
-> PRIMARY KEY (
id));
Query OK, 0 rows affected (0.52 sec)
mysql> insert into t1 select * from xxg as of timestamp ‘2025-06-09 16:12:50’ limit 10;
ERROR 8135 (HY000): can not set different time in the as of
采用insert into的方法,不支持。
需要用的命令是import into,这里注意后面还要带一个from。特殊的语法。
mysql> import into t1 from select * from xxg as of timestamp ‘2025-06-09 16:12:50’ limit 10;
ERROR 9006 (HY000): GC life time is shorter than transaction duration, transaction starts at 2025-06-09 16:12:50 +0800 CST, GC safe point is 2025-06-09 16:24:55.441 +0800 CST
mysql> show variables like ‘tidb_gc_life_time’;
±------------------±------+
| Variable_name | Value |
±------------------±------+
| tidb_gc_life_time | 10m0s |
±------------------±------+
1 row in set (0.00 sec)
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-09 16:50:44 |
±--------------------+
1 row in set (0.00 sec)
mysql> delete from xxg where id<21;
Query OK, 10 rows affected (0.01 sec)
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-09 16:50:58 |
±--------------------+
1 row in set (0.00 sec)
mysql> select * from xxg where id<21;
Empty set (0.01 sec)
mysql> select * from xxg where id<22;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 21 | Window | 1600 |
±—±-------±-----+
1 row in set (0.00 sec)
mysql> import into t1 from select * from xxg as of timestamp ‘2025-06-09 16:45:50’ where id<21;
Query OK, 19 rows affected (0.92 sec)
Records: 19, ID: e8fe2d19-0061-41a3-a4d0-6eab82fd6bbb
mysql> select * from t1;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 2 | Window | 300 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
| 11 | Window | 1600 |
| 12 | Window | 1600 |
| 13 | Window | 602 |
| 14 | Window | 1600 |
| 15 | Window | 1600 |
| 16 | Window | 1600 |
| 17 | Window | 602 |
| 18 | Window | 1600 |
| 19 | Window | 602 |
| 20 | Window | 1600 |
±—±-------±-----+
19 rows in set (0.01 sec)
闪回建表成功。
下面尝试一下drop和truncate。Oracle的闪回是不支持truncate的。
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-09 16:53:06 |
±--------------------+
1 row in set (0.00 sec)
mysql> drop table t1;
Query OK, 0 rows affected (0.52 sec)
mysql> truncate table t2;
Query OK, 0 rows affected (0.52 sec)
mysql> select now();
±--------------------+
| now() |
±--------------------+
| 2025-06-09 16:53:56 |
±--------------------+
1 row in set (0.00 sec)
mysql> flashback table t1;
Query OK, 0 rows affected (0.56 sec)
mysql> flashback table t2;
ERROR 1050 (42S01): Table ‘t2’ already exists
mysql> flashback table t2 to t3;
Query OK, 0 rows affected (0.54 sec)
mysql> select * from t1;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 2 | Window | 300 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
| 11 | Window | 1600 |
| 12 | Window | 1600 |
| 13 | Window | 602 |
| 14 | Window | 1600 |
| 15 | Window | 1600 |
| 16 | Window | 1600 |
| 17 | Window | 602 |
| 18 | Window | 1600 |
| 19 | Window | 602 |
| 20 | Window | 1600 |
±—±-------±-----+
19 rows in set (0.00 sec)
mysql> select * from t2;
Empty set (0.00 sec)
mysql> select * from t3;
±—±-------±-----+
| id | m | n |
±—±-------±-----+
| 2 | Window | 300 |
| 3 | Window | 1600 |
| 4 | Window | 1600 |
| 5 | Window | 602 |
| 6 | Window | 1600 |
| 7 | Window | 602 |
| 8 | Window | 1600 |
| 9 | Window | 602 |
| 10 | Window | 1600 |
| 11 | Window | 1600 |
| 12 | Window | 1600 |
| 13 | Window | 602 |
| 14 | Window | 1600 |
| 15 | Window | 1600 |
| 16 | Window | 1600 |
| 17 | Window | 602 |
| 18 | Window | 1600 |
| 19 | Window | 602 |
| 20 | Window | 1600 |
±—±-------±-----+
19 rows in set (0.01 sec)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-3087925/ ,如需转载,请注明出处,否则将追究法律责任。