MYSQL数据库的参数文件
参数文件:告诉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数据库的参数文件的更多相关文章
- atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js
atitit.跨语言实现备份mysql数据库 为sql文件特性 api 兼容性java c#.net php js 1. 两个方法:: bat vs mysqldump(推荐) vs lang ...
- MySql数据库恢复(*frm)文件
mysql数据库恢复(*frm)文件 WorkBench 在使用虚拟服务器时,服务器提供商一般不会像我们使用本地数据库一样:使用导入导出(这样的文件后缀是*.sql).大部分时候提供的是一个文件夹,里 ...
- MySql数据库导出csv文件命令
MySql数据库导出csv文件命令: MySql数据库导出csv文件命令: mysql> select first_name,last_name,email from account into ...
- ibdata1文件--缩小mysql数据库的ibdata1文件
摘要 在MySQL数据库中,如果不指定innodb_file_per_table参数,单独存在每个表的数据,MySQL的数据都会存放在ibdata1文件. mysql ibdata1存放数据,索引等, ...
- MySQL服务读取参数文件my.cnf的规律研究探索
在MySQL中,它是按什么顺序或规律去读取my.cnf配置文件的呢?其实只要你花一点功夫,实验测试一下就能弄清楚,下面的实验环境为5.7.21 MySQL Community Server.其它版本如 ...
- Mysql数据库配置参数详解大全
名称 是否需要重启 值 允许值 描述 auto_increment_increment 否 1 1-65,535 auto_increment_increment和auto_increment_off ...
- MySQL数据库中.SQL文件的导出方式
转自:http://tech.watchstor.com/management-117401.htm 在MySQL数据库中导入SQL文件是件很麻烦的事情,但是这是一项大家非常值得学习的技术,本文就从最 ...
- MYSQL数据库的日志文件
日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件.如错误日志文件.二进制日志文件.慢查询日志文件.查询日志文件等. 错误日志 show variables like 'log_error ...
- C#连接Mysql数据库 MysqlHelper.cs文件
mysql.data.dll下载_c#连接mysql必要插件mysql.data.dll是C#操作MYSQL的驱动文件,是c#连接mysql必要插件,使c#语言更简洁的操作mysql数据库.当你的电脑 ...
随机推荐
- How To Make A DFF Read Only Through Form Personalisations? (文档 ID 1289789.1)
In this Document Goal Solution References APPLIES TO: Oracle Application Object Library - Vers ...
- svn自动更新服务器最新代码
1.很简单打开dos界面 cd到svn exe目录下,运行 cd C:\Program Files\TortoiseSVN\bin --svn安装目录(作者使用时TortoiseSVN客户端,其 ...
- /usr/bin/curl: Argument list too long的解决方法
使用curl发送http请求时,会出现-bash: /usr/bin/curl: Argument list too long的错误,此时,可用采用httpie代替curl发送请求: pip inst ...
- nmon在secureCRT下显示乱码问题
# 背景 下载安装了nmon,结果发现显示有问题,如下 # 解决 猜测应该是字体编码问题,查阅了解后,是因为CRT设置问题,需要修改下配置,(之前试用xshell比较棒,但公司禁止试用),如下修改 然 ...
- C# 实用小类
/// <summary> /// 汉字转换拼音 /// </summary> /// <param name="PinYin"></pa ...
- .Net 数据缓存浅析
目录 1场景出发 1.1数据请求 1.2优化改进 2缓存 3缓存进阶 3.1缓存清除 3.2有效性 3.3线程安全 4适用场景和优劣 4.1适用场景 4.2优劣 5结语 1场景出发 1.1数据请求 小 ...
- JVM垃圾收集器(1)
此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法& ...
- iOS 安装包瘦身 (上篇)
本文来自网易云社区 作者:饶梦云 1. 安装包组成 谈到 App 瘦身,最直接的想法莫过于分析一个安装包内部结构,了解其每一部分的来源.解压一个 ipa 包,拿到其 payload 中 app 文件的 ...
- C博客的第1次作业--分支,顺序结构
1.本章学习总结 1.1 思维导图 1.2本章学习体会,代码量学习体会 1.2.1学习体会 初步了解什么是C语言,明白了这门语言的基本运行功能.了解了关于c语言结构上,语法上的基本知识.下一步要进一步 ...
- SoundPool在使用
Button playButton; SoundPool sp; int soundID_1,soundID_2; int streamID_1,streamID_2; @Override prot ...