码迷,mamicode.com
首页 > 数据库 > 详细

MYSQL数据库-物理文件

时间:2017-11-19 18:46:32      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:mysql   日志文件   


物理文件组成


日志文件:错误日志,查询日志,慢查询日志,事务日志,二进制日志

日志是 mysql 数据库的觉要组成部分。日志文件中记录珩 mysql 数据库运行期间发生的变化,也就是说用来记录 mysql 数据库的客户端连接状况、 SQL 语句的执行情况和错误信息


1.错误日志(error log)


错误日志功能默认是开启的,存储在mysql数据库的数据目录中。

错误日志文件通常名称为hostname.err    hostname表示服务器主机名

错误日志信息也可以自己进行配置,通过log-error和log-warnings,前者是定义存储位置后者是定义是否将警告信息也定义到错误日志中

注意,当首次安装mysql5.7时初始密码会保存在错误日志中


2.二进制文件(binlog)


用于记录修改数据或有可能引起数据改变的mysql语句,井且记录语句发生时间执行时长,操作的数据等

可以通过    show global variables like ‘%log_bin%‘;    进行查询

在主配置文件中加入     log-bin=file_name    打开记录功能,

MYSQL会将所有修改数据库数据的query以二进制形式记录到日志文件中,日志文件中还包括每一条query所执行的时间,所消耗的资源,以及相关的事务信息


binlog的附加选项参数


“max_binlog_size”    设置binlog的最大存储上限,一般设置为512M或1G,不可以超过1G当日志达到上限时mysql会重新创建一个日志并继续开始记录


“binlog-do-db=db_name”    对某个db_name(数据库)记录binlog,

如果有了"binlog-do -db=db_name"参数的显式指定,MySQL会忽略针对其他数据库执行的query, 而仅仅记录针对指定数据库执行的query


"binlog-ignore-db=db_name"与"binlog-do-db=db_name"完全相反,它显式指定忽略某个(db_name)数据库的binlog记录, 当指定了这个参数之后, MySQL会记录指定数据库以外所有的数据库的binlog。


启动binlog记录后,mysql数据库目录下还会生成一个mysql-bin.index文件

主要功能是记录所有Binary Log 的绝对路径, 保证MySQL各种线程能够顺利的根据它找到所有需要的Binary Log文件


MYSQL复制主要有三种方式:

基于SQL语句的复制(statement-based replication, SBR),

基于行的复制(row-based replication, RBR), 

混合模式复制(mixed-based replication, MBR)

对应的,binlog的格式也有三种: STATEMENT, ROW, MIXED。


statenment模式(SBR)

每一条会修改数据的sql语句会记录到binlog中,优点是不需要记录每一行的数据变化

减少了binlog日志量,节约IO,提高性能,缺点是在某些情况下master-slave中的数据不一致

row模式(RBR)

不记录每条SQL语句的信息,仅记录那条数据被修改了,改成什么样子,缺点是会产生大量日志,日志暴涨

mixed模式(MBR)

混合模式,以上两种模式混合使用,一般的复制使用statement模式保存binlog,对于statement模式无法复制的操作使用row模式保存binlog,mysql会自行判断何时使用


“sync_binlog=10”    设定多久同步一次二进制日志到磁盘文件中 0表示不同步,1表示每条语句都同步


几种查询二进制日志信息的方法

show binlog events\G;     查看所有二进制信息

show bin log events in‘mysql-bin.000001‘\G;     查看指定的二进制信息

show binlog events in ‘mysql-bin.000001‘from 727;     从指定的事件位置开始

mysqlbinlog    mysql-bin.00001    在命令行下查看

几种删除二进制日志信息的方法

purge binary logs to ‘mysql-bin.000006‘;    删除‘mysql-bin.000006‘之前的二进制文件

reset master    删除所有二进制文件并重新生成一个为进制文件



3.事务日志

事务日志 (InnoDB 特有的日志)可以帮助提高事务的效率。

使用事务日志, 存储引擎在修改表的数据时只需要修改其内存拷贝,再把修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O, 而不像随机I/O需要在磁盘的多个地方移动磁头, 所以采用事务日志的方式相对来说要快得多。

事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。 


4.慢查询日志

慢查询日志中记录的是执行时间较长的query,采用简单的文本格式记录方便查看

通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化 

同样也是在主配置中加入

“slow_query_log=1”开启,

“slow_query_log_file=/usr/local/mysql/data/mysqld-slow.log”存储位置

  "long_query_time=1"    需要记录的时间,

或者直接在数据库中直接定义。


分析日志

进入慢查询日志存放目录使用mysqldumpslow分析    

“mysqldumpslow     mysqld-slow.log”


本文出自 “JianYu” 博客,请务必保留此出处http://jianyu97.blog.51cto.com/12222102/1983293

MYSQL数据库-物理文件

标签:mysql   日志文件   

原文地址:http://jianyu97.blog.51cto.com/12222102/1983293

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!