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

<>初始化选项文件:

默认位置: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值