mysql数据库的各种类型的文件简述

1.参数文件:
     1)参数
        数据库参数其实就是一个键值对,比如innodb存储引擎中的innodb_buffer_pool_size,将这个参数设为1G,则键是innodb_buffer_pool_size,值为1G,一般通过show variables来查看数据库中的所有参数。
     2)参数类型
        mysql数据库中的参数可以分为两类,分别是动态参数(可以在mysql实例运行过程中进行修改,通过set命令进行修改,有些参数的只能在当前会话进行修改,有的参数可以在整个生命周期修改,有的参数可以既可以在整个生命周期又可以在当前会话修改生效)和静态参数(在整个实例生命周期内不得进行修改),
2.日志文件:
   mysql日志文件记录了影响mysql数据库的各种类型活动,mysql数据库中常见的日志文件有:
  1).错误日志:
        错误日志文件对mysql的启动、运行、关闭过程进行了记录,该文件不仅记录了错误信息,还记录了一些警告信息正确信息,用户可以通过show variables like'log_error'来定位该文件,有些时候用户可以直接从错误日志文件中得到优化的帮助,因为有些警告很好的说明了问题所在,
 2)慢查询日志:
       慢查询日志可以直接定位到存在问题的sql语句,从而进行sql语句层面的优化,比如可以在mysql启动时设置一个阈值(通过long_query_time来设定,默认为10秒),将运行时间超过该值的所有sql语句都记录到慢查询日志中,从而可以观察到是否有sql语句可以进行优化,默认mysql数据库并不启动慢查询日志。可以通过将参数log_slow_queries设置为on来开启,另外一个参数log_queries_not_using_indexes(打开则设置为on),如果sql语句没有使用索引,也会记录到慢查询日志中,mysql5.6.5版本开始还有一个参数log_throttle_queries_not_using_indexes,用来表示每分钟允许记录到slow log的且没有使用索引的sql语句次数,默认为0,表示没有限制,从而导致slow log文件的带下不断增加,因此可以通过这个参数进行配置,
   当有很多的sql语句被记录到文件中,为了是用户查看并分析该文件更加直观,使用数据库提供的mysqldumpslow命令,例如如果想要查看执行时间最长的10条语句,可以运用mysqldumpslow -s al -n 10 david.log(其中david.log是文件名),从mysql5.1开始可以将慢查询的日志记录放在一张表中,名为slow_log,通过参数log_output(动态的,并且是全局的)指定慢查询的输出方式,默认为file,设为table,则就可以查看slow_log表了,innosql版本加强了对于sql语句的捕获方式,增加了逻辑读取(包括磁盘和缓冲池)和物理读取(指从磁盘进行io读取的次数),
3)查询日志:
         查询日志记录了所有对mysql数据库请求的信息,无论这些请求是否得到了执行,默认文件名为主机名.log
4) 二进制日志(binary  log):
        二进制文件记录了对mysql数据库执行更改的所有操作,但是不包括select 、show这类操作 ,因为这类操作对数据本身并没有修改,如果想要记录该操作,只能使用查询日志,通过配置参数log-bin [=name]启动二进制日志,不指定name,则默认日志文件名为主机名,后缀为二进制日志的序列号,所在路径为数据库所在目录。
      二进制日志主要包括以下几个作用:
          恢复:例如在一个数据库全备文件恢复后,可以通过二进制日志进行point-in-time的恢复
          复制:通过复制和执行二进制日志使一台远程的mysql数据库与一台mysql数据库进行实时同步。
          审计:用户可以通过二进制日志中的信息进行审计,判断是否有对数据库进行注入的攻击。
   以下配置文件的参数影响着二进制日志记录的信息和行为:
       max_binlog_size:指定了单个二进制日志文件的最大值,如果超过该值,则产生一个新的二进制文件,后缀名+1,
       binlog_cache_size:当使用事务的表存储引擎时,所有未提交的二进制日志会被记录到一个缓存中去,等该事务提交时直接将缓冲的二进制日志写入二进制日志文件,而该缓冲的大小有 binlog_cache_size决定,默认为32k,而且其是基于会话的,当一个线程开始一个事务,mysql会自动分配一个大小为binlog_cache_size的缓存。
       sync_binlog:默认情况下,二进制日志并不是在每次写的时候同步到磁盘,因此,当数据库所在系统发生宕机,可能会有最后一部分数据没有写入二进制日志文件中,这会给恢复和复制带来问题,参数sync_binlog=[N]表示每写缓冲多少次就同步到磁盘,n=1表示以同步写磁盘的方式来写二进制日志,默认为0
       binlog-do-db和binlog-ignore-db:表示需要写入或忽略写入哪些库的日志,默认为空,表示需要同步所有库的日志到二进制日志
       binlog_format:  
         影响记录二进制日志的格式,mysql5.1版本之前没有这个参数,所有二进制文件的格式都是基于sql语句的级别的,mysql5.1版本之后引入这个参数,其可设的值为statement(记录日志的逻辑sql语句)、row(增加记录表的行更改情况)、mixed(默认才有statement格式进行二进制日志文件的记录,在一些情况下会使用row格式).  
      这个参数是动态参数,可以在数据库运行环境下进行修改,设置为row,可以为数据库的回复和复制带来更好的可靠性,但是会增加二进制文件的大小,对磁盘要求会增加

    要想查看二进制日志文件的内容,必须使用mysql提供的狗根据mysqlbinlog,但是这个时候采用row格式,会使得mysqlbinlog后的结果不可读,只要加上-v或 -vv就可以看到具体的执行信息了,-vv会比-v显示更新的类型,
3.套接字文件:
       在unix系统下本地连接mysql可以采用unix域套接字方式,这时就需要一个套接字文件,一般在/tmp目录下,名为mysql.sock
4.pid文件:
      当mysql实例启动时,会将自己的进程id写入一个文件中,即pid文件,由参数pid_file控制,默认位于数据库目录下,文件名为主机名.pid。
5.表结构定义文件:
       因为mysql插件式存储引擎的体系结构的关系,mysql数据的存储是根据表进行的,每个表都有与之对应的文件,但是不管是用何种引擎,mysql都有一个以frm为后缀名的文件,记录了该表的表结构定义,frm还用来存放视图的定义,例如用户创建了一个v_a视图,对应产生一个v_a.frm文件。用来记录视图的定义。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章