我们可以更改lower_case_table_names 设置的唯一时间是与初始化MySQL 数据目录(mysqld -initialize)有关。
所以你需要创建一个逻辑备份,然后完全重新初始化MySQL,然后恢复备份。
可以使用的步骤示例如下:
- 将数据库置于只读模式,例如:
mysql> SET GLOBAL super_read_only = ON; Query OK, 0 rows affected (0.00 sec)
还建议关闭应用程序。
- 验证没有重复的模式或者表名:
mysql> SELECT LOWER(SCHEMA_NAME), COUNT(*) FROM information_schema.SCHEMATA GROUP BY LOWER(SCHEMA_NAME) HAVING COUNT(*) > 1; Empty set (0.00 sec)
mysql> SELECT TABLE_SCHEMA, LOWER(TABLE_NAME), COUNT(*) FROM information_schema.TABLES GROUP BY TABLE_SCHEMA, LOWER(TABLE_NAME) HAVING COUNT(*) > 1; Empty set (0.02 sec)
如果发现任何重复的标识符,则我们不能在不首先重命名重复项之一的情况下更改 lower_case_table_names。
使用 mysqlpump 或者 mysqldump 创建逻辑备份。
如果我们使用 mysqlpump,请确保包含 -users 选项以包含用户及其授权。验证我们可以恢复备份并且恢复的数据库按预期工作。
关闭 MySQL。
删除 datadir 下的所有文件以及我们可能用于 MySQL 文件的任何其他目录。
提示:在删除之前复制所有文件。更新 my.cnf 以包含 lower_case_table_names 的新值。
使用带有 mysqld 的 -initialize 选项重新初始化 MySQL,例如:
shell$ mysqld --defaults-file=/etc/my.cnf --initialize
重新初始化并更改 root 密码后,恢复备份。
验证一切正常。
日期:2020-09-17 00:11:06 来源:oir作者:oir