涂抹mysql笔记-mysql数据库文件结构

时间:2022-12-12 08:31:13

<>初始化选项文件:
默认位置: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数据库学习笔记之数据库索引&lpar;index&rpar;

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

随机推荐

  1. &lbrack;LintCode&rsqb; Shape Factory 形状工厂

    Factory is a design pattern in common usage. Implement a ShapeFactory that can generate correct shap ...

  2. LR&lowbar;问题&lowbar;运行场景时提示scripts you are running in invalid

    问题描述 脚本在virtual user generator中运行正常. 在Controller中运行场景时报错: the target you defined cannot be reached. ...

  3. Qt Add ons Modules(听说QtSystem有接口可以获取 imei号)

    http://wiki.qt.io/Qt-Add-ons-Modules 听说QtSystem有接口可以获取 imei号.http://wiki.qt.io/Qt-Add-ons-Modules这儿下 ...

  4. c语言字符类别测试库函数&num;include&lt&semi;ctype&period;h&gt&semi;

    字符类测试<ctype.h> 头文件<ctype.h>中说明了一些用于测试字符的函数.每个函数的变量均为int类型,变量的值必须是EOF或可用unsigned char类型表示 ...

  5. redis缓存技术

    初学redis缓存技术,如果文章写得不好还请谅解 应用环境:win7 实现环境:cmd,eclipse redis缓存技术的特点就在于高效,因为目前涉及的数据量逐渐增多,在对于数据的存储上面和sql以 ...

  6. Linux上传下载文件命令

    转载自http://lupingui.iteye.com/blog/239694 linux系统下可以直接从客户端上传文件到服务器端,命令格式: [plain] view plaincopy scp  ...

  7. 019 关联映射文件中集合标签中的lazy&lpar;懒加载&rpar;属性

    <set>.<list>集合上,可以取值:true/false/extra,(默认值为:true) 实例一:(集合上的lazy=true(默认))class默认lazy=tru ...

  8. 线程、进程、协程 异步io

    https://www.cnblogs.com/wupeiqi/articles/6229292.html

  9. Class &quot&semi;xxxxx&quot&semi;defined without specifying a base class

    解决方法: 导入#import xxxx.h即可 程序需要了解整个类.所以需要添加 #import xxxx.h

  10. PV、IV、UV

    PV  访问量 UV 独立访客 IV 独立ip数 qps 流量