mariadb数据库文件的组成
一、日志文件
1、错误日志:(error log)
服务器相关的变量
log_error = /path/to/error_log_file
错误日志的存放位置
查看错误日志存位置
1
|
MariaDB [(none)]> show global variables like '%log_error%' \G
|
log_warnings={1|0}
是否记录警告信息于错误日志中,1表示记录,0表示不记录。
1
|
MariaDB [(none)]> show global variables like '%log_warnings%' \G
|
2、查询日志:query log
查询日志记录mariadb中所有的query,通过--log[=file_name]来打开该功能。由于记录了所有的query,包括所有的select,体积比较大,开启后对性能也有较大的影响,一般只用于跟踪某些特殊的sql性能问题才会短暂打开该功能,默认的查询日志文件名为hostname.log.
服务器相关的变量
log_output={table|file|none}
记录于那里,table与file是可以同时出现,使用分号隔开
general_log
是否启用查询日志,on表示开启,off表示关闭
general_log_file
定义一般查询日志保存的文件
3、慢查询日志:slow query log
顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-querues[=file_name]打开该功能并设置记录位置和文件名,默认文件名为hostname-slow.log,默认目录也是数据目录;其中记录了语句执行的时刻,执行所消耗的时间,执行用户,连接主机等相关信息。
服务器相关的变量
long_query_time
多长时间算慢查(默认时间为秒)
1
2
|
#查看默认的慢查时限 MariaDB [(none)]> show global variables like 'long_query_time%' ;
|
slow_query_log:{on|off}
设定是否启用慢查日志;它的输出位置也取决于log_output={table|file|none};
定义日志文件路径及名称
1
|
MariaDB [(none)]> show global variables like '%slow_query%' ;
|
log_slow_rate_limit
速率
log_slow_verbosity
详细信息
log_slow_filter
那些日志过滤不记录慢查日志
1
2
|
MariaDB [(none)]> show global variables like 'log_slow%'
\G |
4、binlog 日志
1
|
MariaDB [(none)]>show variables like '%log_bin%' ;
|
注:所有的布尔值(ON|OFF)都可以使用1或0来表示
1
|
MariaDB [(none)]>show binary logs;
|
Log_name:表示日志生成列名的名字
File_size:表示其每一个日志文件的大小
最后一条记录表示当前正在使用的binlog日志文件
或使用
1
|
# cat mariadb-bin.index |
查看正在使用的日志
1
|
MariaDB [(none)]>show master status; |
File: mariadb-bin.000003:当前记录的日志文件
Position: 312 :日志文件记录到那一个节点(位置)
Binlog_Do_DB: 为那些库记录日志(默认为所有数据库)
Binlog_Ignore_DB: 不为那些库记录日志
#mariadbbinlog ./文件目录(select 语句是不会记录于二进制文件)
--start-time
--start-position
--stop-time
--stop-position
1
|
# mariadbbinlog --start-datetime="2014-04-11 0:01:59" --stop-datetime="2014-04-11 1:22:12" mariadb-bin.000002 |
或在数据库中使用
1
|
MariaDB [(none)]>SHOW BINLOG EVENTS IN 'mariadb-bin.000002' from 4 limit 1,2\G
|
Log_name:此条log存在那个文件中。
Pos:log在bin-log中的开始位置
Event_type:log的类型信息
Server_id:可以查看配置中的server_id,表示log是那个服务器产生
End_log_pos:log在bin-log中的结束位置
Info:log的一些备注信息,可以直观的看出进行了什么操作(GTID)
1
2
|
MariaDB [(none)]>reset master; MariaDB [(none)]>purge binary to 'mariadb-bin-1.0000000001'
|
1
2
|
MariaDB [(none)]> show global variables like '%expire%' ;
MariaDB [(none)]> set global expire_logs_days=5;
|
binlog的格式
1
2
3
4
5
6
7
8
9
|
#查看默认的日志格式 MariaDB [(none)]>show variables like '%format%' ;
#可以有三种格式(binlog_format):STATEMENT,ROW,MIXED MariaDB [(none)]> SET SESSION binlog_farmat= 'statement'
#设置当前会话级别的基于语句(statement) MariaDB [(none)]> set SESSION format= 'ROW'
#设置当前会话级别的基于行(不确定的函数)(row ) MariaDB [(none)]> SET SESSION bin_format= 'mixed'
#设置当前会话级别的混合模式(前两者结合)(MIXED) |
服务器相关的日志变量
max_binlog_size
binlog的最大存储上限;当日志达到该上限时,mariadb会重新创建一个日志开始继续记录。不过偶尔也有超出该设置的binlo*生,一般都是因为在即将达到上限时,产生了一个较大的事务,为了保证事务安全,mariadb不会将同一个事务分开记录到两个binlog中。
sync_binlog=0
表示不靠时间同步,仅在事务在提交时同步,依赖于autocommit
log_bin:{on|off}
还可以是指定文件路径,重启后生效
sql_log_bin:{on|off}
1
|
MariaDB [(none)]>setsession sql_log_bin=0; |
如果设置了OFF则表示关闭记录日志功能。(仅当前会话有效)
max_binlog_cache_size:
二进制日志缓冲空间大小。仅用于缓冲事件务类一语句(单位字节)
滚动日志
-
大小
-
指定时间
-
重启或flush logs后会自动回滚
binary日志文件内容的格式
-
事件发生的日期和时间
-
服务器ID
-
事件的结束位置
-
事件的类型
-
原服务器生成的此事件时的线程
-
语句时间戳和写入二进制文件的时间差
-
错误代码
-
事件内容
-
事件位置,相当于下个事件的开始位置
Innodb是一个事务安全的存储引擎,其事务安全性主要就是通过在线redo日志和记录在表空间中的undo信息来保证的,redo日志记录了Innodb所做的所有物理变更和事务信息,通过redo日志和undo信息,Innodb保证了在任何情况下的事务安全性。Innodb的redo日志同样默认存放在数据目录下
更改设置日志的存放位置
innodb_log_group_home_dir
1
2
|
#查看默认日志存放位置 MariaDB [(none)]> show variables like '%innodb_log_group_home_dir%' ;
|
设置日志的数量
innodb_log_files_in_group
1
2
|
#查看innodb_log_file默认分组 MariaDB [(none)]> show variables like '%innodb_log_files_in_group%' ;
|
二、数据文件
1、数据文件
这两种文件都是存放在Innodb数据的文件,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据,独享表空间存储方式使用 .ibd文件来存放数据,且每个表一个.ibd文件,文件存放在和myISAM数据相同的位置,如果选用共享存储表空间来存储数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行分配)ibdata文件,ibdata文件可以通过innodb_data_home_dir和innodb_data_file_path 两个参数共同配置组成,innodb_data_host_dir配置数据存放的放的总目录,而innodb_data_file_path配置每一个文件的名称,当然,也可以不配置innod-data_home_dir而直接在innodb_data_file_path参数配置的时使用绝对路径来完成配置。innodb_data_file_path 中可以一次配置多个 ibdata 文件。文件可以是指定大小,也可以是自动扩展的,但是 Innodb 限制了仅仅只有最后一个 ibdata 文件能够配置成自动扩展类型。当我们需要添加新的 ibdata 文件的时候,只能添加在 innodb_data_file_path配置的最后,而且必须重启 mariadb 才能完成 ibdata 的添加工作。不过如果我们使用独享表空间存储方式的话,就不会有这样的问题,但是如果要使用裸设备的话,每个表一个裸设备,可能造成裸设备数量非常大,而且不太容易控制大小,实现比较困难,而共享表空间却不会有这个问题,容易控制裸设备数量。
表空间:由Innodb管理的特有格式数据文件,内部可同时存储数据和索引,每个表数据库目录下存储两个文件
tb_name.ibd:独享表空间存储方式使用 .ibd文件来存放数据,且每个表一个.ibd文件
设置独立表空间
innodb_file_per_table=ON
1
2
|
#查看默认表空间类型 MariaDB [(none)]> show variables like '%innodb_file_per_table%' ;
|
设置共享表空间
innodb_file_per_table=OFF
每张表都会有一个独有格式定义文件:tb_name.frm,还有一个默认位于数据目录下共享的表空间文件:ibddata#(#代表数字)
2、Replication 相关文件
relay_log文件用于存放Slave端I/O线程从Master端所读到的binary log信息,然后由Slave端SQL线程从该realy log中读取并解析相应的日志信息,转化成Master所执行的sql语句,然后在Slave端应用。
relay_log_index
文件的功能类似于mysql-bin.index同样是记录存放位置的绝对路径,只不过他所记录的不是Binary log,而是relay_log.
=================完=========================