只备份某些表,在数据库内备份
使用 CREATE TABLE ... AS SELECT ...
命令来创建新表的确会造成原始表的索引和某些表属性丢失。这个命令只会复制数据和基本的表结构,不包括索引、外键、触发器、默认值设定或存储过程等。
如果你需要备份一个表并保留其完整结构(包括索引),你需要:
- 首先使用
SHOW CREATE TABLE example;
命令来获取创建原始表的完整 SQL 语句。 - 修改这个完整 SQL 语句来创建新的备份表,比如将表名改为
example_20231118
。 - 执行修改后的创建表 SQL 语句来创建新的备份表,这样就包含了索引和所有原始表的属性。
- 然后使用
INSERT INTO example_20231118 SELECT * FROM example;
来复制数据。
这种方法可以确保你的备份表保留了完整的结构和索引。