记一次生产MySQL数据库批量迁移表索引

数据库 MySQL
由于业务需要,需迁移测试环境上的索引到正式库上。下面简单记录下迁移过程中的脚本。

由于业务需要,需迁移测试环境上的索引到正式库上。下面简单记录下迁移过程中的脚本。

[[282697]]

1. 导出所有索引

包括PRIMARY KEY和INDEX

  1. SELECT 
  2.     CONCAT( 
  3.         'ALTER TABLE `', 
  4.         TABLE_NAME, 
  5.         '` ', 
  6.         'ADD ', 
  7.     IF 
  8.         ( 
  9.             NON_UNIQUE = 1
  10.         CASE 
  11.                 UPPER( INDEX_TYPE )  
  12.                 WHEN 'FULLTEXT' THEN 
  13.                 'FULLTEXT INDEX'  
  14.                 WHEN 'SPATIAL' THEN 
  15.                 'SPATIAL INDEX' ELSE CONCAT( 'INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE )  
  16.             END, 
  17.         IF 
  18.             ( UPPER( INDEX_NAME ) = 'PRIMARY', CONCAT( 'PRIMARY KEY USING ', INDEX_TYPE ), CONCAT( 'UNIQUE INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE ) )  
  19.         ), 
  20.         '(', 
  21.         GROUP_CONCAT( DISTINCT CONCAT ( '`', COLUMN_NAME, '`' ) ORDER BY SEQ_IN_INDEX ASC SEPARATOR ', ' ), 
  22.         ');'  
  23. ) AS 'Show_Add_Indexes'  
  24. FROM 
  25.     information_schema.STATISTICS  
  26. WHERE 
  27.     TABLE_SCHEMA = 'FSL_ATT_UAT'  
  28. GROUP BY 
  29.     TABLE_NAME, 
  30.     INDEX_NAME  
  31. ORDER BY 
  32.     TABLE_NAME ASC, 
  33.     INDEX_NAME ASC 

记一次生产mysql数据库批量迁移表索引

2. 不包括PRIMARY KEY,只包含INDEX

  1. SELECT 
  2.     CONCAT( 
  3.         'ALTER TABLE `', 
  4.         TABLE_NAME, 
  5.         '` ', 
  6.         'ADD ', 
  7.     IF 
  8.         ( 
  9.             NON_UNIQUE = 1
  10.         CASE 
  11.                 UPPER ( INDEX_TYPE )  
  12.                 WHEN 'FULLTEXT' THEN 
  13.                 'FULLTEXT INDEX'  
  14.                 WHEN 'SPATIAL' THEN 
  15.                 'SPATIAL INDEX' ELSE CONCAT ( 'INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE )  
  16.             END, 
  17.         IF 
  18.             ( UPPER( INDEX_NAME ) = 'PRIMARY', CONCAT( 'PRIMARY KEY USING ', INDEX_TYPE ), CONCAT( 'UNIQUE INDEX `', INDEX_NAME, '` USING ', INDEX_TYPE ) )  
  19.         ), 
  20.         '(', 
  21.         GROUP_CONCAT( DISTINCT CONCAT ( '`', COLUMN_NAME, '`' ) ORDER BY SEQ_IN_INDEX ASC SEPARATOR ', ' ), 
  22.         ');'  
  23. ) AS 'Show_Add_Indexes'  
  24. FROM 
  25.     information_schema.STATISTICS  
  26. WHERE 
  27.     TABLE_SCHEMA = 'fsl_att_uat'  
  28.     AND UPPER( INDEX_NAME ) != 'PRIMARY'  
  29. GROUP BY 
  30.     TABLE_NAME, 
  31.     INDEX_NAME  
  32. ORDER BY 
  33.     TABLE_NAME ASC, 
  34.     INDEX_NAME ASC 

记一次生产mysql数据库批量迁移表索引

到正式库执行结果语句即可。

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2019-08-19 01:34:38

数据库SQL数据库优化

2018-12-06 16:25:39

数据库服务器线程池

2019-11-22 08:05:01

数据库mysql分区

2019-12-12 10:38:10

mysql数据库nnodb

2019-09-05 09:17:37

MySQL数据库线程

2019-09-27 17:24:26

数据库优化sql

2019-07-25 08:30:58

数据库服务器故障

2019-12-16 07:18:42

数据库SQL代码

2019-09-08 17:52:10

数据库log file sy等待事件

2019-12-02 08:09:57

境数据库连接超时自动回收

2021-03-01 06:14:50

环境高并发延迟

2021-01-12 07:57:36

MySQLBinlog故障处理

2018-07-18 15:37:24

数据库DB2故障处理

2020-09-25 07:57:42

生产事故系统

2020-11-03 07:34:12

Kafka后端工程师

2022-06-01 06:17:42

微服务Kafka

2019-12-27 10:43:48

磁盘数据库死锁

2019-01-21 11:17:13

CPU优化定位

2018-02-23 13:41:05

数据库MySQL数据恢复

2019-11-28 08:31:21

Oracle数据库索引
点赞
收藏

51CTO技术栈公众号