当前位置: 首页 > news >正文

MySQL :参数修改

目录

  • 报错情况及解决办法
        • 1. `SET PERSIST log_bin_use_v1_row_events=ON;`
        • 2. `SET PERSIST innodb_buffer_pool_load_at_startup=ON;`
      • MySQL 参数修改的全面说明
        • 1. 修改方式
        • 2. 可修改参数的类型
        • 3. 确认修改结果
        • 4. 注意事项
  • MySQL参数可以从不同维度进行分类,常见的有以下几种分类方式及对应的设置方法:
      • 一、按作用范围分类
      • 二、按功能分类
      • 三、存储过程参数类型(特殊参数类型)
      • 官方文档说明

在 MySQL 中对参数进行修改时,常常会碰到各种报错,下面为你详细整理并说明之前遇到的报错以及 MySQL 参数修改的全面信息。

报错情况及解决办法

1. SET PERSIST log_bin_use_v1_row_events=ON;

报错信息

ERROR 1238 (HY000): Variable 'log_bin_use_v1_row_events' is a non persistent variable
Warning (Code 1287): '@@log_bin_use_v1_row_events' is deprecated and will be removed in a future release.
Error (Code 1238): Variable 'log_bin_use_v1_row_events' is a non persistent variable

原因

  • log_bin_use_v1_row_events 属于非持久化变量,不支持用 SET PERSIST 语句进行持久化设置。
  • 该变量已被弃用,未来版本会移除。
    解决办法
  • 动态修改:使用 SET GLOBAL log_bin_use_v1_row_events = ON; 在当前会话或者本次 MySQL 运行期间修改该变量的值。
  • 修改配置文件:在 my.cnf 或者 my.ini[mysqld] 部分添加 log_bin_use_v1_row_events = ON,然后重启 MySQL 服务器。
  • 考虑替代方案:查看 MySQL 官方文档,寻找该变量的替代配置。
2. SET PERSIST innodb_buffer_pool_load_at_startup=ON;

报错信息

ERROR 1238 (HY000): Variable 'innodb_buffer_pool_load_at_startup' is a read only variable

原因innodb_buffer_pool_load_at_startup 是只读变量,无法使用 SET PERSIST 语句进行修改。
解决办法

  • 修改配置文件:在 my.cnf 或者 my.ini[mysqld] 部分添加 innodb_buffer_pool_load_at_startup = ON,然后重启 MySQL 服务器。
  • 确认修改结果:使用 SHOW VARIABLES LIKE 'innodb_buffer_pool_load_at_startup'; 确认变量值是否修改成功。

MySQL 参数修改的全面说明

1. 修改方式
  • 动态修改:使用 SET GLOBAL 语句在运行时动态修改参数的值,示例如下:
SET GLOBAL max_connections = 500;

这种修改方式仅在当前 MySQL 会话期间有效,当 MySQL 服务器重启之后,参数会恢复到配置文件中设置的值。

  • 持久化修改
    • SET PERSIST:在 MySQL 8.0 及以上版本中,使用 SET PERSIST 语句可以将参数值持久化到 auto.cnf 文件,示例如下:
SET PERSIST max_connections = 500;

不过,并非所有参数都支持 SET PERSIST,只有部分可动态修改的全局变量支持。
- 修改配置文件:直接修改 MySQL 的配置文件(my.cnf 或者 my.ini),在 [mysqld] 部分添加或修改参数,然后重启 MySQL 服务器,新的参数设置才会生效。

2. 可修改参数的类型
  • 可动态修改的全局变量:这类变量可以在 MySQL 服务器运行时进行修改,并且部分可以使用 SET PERSIST 进行持久化设置,例如 max_connectionsinnodb_buffer_pool_size 等。
  • 只读变量:这类变量不能被用户修改,如 protocol_version 等。
  • 会话变量:针对每个客户端会话特定的变量,不能使用 SET PERSIST 进行持久化设置。
3. 确认修改结果
  • 查看当前变量值:使用 SHOW VARIABLES LIKE '变量名'; 查看当前参数的值。
  • 确认持久化设置:可以通过查询 performance_schema.persisted_variables 表来确认参数是否已持久化。
4. 注意事项
  • 备份配置文件:在修改配置文件之前,最好备份原配置文件,以防修改出错导致 MySQL 无法启动。
  • 重启影响:修改配置文件后需要重启 MySQL 服务器,这可能会影响正在运行的业务,建议在维护窗口进行操作。
  • 参数依赖:某些参数之间可能存在依赖关系,修改一个参数可能会影响其他参数的行为,需要谨慎操作。

总之,在修改 MySQL 参数时,需要根据参数的类型和具体需求选择合适的修改方式,同时要注意修改的影响和可能出现的问题。

MySQL参数可以从不同维度进行分类,常见的有以下几种分类方式及对应的设置方法:

一、按作用范围分类

  • 全局参数:对整个MySQL实例生效。例如max_connections(最大连接数量)、innodb_buffer_pool_size(InnoDB存储引擎缓存池的大小)等。
    • 查看方法:使用SHOW GLOBAL VARIABLES;命令查看当前值设置 。
    • 设置方法
      • 配置文件:在MySQL的配置文件(一般是my.cnfmy.ini,具体取决于操作系统)中的[mysqld] 组下修改。例如,要将最大连接数设置为500,缓存池大小设置为2GB,可以这样写:
[mysqld]
max_connections=500
innodb_buffer_pool_size=2G
    - **SQL命令**:使用`SET GLOBAL 参数名 = 值;`语句设置,但这种方式设置的参数在MySQL服务重启后会失效。例如:`SET GLOBAL max_connections = 500;`
  • 会话参数:只对特定的会话或连接生效。例如wait_timeout(连接的超时时间)等。
    • 查看方法:使用SHOW SESSION VARIABLES;查看当前会话的参数值,也可以使用SHOW VARIABLES;,该命令会同时显示全局参数和会话参数 。
    • 设置方法
      • 配置文件:同样在配置文件中设置,不过会话参数的设置相对复杂,可能需要特定的插件或配置方式来实现对会话的全局预设。
      • SQL命令:使用SET SESSION 参数名 = 值;语句,只对当前会话有效。例如:SET SESSION wait_timeout = 1800;

二、按功能分类

  • 连接相关参数:如max_connections(最大连接数)、wait_timeout(连接超时时间)等,用于控制客户端与MySQL服务器的连接情况。
  • 内存相关参数key_buffer(MyISAM存储引擎的键缓存大小)、innodb_buffer_pool_size(InnoDB存储引擎缓存池大小)等,用来管理MySQL使用的内存资源。
  • 查询优化相关参数query_cache_size(查询结果缓存大小)、join_buffer_size(连接缓存大小)等,帮助优化查询性能。
  • 事务相关参数innodb_support_xa(是否支持分布式事务)等,与事务处理相关。

三、存储过程参数类型(特殊参数类型)

  • 输入参数(IN):用于向存储过程传递数据,存储过程内部可以读取该参数的值,但不能修改它。
  • 输出参数(OUT):用于从存储过程返回数据,存储过程内部可以修改该参数的值,调用者可以读取该参数的值。
  • 输入输出参数(INOUT):既可以向存储过程传递数据,又可以从存储过程返回数据,存储过程内部可以读取和修改该参数的值,调用者也可以读取和修改该参数的值。
    • 设置方法:使用CREATE PROCEDURE语句创建存储过程时定义参数。示例如下:
DELIMITER //
CREATE PROCEDURE my_procedure(IN param1 INT, OUT param2 VARCHAR(50), INOUT param3 DECIMAL(10,2))
BEGIN -- 存储过程的逻辑代码
END //
DELIMITER ;

官方文档说明

可以通过MySQL官方网站查看详细的参数说明:https://dev.mysql.com/doc/refman/当前版本号/en/ ,在该文档中搜索具体的参数名,即可查看该参数的作用、默认值、取值范围以及设置建议等内容 。比如查看max_connections参数,在文档搜索框中输入“max_connections”,就能找到关于它的详细介绍。

log_bin_trust_function_creators


http://www.mrgr.cn/news/94976.html

相关文章:

  • 鸿蒙NEXT开发问题大全(不断更新中.....)
  • C++继承 ---- 继承是面向对象三大特性之一【好处:可以减少重复的代码】
  • Python教学:lambda表达式的应用-由DeepSeek产生
  • Direct2D 极速教程(3) —— 画动态淳平
  • LeetCode[42] 接雨水
  • Opencv之计算机视觉一
  • 《深度学习》—— 模型部署
  • 导出的使用
  • PHP转GO Go语言环境搭建(Day1) 常见问题及解决方案指南
  • 8. Merge Sorted Array
  • 【数据结构】LinkedList与链表(1) + 经典面试OJ题解析 —— 有码有图有真相
  • Mysql:关于命名
  • 五、面向对象
  • 大模型知识蒸馏:技术演进与未来展望
  • Pydoll:告别WebDriver!Python异步Web自动化测试工具
  • Linux上的`i2c-tools`工具集的详细介绍;并利用它操作IMX6ULL的I2C控制器进而控制芯片AP3216C读取光照值和距离值
  • 使用Azure CDN进行子域名接管
  • 网络爬虫【爬虫库urllib】
  • 前端剪贴板操作:从传统方法到现代方案
  • 3D标定中的平面约束-平面方程的几何意义