从 MySQL 5.7 迁移到 MySQL 8.0 时,有一些重要的参数调整和新参数需要注意。MySQL 8.0 引入了许多新功能和改进,同时也对一些现有参数进行了更改或废弃。
1. lower_case_table_names
- 说明: 控制表名是否区分大小写。
- 重要性: 在迁移过程中,确保
lower_case_table_names
的设置一致,以避免数据损坏或不一致问题。 - 建议: 如果在 MySQL 5.7 中使用了特定的设置(例如
lower_case_table_names=1
),请确保在 MySQL 8.0 中也使用相同的设置。
2. default_authentication_plugin
- 说明: 设置默认的身份验证插件。
- 变化: MySQL 8.0 默认使用
caching_sha2_password
插件,而 MySQL 5.7 使用mysql_native_password
。 - 建议: 如果需要与旧版本客户端兼容,可以将
default_authentication_plugin
设置为mysql_native_password
。
3. innodb_default_row_format
- 说明: 设置 InnoDB 表的默认行格式。
- 变化: MySQL 8.0 默认使用
DYNAMIC
行格式,而 MySQL 5.7 默认使用COMPACT
行格式。 - 建议: 检查并确认你的应用程序和工具支持
DYNAMIC
行格式。如果不支持,可以将其设置为COMPACT
。
4. innodb_file_per_table
- 说明: 控制每个 InnoDB 表是否创建单独的
.ibd
文件。 - 变化: MySQL 8.0 默认启用
innodb_file_per_table
。 - 建议: 确保在迁移前已经启用了
innodb_file_per_table
,否则可能会导致表空间管理问题。
5. innodb_page_size
- 说明: 设置 InnoDB 页面大小。
- 变化: MySQL 8.0 支持多种页面大小(4KB、8KB、16KB 和 32KB),而 MySQL 5.7 只支持 16KB。
- 建议: 如果需要调整页面大小,请在初始化数据库之前进行设置,并确保所有相关配置和工具都支持新的页面大小。
6. transaction_isolation
- 说明: 设置事务隔离级别。
- 变化: MySQL 8.0 默认使用
REPEATABLE READ
隔离级别,而 MySQL 5.7 也是REPEATABLE READ
。 - 建议: 确认应用程序的事务隔离需求,并根据需要调整该参数。
7. sql_mode
- 说明: 设置 SQL 模式,控制 SQL 语法和数据验证行为。
- 变化: MySQL 8.0 默认的
sql_mode
更严格,包括ONLY_FULL_GROUP_BY
和STRICT_TRANS_TABLES
。 - 建议: 检查应用程序是否兼容更严格的
sql_mode
,如果不兼容,可以调整sql_mode
以匹配 MySQL 5.7 的设置。
8. max_connections
- 说明: 设置允许的最大连接数。
- 变化: MySQL 8.0 默认值可能与 MySQL 5.7 不同。
- 建议: 根据实际负载调整
max_connections
参数,确保有足够的连接数来处理请求。
9. innodb_buffer_pool_size
- 说明: 设置 InnoDB 缓冲池的大小。
- 变化: MySQL 8.0 对缓冲池的管理和优化有所改进。
- 建议: 根据系统内存和工作负载调整
innodb_buffer_pool_size
,通常建议设置为总物理内存的 50% 到 75%。
10. log_bin
和 binlog_format
- 说明: 启用二进制日志并设置二进制日志格式。
- 变化: MySQL 8.0 默认使用
ROW
格式的二进制日志。 - 建议: 确认应用程序和复制环境支持
ROW
格式,如果需要使用其他格式,请进行相应调整。
11. innodb_log_file_size
- 说明: 设置 InnoDB 日志文件的大小。
- 变化: MySQL 8.0 推荐更大的日志文件大小以提高性能。
- 建议: 根据系统的写操作频率和 I/O 性能调整
innodb_log_file_size
。
12. innodb_flush_method
- 说明: 设置 InnoDB 刷新磁盘的方式。
- 变化: MySQL 8.0 提供了更多的刷新方法选项。
- 建议: 根据存储设备类型和操作系统选择合适的刷新方法。
13. performance_schema
- 说明: 启用性能模式以收集详细的性能数据。
- 变化: MySQL 8.0 默认启用
performance_schema
。 - 建议: 如果不需要性能监控,可以禁用
performance_schema
以减少开销。
14. innodb_parallel_read_threads
- 说明: 设置 InnoDB 并行读取线程的数量。
- 变化: MySQL 8.0 引入了并行读取优化。
- 建议: 根据系统 CPU 核心数和工作负载调整
innodb_parallel_read_threads
。
15. innodb_dedicated_server
- 说明: 自动调整 InnoDB 相关参数以适应服务器资源。
- 变化: MySQL 8.0 新增了
innodb_dedicated_server
参数。 - 建议: 如果希望自动优化 InnoDB 参数,可以启用
innodb_dedicated_server
。