<>初始化选项文件:
默认位置:windows平台
windir\my.ini windir可通过echo $WINDIR$查看
系统盘的根目录即:c:\my.ini
installdir\my.ini
linux/unix平台
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf:通过CMake源码编译时指定的SYSCONFDIR参数指定的路径
$MYSQL_HOME/my.cnf
~/.my.cnf:当前用户跟目录下寻找
两个参数指定详细的文件路径:
default-file:从本参数指定的文件中读取选项
default-extra-file:加载其他方式指定的选项后再读取本参数指定的文件中的选项
<>错误日志文件
错误日志通过log-error=/mysql/logs/mysql-error.log指定,如果没有指定默认文件保存在mysql的%datadir%下host_name.err
windows平台的错误日志信息会被记录到系统事件日志,linux/unix平台错误日志信息也被记录到系统日志syslog中。在启动mysqld_safe命令启动mysql服务时可以附加--syslog参数是mysql的日志信息也输出到系统日志中。

<>慢查询日志
mysql的查询日志有两种:
1、慢查询日志(Slow Query Log)
2、通用查询日志(General Query Log)不仅能记录慢的查询,而且所有执行的查询语句都会被记录下来。
mysql的慢查询日志不仅能记录到文件,还能自动保存到mysql数据库中的表对象里。
慢查询日志:执行时间超过系统变量long_query_time(默认值10秒)指定的参数值。并且访问的记录数超过系统变量min_examined_limit(默认值0条)的数量的语句。注意sql语句执行时间不包含初始化表锁的开销。sql语句执行完毕并且完成对其锁定资源释放后,mysqld进程会将符合腰间的sql语句写入慢查询日志,因此慢查询日志中语句记录和顺序有可能和执行顺序不同(因为每个语句的执行时间也不同)。
默认情况下慢查询日志功能是被禁用的,启用和禁用慢查询日志文件都是通过mysql的系统参数控制,主要有两个:
slow_query_log:指定是否输出慢查询日志,1输出 0不输出。默认为0
slow_query_log_file:指定日志文件存储位置和文件名,如果没有指定的话默认在data目录下的host_name-slow.log
本机mysql设置如下:
[mysql@linux01 conf]$ cat my.cnf |grep slow
slow_query_log=1
slow_query_log_file=/mysql/logs/slow_query.log

两个参数可以运行时实时修改不需要重启服务:禁用或启用输出慢查询日志:
set global slow_query_log='OFF';
set global slow_query_log='ON';
除了上面两个参数还有几个参数与慢查询相关:
long_query_time:指定慢查询执行时间的阈值,秒为单位,最小可以指定到微妙,默认是10秒。
log_short_format:用来控制输出到慢查询日志文件的信息,指定该选项后会减少向慢查询日志中输出的信息。
log_slow_admin_statements:用来控制是否将一些时间较长的管理类型语句,如OPTIMIZE TABLE、ANALYZE TABLE ALTER TABLE语句输出到慢查询日志中。
log_queries_not_using_indexes:用来控制是否将未使用索引的语句输出到慢查询日志文件。
log_throttle_queries_not_using_indexes:一般与log_queries_not_using_indexes参数组合使用,它的功能是控制每分钟输出到慢查询的未使用索引的记录条数。默认是0不是说不输出而是说不限制。
log_slow_slave_statements:复制环境专用参数,用来控制是否将复制的查询语句输出到慢查询日志。

<>普通查询日志:不仅仅记录查询语句,二是能够记录mysqld进程所做的几乎所有操作。用来做审计。默认不启动启用影响性能。
禁用或启用;普通查询日志:
general_log:有0和1两种(OFF或ON亦可) 0表示禁用 1表示启用
general_log_file:默认普通查询日志保存在data下,默认文件名为host_name.log可通过本参数指定日志的路径和文件名。
本机mysql设置如下:
general_log=0
general_log_file=/mysql/logs/general_query.log

也可以动态进行修改,不需要重启mysql服务。禁用或启用普通查询日志:
set global general_log='OFF'
set global general_log='ON'
禁用或启用会话产生的普通查询日志:
set sql_log_off='OFF';
set sql_log_off='ON';
普通查询日志对用户口令更改等在mysql5.6之后设计密码会自动加密。
普通查询日志文件中语句出现的顺序是按照mysqld接收顺序(注意不是执行顺序),这个跟慢查询日志正好相反。

普通查询日志输出方式控制:--log-output有三个选项值:可以同时指定用,隔开
TABLE:输出到数据库的日志表,对应general_log和slow_log两张表
FILE:输出信息到日志文件,默认值
NONE:不输出查询日志
本机设置:
[mysql@linux01 conf]$ cat my.cnf |grep log_output
log_output=FILE
注意当--log_output选项指定为NONE时,那么不管general_log和slow_log两个参数值是什么都不会再输出查询日志了。只有指定--log_output参数值部位NONE的基础上,才有可能继续日志文件输出路径的设置。

刷新日志表或日志文件可以使用FLUSH TABLES或FLUSH LOGS

<>二进制日志文件
二进制日志(Binary Log):记录数据库中的修改事件。
二进制日志文件(Binary Log File):保存数据库中修改事件的文件。
二进制日志文件的功能:
用于复制,将mysql master端的二进制日志发送至slave端,slave端即可根据二进制日志中的内容在本地重做以达到主从同步的目的。
用于恢复,二进制日志可用于数据恢复,当使用备份恢复了数据库后,通过应用二进制日志文件能够实现将数据库恢复到故障发生前的状态
二进制日志不记录不产生修改数据的语句。
二进制日志文件默不指定选项的话默认保存在data目录下文件名host_name-bin.num,每次mysql服务或刷新日志都会创建新的日志文件。
log-bin=/mysql/binlog/mysql-bin指定binlog的位置和文件名
max_binlog_size=512M 指定binlog最大大小
reset master;清空所有二进制日志文件。
purge binary logs语句可以用来删除指定的某个或默写日志文件。

查看二进制日志文件使用mysqlbinlog命令行工具。

系统变量:mysql数据库中系统配置 show [global] variables;
状态变量:mysql服务运行中的一些状态信息 show [global] status;都支持加like子句

如果二进制日志以行格式记录,并发插入(create select/insert select)会改为普通插入,以确保操作可被重现。如果使用基于语句格式记录,那二进制日志中记录的死原始语句。

二进制日志不是实时同步到磁盘,存在数据丢失的可能。

sync_binlog设置为1(秒)安全级别最高。
innodb_support_xa 设置该参数为1,启用分布式事务的支持。确保二进制日志与InnoDB数据文件的同步。

<>中继日志及复制状态文件
中继日志:(relay log)文件:用于保存读取到的Master二进制日志,由Slave节点的I/O现场负责数据的维护,类似oracle的Strandby Redologs。这个文件也可以通过mysqlbinlog命令解析和读取其中记录的事件内容。
Master信息日志文件(Master.info):保存复制环境中连接Master节点的配置信息,比如说Slaves节点连接Master使用的用户名、密码、IP、端口等均在其中。5.6版本之前这个信息日志保存在master.info文件中,默认在data路径下。5.6以后也可以选择将这些信息保存在mysql.slave_master_info表对象。
中继日志信息日志文件(relay-log.info):保存处理进度及中继日志文件的位置。5.6之前保存在data下的relay-log.info文件中,5.6以后这个信息保存在mysql.slave_relay_log_info表对象中。

中继日志文件:只存在于mysql复制(replication)环境的slave节点。这个日志文件跟mysql二进制日志非常相似,但是记录的时间内容有差异。二进制日志文件记录master端的修改行为,而中继日志则是记录接收自master端的二进制日志。二进制日志是master的,中继日志是slave的。默认中继日志会以host_name-relay-bin.nnnnnn命名的,保存在data目录下。其对应的初始化选项是--relay-log。中继日志是以主机名命名的,如果主机名发生了变更,复制就会中断。但对于--relay-log选项重新定义可文件命名规则的系统不会出现这种情况。

表对象数据文件:
frm文件:表对象的结构定义文件,每个存储引擎的表对象都会有这个文件
ibd文件:InnoDB引擎专用的数据文件
MYD文件:MyISAM引擎专用的数据文件
MYI文件:MyISAM引擎专用的索引文件
CSV文件:CSV引擎专用的数据文件
ARZ文件:Archive引擎专用的数据文件。

<>其他文件
mysql.pid文件:mysql服务的进程号 ps -ef |grep pid号可以看出,这个文件保存进程号的目的是防止mysql实例被多次启动。仅限mysqld_safe命令启动的情况。当使用mysqld_safe命令启动mysql服务,它会执行一系列的检查。其中就包括到mysql数据库根目录下查看是否存在mysql.pid,若发现有这个文件就会抛出一条错误信息,并终止mysql服务的启动:A mysqld process already exists
如果是使用mysqld命令启动,没有pid也会启动一个进程,这样会导致一个mysql数据库同时被多次启动。这也是推荐使用mysqld_safe命令启动数据库的原因。

<>套接字文件:在linux/unix环境下,可以使用unix域套接字。unix域套接字不是网络协议,只是有当mysql客户端和mysql服务在同一台机器上时才能使用。其文件名为mysql.sock,默认保存在/tmp下,也可以通过--socket选项指定该文件的路径。
system@jason>show variables like 'socket';
+---------------+------------------------+
| Variable_name | Value |
+---------------+------------------------+
| socket | /mysql/conf/mysql.sock |
+---------------+------------------------+
1 row in set (0.00 sec)

自动配置文件:每个mysql实例会有一个唯一的UUID,这与mysql的复制特性有关系。其文件为auto.cnf,其文件只有一行记录即服务器的UUID

涂抹mysql笔记-mysql数据库文件结构的更多相关文章

  1. 涂抹mysql笔记-mysql性能调优和诊断

    <>关键性指标1.IOPS(Input/Output operations Per Second)每秒处理的I/O请求次数:需要说明的一点,通常提到磁盘读写能力,比如形容它每秒读300M写 ...

  2. 涂抹mysql笔记-mysql管理工具

    五花八门的mysql管理工具<>mysql提供的命令行工具 mysql_install_db:mysql建库工具,在源码安装mysql环节我们使用过. mysql_safe:mysql启动 ...

  3. 涂抹mysql笔记-mysql复制特性

    <>mysql复制特性:既可以实现整个服务(all databases)级别的复制,也可以只复制某个数据库或某个数据库中的某个指定的表对象.即可以实现A复制到B(主从单向复制),B再复制到 ...

  4. 【MySQL笔记】数据库的查询

    数据库的查询 注:文中 [ ...] 代表该部分可以去掉. 理论基础:对表对象的一组关系运算,即选择(selection).投影(projection)和连接(join) 1.select语句 子语句 ...

  5. Mysql笔记3数据库基本操作

    1 创建数据库 create database 数据名称 default character set 编码; 2查看常用的编码校验规则 mysql> show character set; 3删 ...

  6. 涂抹mysql笔记-mysql字符集

    字符集:查看mysql数据库当前都支持哪些字符集:system@(none)>show character set;+----------+--------------------------- ...

  7. 【MySQL笔记】SQL语言四大类语言

     SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL.   1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句, ...

  8. 涂抹mysql笔记-数据库中的权限体系

    涂抹mysql笔记-数据库中的权限体系<>能不能连接,主机名是否匹配.登陆使用的用户名和密码是否正确.mysql验证用户需要检查3项值:用户名.密码和主机来源(user.password. ...

  9. Mysql数据库学习笔记之数据库索引(index)

    什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...

随机推荐

  1. centos7系统运行级别简介

    centos7系统运行级别简介我们知道,centos6及之前的版本中,系统运行级别通过/etc/inittab文件进行设置和控制,但在centos7中,对这个文件的设置将不会对系统运行级别产生影响,这 ...

  2. mysql和mariadb支持insert delayed的问题

    分析一个开源项目,往数据库里添加日志,为了避免写入日志信息影响正常业务,日志的插入方式采用了insert delayed的方式. 打印其数据库语句,复制到mysql执行报如下错误: ERROR 161 ...

  3. 停车场信息管理系统(C语言)

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 2//车库容量 #de ...

  4. Django学习教程

    教程link:https://code.ziqiangxuetang.com/django/django-install.html 最好用虚拟环境学习django,用pycharm时要注意所选的pyt ...

  5. 自动化测试badboy脚本开发(一)

    badboy的检查点: 检查点设置例子:以上一节脚本录制方法简单录制搜索“badboy”脚本,在搜索框中选中搜索内容(注意录制脚本后要停止录制)→点击工具栏中的Tools→选择Add Assertio ...

  6. Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载

    效果图: 1.activity_main.xml 描述:定义了六个按钮 <?xml version="1.0" encoding="utf-8"?> ...

  7. PHP输出中文乱码问题解决

    在php文件的最上面加上下面的语句: header('Content-Type: text/html; charset=utf-8');   如下图:

  8. union 和 case

    UNION 指令的目的是将两个 SQL 语句的结果合并起来,可以查看你要的查询结果. CASE更多的是一种判断分类,就想其他语言的case一样 1. CASE WHEN 表达式有两种形式 --简单Ca ...

  9. session_unset,session_destroy

    session_unset()释放当前用户在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的sessionid session_destroy()删除当前用户对应 ...

  10. FreeSWITCH添加中文语音

    1.准备中文语音包 可以到freeswitch官网下载,也可以自己录制 2.中文资源的安装路径:  英文资源的路径为conf/sounds/en/us/callie/...  类似的设置中文资源的路径 ...