参数文件:告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还会介绍各种参数的类型。

参数文件

当MySQL实例启动时,MySQL会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等设置。默认情况下,MySQL实例会按照一定的次序去取,你只需通过命令mysql --help|grep my.cnf来寻找即可。

MySQL参数文件的作用和Oracle的参数文件极其类似;不同的是,Oracle实例启动时若找不到参数文件,是不能进行装载(mount)操作的。MySQL稍微有所不同,MySQL实例可以不需要参数文件,这时所有的参数值取决于编译MySQL时指定的默认值和源代码中指定参数的默认值。但是,如果MySQL在默认的数据库目录下找不到mysql架构,则启动同样会失败,你可能在错误日志文件中找到如下内容:

090922 16:25:52 mysqld started
090922 16:25:53 InnoDB:Started;log sequence number 8 2801063211
InnoDB:!innodb_force_recovery is set to 1!
090922 16:25:53[ERROR]Fatal error:Can't open and lock privilege tables:Table
'mysql.host'doesn't exist
090922 16:25:53 mysqld ended

MySQL中的mysql架构中记录了访问该实例的权限,当找不到这个架构时,MySQL实例不会成功启动。

和Oracle参数文件不同的是,Oracle的参数文件分为二进制的参数文件(spfile)和文本类型的参数文件(init.ora),而MySQL的参数文件仅是文本的,方便的是,你可以通过一些常用的编辑软件(如vi和emacs)进行参数的编辑。

参数的基本概念和操作

可以把数据库参数看成一个键/值对。可以通过show variables查看所有的参数,或通过like来过滤参数名。

从MySQL 5.1版本开始,可以通过information_schema架构下的GLOBAL_VARIABLES视图来进行查找,如下所示:

select * from GLOBAL_VARIABLES where VARIABLE_NAME like 'innodb_buffer%'\G;

show variables like 'innodb_buffer%'\G

Oracle的参数有所谓的隐藏参数(undocumented parameter),以供Oracle“内部人士”使用,SQL Server也有类似的参数。有些DBA曾问我,MySQL中是否也有这类参数。我的回答是:没有,也不需要(其实是有)。即使Oracle和SQL Server中都有些所谓的隐藏参数,在绝大多数情况下,这些数据库厂商也不建议你在生产环境中对其进行很大的调整。

参数类型

MySQL参数文件中的参数可以分为两类:动态(dynamic)参数和静态(static)参数。动态参数意味着你可以在MySQL实例运行中进行更改;静态参数说明在整个实例生命周期内都不得进行更改,就好像是只读(read only)的。

可以通过SET命令对动态的参数值进行修改,SET的语法如下:

SET

  | [global|session] system_var_name=expr

  | [@@global.|@@session.|@@] system_var_name=expr

这里可以看到global和session关键字,它们表明该参数的修改是基于当前会话还是整个实例的生命周期。

有些动态参数只能在会话中进行修改,如autocommit;

有些参数修改完后,在整个实例生命周期中都会生效,如binlog_cache_size;

而有些参数既可以在会话又可以在整个实例的生命周期内生效,如read_buffer_size。

举例如下:

set read_buffer_size=524288;

select @@session.read_buffer_size\G;

select @@global.read_buffer_size\G;

将read_buffer_size的会话值从2MB调整为了512KB,可以看到全局的read_buffer_size的值仍然是2MB,也就是说,如果有另一个会话登录到MySQL实例,它的read_buffer_size的值是2MB,而不是512KB。这里使用了set global|session来改变动态变量的值。

使用set @@global|@@session来更改

set @@global.read_buffer_size=1048576;

select @@session.read_buffer_size\G;

select @@global.read_buffer_size\G;

把read_buffer_size全局值更改为1MB,而当前会话的read_buffer_size的值还是512KB。这里需要注意的是,对变量的全局值进行了修改,在这次的实例生命周期内都有效,但MySQL实例本身并不会对参数文件中的该值进行修改。也就是说下次启动时,MySQL实例还是会读取参数文件。如果你想让数据库实例下一次启动时该参数还是保留为当前修改的值,则必须修改参数文件。要想知道MySQL所有动态变量的可修改范围,参考MySQL官方手册的(Dynamic System Variables)的相关内容。

对于静态变量,如果对其进行修改,会得到类似如下的错误

set global datadir='/db/mysql';

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

MYSQL数据库的参数文件的更多相关文章

  1. atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js

    atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐)  vs   lang  ...

  2. MySql数据库恢复(*frm)文件

    mysql数据库恢复(*frm)文件 WorkBench 在使用虚拟服务器时,服务器提供商一般不会像我们使用本地数据库一样:使用导入导出(这样的文件后缀是*.sql).大部分时候提供的是一个文件夹,里 ...

  3. MySql数据库导出csv文件命令

    MySql数据库导出csv文件命令: MySql数据库导出csv文件命令: mysql> select first_name,last_name,email from account into ...

  4. ibdata1文件--缩小mysql数据库的ibdata1文件

    摘要 在MySQL数据库中,如果不指定innodb_file_per_table参数,单独存在每个表的数据,MySQL的数据都会存放在ibdata1文件. mysql ibdata1存放数据,索引等, ...

  5. MySQL服务读取参数文件my.cnf的规律研究探索

    在MySQL中,它是按什么顺序或规律去读取my.cnf配置文件的呢?其实只要你花一点功夫,实验测试一下就能弄清楚,下面的实验环境为5.7.21 MySQL Community Server.其它版本如 ...

  6. Mysql数据库配置参数详解大全

    名称 是否需要重启 值 允许值 描述 auto_increment_increment 否 1 1-65,535 auto_increment_increment和auto_increment_off ...

  7. MySQL数据库中.SQL文件的导出方式

    转自:http://tech.watchstor.com/management-117401.htm 在MySQL数据库中导入SQL文件是件很麻烦的事情,但是这是一项大家非常值得学习的技术,本文就从最 ...

  8. MYSQL数据库的日志文件

    日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件.如错误日志文件.二进制日志文件.慢查询日志文件.查询日志文件等. 错误日志 show variables like 'log_error ...

  9. C#连接Mysql数据库 MysqlHelper.cs文件

    mysql.data.dll下载_c#连接mysql必要插件mysql.data.dll是C#操作MYSQL的驱动文件,是c#连接mysql必要插件,使c#语言更简洁的操作mysql数据库.当你的电脑 ...

随机推荐

  1. Oracle Alert - APP-ALR-04108: SQL error ORA-01455

    SELECT OD.ORGANIZATION_CODE, TO_CHAR(H.ORDER_NUMBER), --ORACLE ALERT 自动转数字类型最长11位,转字符处理解决APP-ALR-041 ...

  2. iperf命令 +speedtest-cli

    iperf工具可以用来测量TCP或者是UDP的网络吞吐量,即bandwidth(带宽)测试.  iPerf的主要目标是帮助调整特定路径上的TCP连接. 众所周知,TCP最基本的调整问题是调整TCP窗口 ...

  3. windows本地代码上传github

    1.下载Git工具 https://www.git-scm.com/download/win 2.进到项目目录 cd /dir/dir/dir/file 3.初始化 git init 4.添加远程仓库 ...

  4. 如何在powerdesign15.1中使用自增列

    点击要设置为自增列的列 右键选择properties(或者按下ALT+enter) 点选红框,再点击Microsoft选项卡, 输入开始值和自增值即可 来自为知笔记(Wiz)

  5. Spring AOP详解(转载)所需要的包

    上一篇文章中,<Spring Aop详解(转载)>里的代码都可以运行,只是包比较多,中间缺少了几个相应的包,根据报错,几经百度搜索,终于补全了所有包. 截图如下: 在主测试类里面,有人怀疑 ...

  6. Linux Guard Service - 杀死守护进程

    杀死某个子进程 杀死守护进程的子进程后,改进程会变为僵尸进程 14087 ? Ss 0:00 ./test4-1 14088 ? S 0:00 \_ ./test4-1 14089 ? S 0:00 ...

  7. linux的定制和发布(一)

    如果总是仰视高山,就会挫伤我们攀登的勇气,使我们固步自封.我们需要做的就 是迈开自己的脚步,踏出第一步,let's go!       Linux的裁剪一般有三种方法: 1.以一个已经安装好的系统为基 ...

  8. 【C#】在datatable中添加一序号列,编号从1依次递增,并且在第一列

    详细链接:https://shop499704308.taobao.com/?spm=a1z38n.10677092.card.11.594c1debsAGeak/// <summary> ...

  9. JPA之@GeneratedValue注解

    JPA的@GeneratedValue注解,在JPA中,@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键), ...

  10. console使用技巧

    http://heikezhi.com/yuanyi/10%E4%B8%AAchrome%20console%E5%AE%9E%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7 ...