MySQL server options

news2024/9/24 15:20:10

介绍

MySQL安装部署时,经常会关注一些参数是否合理。其实这些参数分为两类型。环境中调整的绝大部分是引擎层方面的。服务层参数,就是mysqld服务启动时的参数,如:datadir,port,socket之类的的,这些是基本常用的服务参数。

正好之前碰到一个server层的事务提交问题,进一步更多了解服务层参数。除此之外,服务层参数还要分Windows,Linux系统。有些也可以设置在mysqld配置里。

目前服务层参数支持5种方面:

  • 影响安全性;
  • ssl相关选项;
  • Binary Log;
  • Replication相关;
  • 特定存储引擎的选项;

可通过verbose help 进行查看:

shell> mysqld --verbose --help

服务层参数

tc-heuristic-recover

如下错误说明是2阶段提交服务端出现问题,还没有到达引擎层。

[ERROR] Found 8 prepared transactions! It means that mysqld was not shut down properly last time 
and critical recovery information (last binlog or tc.log file) was manually deleted after a crash. 
You have to start mysqld with --tc-heuristic-recover 
switch to commit or rollback pending transactions.

代码实现上的备注信息:

ER_XA_NO_MULTI_2PC_HEURISTIC_RECOVER
  eng "--tc-heuristic-recover rollback strategy is not safe on systems with 
more than one 2-phase-commit-capable storage engine. Aborting crash recovery."

mysqld启动时添加
–tc-heuristic-recover=COMMIT或者–tc-heuristic-recover=ROLLBACK
执行完成后,去掉该参数再启动一次即可。

如:启动是还有问题,还可以配合innodb_force_recovery 进行修复操作。

memlock

将mysqld进程锁定在内存中,占有的内存,可以避免交换,但是也可能带来危险:如果没有足够的可锁定内存,mysql尝试分配更多内存时会崩溃。这也可能导致锁定的内存太多而没有足够的内存留给操作系统。所以必须要足够的内存分配给操作系统和MySQL服务。

如使用memlock参数,必须验证下是否支持mlockall(),应该命令的输出中看到如下内容:

shell# grep mlockall /usr/include/sys/mman.h
extern int mlockall (int __flags) __THROW;
  • 使用此选项可能需要以root身份运行服务器,出于安全原因,可以通过更改limits.conf文件来避免以root身份运行服务器;
  • memlock建议跟和large_pages 大页配合使用;
  • 不能在不支持mlockall()系统调用的系统上使用此选项;

upgrade

对于版本升级一般包含两个步骤。
Step 1: Data dictionary upgrade.
Step 2: Server upgrade.(按照数据量情况而定,因为数据要扫描,可能时间有点长)

MySQL8.0之后用新版本软件启动,就会自动升级。因为这个参数upgrade,默认值是AUTO。可以按照实际需求合理使用。

备注:从MySQL 8.0.16开始,no-dd-upgrade已弃用。它被——upgrade选项所取代。这也是
MySQL服务器启动过程中防止自动升级数据字典表。

core-file

如果mysqld突然宕机,普遍情况下都会写一个core核心文件。核心文件体现mysqld进程的状态和内存映像。在Linux中coredump功能是当应用程序异常时,内核默认的一种异常信号处理机制,内核会把异常信息与进程内存转储成coredump文件,程序员通过gdb工具可以离线分析应用程序异常时的情况。
当然需要配合innodb_buffer_pool_in_core_file使用,innodb引擎缓冲区信息输出。

 mysqld --core-file  --innodb-buffer-pool-in-core-file=ON


备注:
MADV_DONTDUMP是核心转储,指的是在进程发生错误时,将进程地址空及其一些特定状态数据保存到磁盘文件中,以供调试使用。

skip-grant-tables

跳过授权表会导致服务器不读取mysql系统模式中的授权表,从而启动时根本不使用特权系统。当忘记root密码的时候,是常用的最有效的手段。

虽然skip-grant-tables启动服务器会禁用身份验证检查,但应用用户还是可以正常访问,所以在这种情况下,还会通过skip_networking禁用远程连接,配合使用。

flush

在每个SQL语句之后将所有更改刷新(同步)到磁盘。比双1设置(sync_binlog和innodb_flush_log_at_trx_commit) 更严谨。

port-open-timeout

在某些系统上,当服务器停止时,TCP/IP端口可能不会立即变得可用。如果服务器随后快速重新启动,则重新打开端口的尝试可能会失败。此选项表示如果无法打开TCP/IP端口,服务器应该等待多长秒才能使其空闲。默认为不等待。

transaction-read-only

设置事务访问模式,有效的组织事务性引擎的写操作。可以一些特定情况下使用。跟账号级别的read_only模式效果相似。

validate-config

验证服务启动配置文件my.cnf . 如果没有发现错误,则服务器终止,退出码为0。如果发现错误,服务器将显示一条诊断消息,并以退出码1终止。
是验证配置文件有效的手段。

slow-start-timeout

(仅限Windows),此选项控制Windows服务控制管理器的服务启动超时。该值是服务控制管理器在启动期间试图终止windows服务之前等待的最大毫秒数(默认 15秒)。如果MySQL服务启动时间过长,可能需要增加这个值。值为0表示没有超时。

no-monitor

(仅限Windows)。该选项抑制了用于实现RESTART语句的fork: fork使一个进程充当另一个进程的监视器,而另一个进程充当服务器。对于使用此选项启动的服务器,RESTART只是退出而不重新启动。mysql8.0 简便命令RESTART,这个参数完全,可以应用于所有平台,防止一些误启动。

allow-suspicious-udfs

此选项控制是否可以加载主函数只有xxx符号的可加载函数。默认情况下,该选项处于关闭状态,只能加载具有至少一个辅助符号的可加载函数;这可以防止从包含合法函数的共享对象文件加载函数。
默认情况下,该选项处于禁用状态,以防止从共享库文件加载函数,而不是从包含合法可加载函数的共享库文件中加载函数。

属于安全参数。用户自定义函数就需要注意下。

defaults-extra-file

启动服务时,通过defaults-file可以指定my.cnf文件。extra是my.cnf之外,一些额外配置的配置内容。

mysqld  --defaults-file=/etc/my.cnf  --defaults-extra-file=/etc/my01.cnf --user=mysql &

除此之外 ,使使用–defaults文件,mysqld也会读取data目录下的mysqld-auto.cnf文件

external-locking

外部锁定是使用文件系统锁定来管理多个进程对MyISAM数据库表的争用。外部锁定用于不能假设MySQL服务器等单个进程是唯一需要访问表的进程的情况。如果在lockd无法完全工作的系统(如Linux)上使用此选项,则mysqld很容易死锁。

  • 环境下使用禁用外部锁定 --skip-external-locking。
  • 外部锁定仅影响MyISAM表访问。

总结

从mysqld help上还有诸多参数,可了解。有些在SHOW VARIABLES并不存在,只能在启动时配置。 在实际环境中这些参数使用率,还是比较低的。但以防万一,出现不可预测的问题,这些参数还是有一定的作用,解决问题。

参考

https://dev.mysql.com/doc/refman/8.0/en/server-options.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/176285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多重背包问题——单调队列优化

一、多重背包问题 我们在之前的文章中曾经讲解过多重背包问题,当时我们讲解了两种方法,一种方法就是三重循环,这种方法最为朴素好想。但是这种方法的时间复杂度非常高,后来我们想到了二进制优化的方式。那么今天我们将再介绍一种…

Java实习------Java基础2

基础语法基本数据类型 熟悉Java有哪些数据类型定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。Java语言提供了八种基本类型。六种数字类型(四个整数型,两个…

18. 循环语句while,for语句的详解

python 中的循环语句只有 for 和 while两种&#xff0c;没有do…while循环&#xff0c;这与c/c是不同的。 1. while循环 (1) 语法格式 while <condition>&#xff1a;...# demo, 使用while循环累加1-100的和。 sum 0 counter 1 while counter < 100:sum counterco…

Java 23种设计模式(4.创建者模式-建造者模式)

代码分析 结构图 代码 public class Product {//产品类,多个部件构成List <String> parts new ArrayList<>();public void Add(String part){parts.add(part);}public void show(){System.out.println("creat parts");for(String part:parts){System…

第十届蓝桥杯省赛 C++ B/C组 - 等差数列

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;等差数列 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥杯的小伙伴整理常考算法题解&#xff0c;祝大家…

STL分析(九 适配器)

容器适配器&#xff1a;stack&#xff0c;queue stack和queue内含一个deque 函数适配器 binder2nd绑定第二参数 调用的过程中&#xff0c;算法count_if函数读取了迭代器头尾指针后&#xff0c;读取第三个参数为functor object即仿函数。因此在其参数为bind2nd(less< int&g…

LeetCode220123_140、117. 填充每个节点的下一个右侧节点指针 II

给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL。初始状态下&#xff0c;所有 next 指针都被设置为 NULL。进阶…

双指针思想,c语言

问题导入 对一个给定的自然数M&#xff0c;求出所有的连续的自然数段&#xff0c;这些连续的自然数段中的全部数之和为M。 例如&#xff1a;1998 1999 2000 2001 2002 10000&#xff0c;所以从1998到2002的一个自然数段为M 10000的一个解。 输入格式 第一行&#xff0…

JQuery总结(三)

jQuery 事件 on可以同时绑定多个事件&#xff0c;并且动态添加的元素也会自动添加事件 自动触发事件&#xff1a; 案例1&#xff1a; <style>div{width: 100px;height: 200px;background-color: violet;transition: all .5s;}.current{width: 200px;height: 100px;ba…

ARP渗透与攻防(三)之流量分析

ARP攻击-流量分析 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 系列文章 1.环境准备 1.kali作为攻击机 2.win10作为靶机 IP地址&#xff1a;192.168.110.11 3.网关 IP地址&#xff1a;192.168.110.1 2.kali数据包转发 出于安全考虑&#xff0c;Linux系统默…

使用Py6S计算瑞利反射率教程

1、前言那么&#xff0c;首先&#xff0c;什么是瑞利反射率&#xff1f; 好吧&#xff0c;这是由大气中的瑞利散射引起的反射率&#xff08;在大气层顶部测量&#xff09;。 这是大气中气体分子对光的波长依赖性散射——这是光穿过大气时不可避免的结果。所以&#xff0c;关于如…

【2022年度总结与2023展望】---22年故事不长,且听我来讲

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f4e3;系列专栏&#xff1a;故事 文章目录前言一、高考前及高考后的暑假二、大一上的生活2.1 感受校园美景2.2 进入ACM实验室2.3 比赛和比赛经历三、那些帮助过我的人…

AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x

今天我们尝试一下在AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x。 GraalVM Enterprise 22是包含新功能的最新版本&#xff0c;但不是Long-Term-Support (LTS) 版本。 注意&#xff1a;下载Oracle GraalVM Enterprise Edition需要有Oracle账户&#xff0c;如果没…

六、pyhon操作mysql篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 下载pymysql 2. 新建数据库 3. mysql服务器版本查询 4. 执行非查询性质的SQL 5. 执行查询性质的sql ​​​​​​​6. 执行新增sql 1. 下载pymysql 右下角点击版本 选择解释器设…

基于Markdown文件的个人wiki

节后第一更&#xff0c;老苏祝您兔年大吉&#xff0c;幸福安康&#xff0c;事事顺心&#xff01; 什么是 wikmd &#xff1f; wikmd 是一个基于文件的 wiki&#xff0c;旨在简化。这些文档完全用 Markdown 编写&#xff0c;使用 pandoc 将 Markdown 文件转换为 html5。 &#…

WPF__Viewport3D 学习记录

1、相机的摆放位置和姿态 Position 是指定照相机的位置&#xff0c;注意Z轴的坐标&#xff0c;如果Z轴值大于模型的Z轴值&#xff0c;那么镜头就在物体前面&#xff0c;反之在物体后面。因此&#xff0c;你可以设置 LookDirection 来调整相机的方向&#xff0c;Position是相机的…

NodeJS 之模块化

NodeJS 之模块化参考描述模块化优点分类加载模块作用域优点自定义模块modulemodule.exportsexports 与 module.exports示例示例一示例二示例三建议CommonJS规范CommonJS参考 项目参考搜索引擎Bing哔哩哔哩黑马程序员 描述 项目描述操作系统Windows 10 专业版NodeJS18.13.0 模…

MU-MIMO是什么

欢迎来到东用知识小课堂&#xff01;1.什么是MIMOMIMO&#xff1a;Multiple-Intput Multiple-Output,即多入多出系统&#xff0c;这里的入和出是相对于发射天线和接受天线构成的天线系统来讲。通常的通信系统是单发单收&#xff0c;也就是SISO&#xff1a;Single-Input Single-…

【Bp2Lua】蓝图定义 Struct 和 Enum

【Bp2Lua】蓝图定义 Struct 和 Enum 背景 Enum Struct 结论 enum 可以保持不动&#xff0c;使用枚举值注释&#xff1b;如果C特别需要访问 enum&#xff0c;可以 C 化struct 必须 C 化 坑 首先&#xff0c;从字段访问都有字段名的坑&#xff0c;名字可以有空格&#xff0c…

maven-3-java调用python程序

【Java】使用Java调用Python的四种方法 fastjson的使用——JSON字符串、JSON对象、Java对象的互转 使用idea给Java程序打jar包&#xff08;超简单 超详细&#xff09; 1 环境准备 (1)新建Maven类型的项目&#xff0c;D:\processPython。 右键src/main/java&#xff0c;创建ja…