从 MYSQL 进行备份非常简单,但它不像转储数据库,这里是查询,您可以在其中导出结果并导入到您的第二个数据库中
它应该为我提供数据库中的所有索引
SELECT CONCAT (concat("ALTER TABLE ",trim(TABLE_NAME)),
group_concat(
IF(INDEX_NAME="PRIMARY",
concat(" ADD PRIMARY KEY (`", column_name,"`)"),
concat(" ADD INDEX `",INDEX_NAME,"` (`",column_name,"` ASC) ")
)),";") AS result
FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA='DB_Name'
GROUP BY TABLE_NAME;
要获取索引的输出为
SQL commands
并可以传输到另一个实例并执行(类似于导入 mysqldump),您可以从 CLI 执行以下操作:
mysql -ABNe 'SELECT CONCAT (concat("ALTER TABLE ",trim(TABLE_NAME)), group_concat( IF(INDEX_NAME="PRIMARY", concat(" ADD PRIMARY KEY (`", column_name,"`)"), concat(" ADD INDEX `",INDEX_NAME,"` (`",column_name,"` ASC) ") )),";") AS result FROM information_schema.STATISTICS WHERE TABLE_SCHEMA="DB_NAME" GROUP BY TABLE_NAME' > mysql_indexes_dbname.sql