MySQL文件

1.参数文件

这是MySQL启动时需要读取的配置文件,可以通过mysql --help | grep my.cnf来查看启动时查找的顺序。这些参数的值取决于编译MySQL时指定的默认值或源代码中指定参数的默认值。可以通过show variables查看数据库中的参数,也可以通过like来过滤参数名,还可以通过information_schema.global_variables视图来查找。MySQL参数可以分为两类:

a.静态(static)参数

在整个实例生命周期内都不得更改,只读(read only)的。

b.动态(dynamic)参数

在整个实例生命周期内可以更改。通过命令SET | [global | session] system_var_name=expr | [@@global. | @@session. |@@]system_var_name=expr来改变值。其中global表示该参数是基于整个实例的生命周期的,而session是基于当前回话的。

2.日志文件

记录了影响MySQL数据库的各种类型活动。以下配置文件的参数影响二进制日志记录的信息和行为:max_binlog_size、binlog_cache_size、sync_binlog、binlog-do-db、binlog-ignore-db、log-slave-update、binlog_format。这些参数的含义是什么,我会在以后的博客中有一篇专门来讲解参数,这里就不多说啦。常见的日志文件有:

a.错误日志(error log)

记录了MySQL的启动、关闭、运行过程。在遇到问题时应该首先查看该文件以便于定位问题。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确的信息。通过show variables like ‘log_error‘来定位该文件的位置。在默认情况下,错误文件的文件名为服务器的主机名。

b.慢查询日志(slow query log)

记录可能存在"问题"的SQL语句,从而进行SQL语句层面的优化。其格式有:FILE和TABLE(information_schema.slow_log)两种格式,可以通过参数log_output(动态参数)选择输出的格式。使用mysqldumpslow命令来查看慢日志文件的内容。被记录到该文件的几种情况:

1.通过参数long_query_time来设置被记录到该文件的阀值。会记录运行时间超过(大于)该值的所有SQL语句。

2.通过参数long_queries_not_using_indexes来设置将没有使用索引的SQL语句记录到慢日志文件中。MySQL5.6版本新增一个参数log_throttle_queries_not_using_indexes来设置每分钟记录到slow log的且未使用索引的SQL语句的次数(主要是为了频繁记录防止slow log文件不断增大)。

3.通过参数long_query_io指定将超过设置逻辑IO次数的SQL语句记录到slow log文件中。

c.二进制日志(binlog)

记录了对MySQL数据库执行IUD操作。其作用主要有以下几种:

1.恢复(recovery) 某些数据的恢复需要二进制日志.如,在一个数据库全备文件恢复后,用户可以通过二进制日志进行point-in-time的恢复

2.复制(replication) 主要用在master-slave上。

3.审计(audit) 通过二进制日志中的信息来进行审计,判定是否有对数据库进行注入的攻击。

d.查询日志(log)

记录了所有对MySQL数据库请求的信息,无论这些请求是否得到正确的执行。默认文件名为主机名.log。从MySQL5.1版本开始也可以将该日志记录到information_chema.general_log表中。

3.套接字文件

在unix下本地连接MySQL可以采用unix域套接字方式,这种方式需要一个套接字(socket)文件。套接字文件可有参数socket控制一般在/tmp目录下且名称为mysql.sock。

4.pid文件

当MySQL实例启动是,会将自己的进程ID写入一个文件中(pid文件)。该文件可有参数pid_file控制,默认位于数据库目录下,文件文件名为主机名.pid.

5.表结构定义文件

MySQL数据的存储是根据表进行的,每个表都会有与之对应的文件。不论表采用何种存储引擎,MySQL都有一个以.frm为后缀名的文件,这个文件记录了该表的表结构定义。

6.InnoDB存储引擎文件

上边介绍的文件都是MySQL数据库本身的文件,和存储引擎无关。除了这些文件之外,每个表存储引擎还有其自己独有的文件。与InnoDB存储引擎密切相关的文件包括重做日志文件(redo log)和表空间文件(tablespace)。

1.表空间文件

InnoDB采用将存储的数据按表空间进行存放。默认配置下会有一个初始大小为10M名为ibdata1的文件。该文件就是默认的表空间文件,可通过参数innodb_data_file_path对其进行设置。默认情况下InnoDB存储引擎的表的数据都会记录到该共享表空间中,但是可以通过参数innodb_file_per_table设置,为每个基于InnoDB存储引擎的表产生一个独立表空间。该独立表空间只是存储该表的数据、索引和插入缓冲BITMAP等信息,其余的信息还是存放在默认的表空间中。

2.重做日志文件

默认情况下在数据目录下会有两个名为ib_logfile0和ib_logfile1的文件。记录了对于InnoDB存储引擎的事务日志。当数据库宕机时,InnoDB存储引擎会使用重做日志恢复到故障之前的时刻,以此来保证数据的完整性。以下参数影响重做日志文件的属性:innodb_log_file_size、innodb_log_files_in_group、innodb_mirrored_log_groups、innodb_log_group_home_dir

时间: 2024-10-18 11:39:11

MySQL文件的相关文章

cmd导入mysql文件

之所以要使用CMD(命令行)导入Mysql文件(.sql文件形式)也许是你还没遇到过 Mysql图形管理工具都无法正常导入sql文件.在网上找了很多的网友提供的资料来看几乎都是显示 所用工具限制,这里我就不多说了. 如下: 1.连接数据库 (注意:前提是Mysql 环境变量设定好的情况) 2.找到需要导入的数据库(这里以my_table为例) 3.导入数据库(注:文件是放在D盘根目录位置) 总结: 写代码前先不用太着急,不管是实现什么样的功能先把思路推理一遍,再有就是一定要不动手去写代码 .如以

linux备份mysql文件并恢复的脚本,以及其中出现的错误:ERROR: ASCII '\0' appeared in the statement

首先是在网上找了一下教程,代码很简单 #!/bin/bash folder=~/test time=`date +%Y%m%d` mysqldump -u user -p pwd -hlocalhost databasename | gzip > $folder/databasename_$time.sql.gz # find $folder -name 'databasename_*.sql.gz' -type f -mtime +7 -exec rm {} \; # gunzip < $f

mysql文件导入到数据库load data infile into table 的使用例子

load data infile "C:/Users/Administrator/Desktop/1.txt"into table 要一个已经存的表名 字段默认用制表符隔开 文件 我爱你 20 相貌平常李奎 21 相貌1平常王二米 210 相貌3平常老三 24 很强老四 34 XXXXX 常用如下: Load Data InFile 'C:/Data.txt' Into Table `TableTest` Lines Terminated By '\r\n';这个语句,字段默认用制表符

mysql 文件导入方法总结

数据导入3三种方法 一.phpMyAdmin 限制大小:2M 1.创建数据库 2.导入.sql或.sql.zip文件 大数据导入方法一:http://jingyan.baidu.com/article/9113f81bcdf3a32b3214c7e7.html大数据导入方法二:http://jingyan.baidu.com/article/60ccbceb21966d64cab1979e.html 参考文档http://www.sjyhome.com/php/phpmyadmin-limit.

linux下mysql 文件导入导出

最近在做mysql的数据导入导出得到的一些经验,记录下. 1.首先要开通导入导出的功能,需要设置一个mysql的配置 可以在 my.conf 文件的最后增加配置项 secure-file-priv='' 用这个命令查到当前的设置 SHOW VARIABLES LIKE '%secure_file_priv%'; 如果为 NULL 表示禁止导入导出,如果指定了具体路径,则导入导出必须在这个路径下,如果为空字符串,则可以导出到任意路径(必须要有足够权限写任意的路径权限) 如果权限不够则可以默认到my

linux系统下导出MySQL文件

1.配置:从centOS6.5系统,MySQL数据库 2.导出.sql文件的命令: mysqldump -uroot -h116.228.90.147 -P18006 -p aimo > /home/aimo.sql 3.解释: I.mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等. II.-uroot -u后面紧跟用户名 III.-h116.228.90.147 -h后面紧跟IP地

mysql文件理解

mysql_Innodb的undo_log和redo_log 原创 2014年10月28日 11:26:34 众所周知,mysql支持多种存储引擎,现在常用的是MyISAM和InnoDB.MyISAM相对简单,但不支持事务,而InnoDB是事务安全型的.而InnoDB的事务处理离不开undo_log和redo_Log. mysql innodb存储引擎 下面简单的介绍一下innodb的存储引擎 内存缓冲池 如果mysql不用内存缓冲池,每次读写数据时,都需要访问磁盘,必定会大大增加I/O请求,导

linux 转移mysql文件操作流程

1.现将mysql停服 2.将文件拷贝到指定目录cp ./sales_trade_2.ibd /db/data/mysql/data_warehouse/sales_trade_2.ibd 3.检查新旧文件大小是否一致 4.删除旧文件rm -rf ./sales_trade_2.ibd 5.创建软连接(硬连接不能夸分区)ln -s /db/data/mysql/data_warehouse/sales_trade_2.ibd /data/data/mysql/data_warehouse/2.i

mysql 文件

慢查询日志 log_query_time 查询时间超过这个值则会出现在慢查询日志中,默认值是10 log_slow_queries  是否开启慢查询 log_queries_not_using_indexes ,如果运行的sql语句没有使用索引,则mysql数据库同样会将这条sql语句记录到慢查询日志文件 如果用户希望得到执行时间最长的10条sql语句 mysqldumpslow -s at -n 10 david.log 二进制日志 max_binlog_size 指定了单个二进制日志文件的最