【抓实Mysql基础】MySQL在Linux系统下布置文件及日

慢查询日志是用来记录奉行时间超越钦点超时时间的查询语句。通过慢查询日志,能够寻觅出如何查询语句的实践功能非常的低,以便实行优化。

 

诚如来说,日志级其他定义尚无答应变量都只是在大局品级下进展定义。

-- 查看错误日志文件的地址
show global variables like 'log_error';

-- 查看警告信息是否也写入到错误日志中,默认值为2。如果要启用,将其值设置为1;如果要禁用,将其值设置为0。
show global variables like 'log_warnings';

 

翻看二进制日志新闻的吩咐:

-- 删除所有的二进制日志文件,删除所有的二进制日志后,mysql将会重新创建新的二进制日志,新的二进制日志的编号从000001开始。
reset master;

-- 删除指定二进制日志文件之前的所有二进制日志文件,这里表示删除文件mysql-bin.000010之前的所有文件
purge binary logs to 'mysql-bin.000010';
purge master logs to 'mysql-bin.000010';

-- 删除指定时间之前的所有二进制日志文件,这里表示删除18-06-06 12:00:00之前的所有文件
purge binary logs to '18-06-06 12:00:00';
purge master logs to '18-06-06 12:00:00';

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@stu18 ~]# cd /mydata/data/
[root@stu18 data]#ls -lh
-rw-rw---- 1 mysqlmysql  14K Aug 13 15:30 mysql-bin.000001
-rw-rw---- 1 mysqlmysql  150 Aug 13 17:05 mysql-bin.000002
-rw-rw---- 1 mysqlmysql  150 Aug 13 17:06 mysql-bin.000003
-rw-rw---- 1 mysqlmysql  150 Aug 13 17:07 mysql-bin.000004
-rw-rw---- 1 mysqlmysql  150 Aug 13 17:39 mysql-bin.000005
-rw-rw---- 1 mysqlmysql  126 Aug 13 19:03 mysql-bin.000006
-rw-rw---- 1 mysqlmysql  126 Aug 13 19:03 mysql-bin.000007
-rw-rw---- 1 mysqlmysql  126 Aug 13 19:05 mysql-bin.000008
-rw-rw---- 1 mysqlmysql  107 Aug 13 19:05 mysql-bin.000009
-rw-rw---- 1 mysqlmysql  353 Oct  7 23:40 mysql-bin.000010
-rw-rw---- 1 mysqlmysql  190 Oct  7 20:43 mysql-bin.index
[root@stu18 data]#cat mysql-bin.index
./mysql-bin.000001
./mysql-bin.000002
./mysql-bin.000003
./mysql-bin.000004
./mysql-bin.000005
./mysql-bin.000006
./mysql-bin.000007
./mysql-bin.000008
./mysql-bin.000009
./mysql-bin.000010

 

 

假定数量的修改已经记录到业务日志并长久化,但数据小编还未曾写回磁盘,此时系统崩溃,存款和储蓄引擎在重启时能够活动还原这一部分改换的数据。具有的上涨措施则视存款和储蓄引擎而定。

 

 

二进制日志相关的参数:

 

 

初阶和设置慢查询日志:

-- 重新创建一个新的错误日志文件,原错误日志文件加上后缀old
flush logs;

 

私下认可情况下询问日志是关闭的。由于查询日志会记录客户的有所操作,在那之中还包蕴增加和删除查改等消息,在产出操作大的条件下会产生大量的音讯之所以产生不须求的磁盘IO,会潜濡默化mysql的天性的。假诺不是为着调治数据库的目标提议并非开启查询日志。

mysqladmin命令重新创建贰个新的一无所能日志文件。

 

1
2
3
mysql> SHOW  GLOBAL VARIABLES LIKE '%log%';
|  slow_query_log         | OFF    #定义慢查询日志的
|  slow_query_log_file    |/mydata/data/stu18-slow.log    #输出方式为file(文件)时定义慢查询日志的位置
-- 查询日志相关全局变量
show global variables like '%log%';

 

作业日志:

如上所提到到的全局变量和未涉嫌到的全局变量都能够通过set命令举行退换,但这种办法在mysql服务珍视启之后就失效了,要求再行修改。

 

1
2
3
4
5
6
7
8
9
mysql> resetmaster;           
Query OK, 0 rowsaffected (0.17 sec)
mysql> showbinary logs;
------------------ -----------
| Log_name         | File_size |
------------------ -----------
| mysql-bin.000001|       107 |
------------------ -----------
1 row in set (0.04sec)

 张开二进制日志会消耗一些系统系能,不过对于复制和连串恢复生机,所推动的益处或然超过减弱的属性。

 

1
2
3
4
5
6
7
8
9
10
mysql> showglobal variables like "%log%";
sql_log_bin ={ON|OFF}     #用于控制会话级别二进制日志功能的开启或关闭。默认为ON,表示启用记录功能。用户可以在会话级别修改此变量的值,但其必须具有SUPER权限。
binlog_cache_size =32768   #默认值32768 Binlog Cache用于在打开了二进制日志(binlog)记录功能的环境,是MySQL 用来提高binlog的记录效率而设计的一个用于短时间内临时缓存binlog数据的内存区域。一般来说,如果我们的数据库中没有什么大事务,写入也不是特别频繁,2MB~4MB是一个合适的选择。但是如果我们的数据库大事务较多,写入量比较大,可与适当调高binlog_cache_size。同时,我们可以通过binlog_cache_use 以及 binlog_cache_disk_use来分析设置的binlog_cache_size是否足够,是否有大量的binlog_cache由于内存大小不够而使用临时文件(binlog_cache_disk_use)来缓存了。
binlog_stmt_cache_size= 32768       #当非事务语句使用二进制日志缓存,但是超出binlog_stmt_cache_size时,使用一个临时文件来存放这些语句。
log_bin = mysql-bin#指定binlog的位置,默认在数据目录下。
binlog-format= {ROW|STATEMENT|MIXED}     #指定二进制日志的类型,默认为MIXED。如果设定了二进制日志的格式,却没有启用二进制日志,则MySQL启动时会产生警告日志信息并记录于错误日志中。
sync_binlog = 10#设定多久同步一次二进制日志至磁盘文件中,0表示不同步,任何正数值都表示对二进制每多少次写操作之后同步一次。当autocommit的值为1时,每条语句的执行都会引起二进制日志同步,否则,每个事务的提交会引起二进制日志同步
max_binlog_cache_size= {4096 .. 18446744073709547520}      #二进定日志缓存空间大小,5.5.9及以后的版本仅应用于事务缓存,其上限由max_binlog_stmt_cache_size决定。
max_binlog_stmt_cache_size= {4096 .. 18446744073709547520}    #二进定日志缓存空间大小,5.5.9及以后的版本仅应用于事务缓存
expire_log_days ={0..99}    #设定二进制日志的过期天数,超出此天数的二进制日志文件将被自动删除。默认为0,表示不启用过期自动删除功能。如果启用此功能,自动删除工作通常发生在MySQL启动时或FLUSH日志时。

mysql中自然也可能有日记,mysql的日志大约分为各个,即错误日志、查询日志、慢查询日志、二进制日志和事情日志。

 

1
[root@stu18 data]#mysqlbinlog mysql-bin.000017 > /tmp/a.sql

出于查询日志会记录顾客全部的操作,在使用量不小时服务器的I/O操作比较多,会大大减弱服务器的性质,所以默以为关闭的,并且不提出拉开。

 

注明:个中这一个慢查询时间并非只象征语句笔者推行超越10秒还包括由于别的能源被征用形成堵塞的查询试行时间或其余原因等都被记录到慢查询中。所以那么些慢查的时间长度表示从询问开端到查询截止中间含有一点都不小或者的任何原因所经历的装有的时候间。

-- 查看查询日志是否开启
show global variables like 'general_log';

-- 查看查询日志的文件地址
show global variables like 'general_log_file';

-- 是否开启日志,设置为开启时,表示开启所有的日志功能
show global variables like 'log';

-- 查看日志输出的格式,可以是表(table)或文件(file)。如果设置为table,则日志在mysql.general_log表中;如果设置为none,则不启用日志
show global variables like 'log_output';

 

其一、log_bin能够一向定义为文件路线,也足认为ON|OFF。

 

 

2、依照文件或时刻点来删除二进制日志:

-- 查看超时时间,单位为秒(s)
show global variables like 'long_query_time';

-- 查看是否开启慢查询日志
show global variables like 'log-slow-queries';

-- 查看慢查询日志是否开启,如果设置为开启,则执行时间超过超时时间,即为慢查询
show global variables like 'slow_query_log';

-- 查看慢查询日志的文件地址
show global variables like 'slow_query_log_file';

 

询问日志:

动用工作日志,存款和储蓄引擎在修改表的多少时只须求修改其内部存款和储蓄器拷贝,再把改修改行为记录到持久在硬盘上的工作日志中,而不用每一次都将修改的数目作者长久到磁盘。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mysql> PURGEBINARY LOGS TO 'mysql-bin.000007';
Query OK, 0 rowsaffected (0.11 sec)
mysql> showbinary logs;
------------------ -----------
| Log_name         | File_size |
------------------ -----------
| mysql-bin.000007|       150 |
| mysql-bin.000008|       150 |
| mysql-bin.000009|       150 |
| mysql-bin.000010|       150 |
| mysql-bin.000011|       150 |
| mysql-bin.000012|       150 |
| mysql-bin.000013|       150 |
| mysql-bin.000014|       150 |
| mysql-bin.000015|       150 |
| mysql-bin.000016|       150 |
| mysql-bin.000017|       483 |
------------------ -----------
11 rows in set (0.04sec)
[root@stu18 data]#cat mysql-bin.index
./mysql-bin.000007
./mysql-bin.000008
./mysql-bin.000009
./mysql-bin.000010
./mysql-bin.000011
./mysql-bin.000012
./mysql-bin.000013
./mysql-bin.000014
./mysql-bin.000015
./mysql-bin.000016
./mysql-bin.000017
-- 查看是否开启二进制日志,可以设置为on|off,也可以直接设置为文件的地址,如果不设置地址,则默认在数据目录下
show global variables like 'log_bin';

-- 查看会话级别的二进制日志功能是否开启
show global variables like 'sql_log_bin';

-- 设定多久同步一次二进制日志至磁盘文件中,0表示不同步,任何正整数值都表示对二进制日志每多少次写操作之后同步一次
-- 当autocommit=1时,每条语句的执行都会进行二进制日志的同步;当autocommit=0时,每个事务的提交都会进行二进制日志的同步
show global variables like 'sync_binlog';

-- 指定二进制日志的格式,默认为MIXED。如果设定了二进制日志的格式,却没有启用二进制日志,则MySQL启动时会产生警告日志信息并记录于错误日志中。
-- statement:表示二进制日志文件记录的是日志的逻辑式SQL语句
-- row:二进制日志记录的不再是简单的SQL语句了,而是记录表的行更改情况,此时可以将InnoDB的事务隔离基本设为read committed,以获得更好的并发性
-- mixed:mysql默认采用的statement格式进行二进制日志文件的记录,但是在一些情况下会使用row格式
show global variables like 'binlog-format';

-- 设置binlog缓存数据的内存区域的大小,默认值为32768。
show global variables like 'binlog_cache_size';

-- 设置binlog临时缓存数据的内存区域的大小,默认值为32768。
show global variables like 'binlog_stmt_cache_size';

-- 设置binlog缓存空间的最大值,默认值为18446744073709547520。
show global variables like 'max_binlog_cache_size';

-- 设置binlog临时缓存空间的最大值,默认值为18446744073709547520。
show global variables like 'max_binlog_stmt_cache_size';

-- 设定二进制日志的过期天数,超出此天数的二进制日志文件将被自动删除。默认为0,表示不启用过期自动删除功能。如果启用此功能,自动删除工作通常发生在mysql启动时或flush日志时。
show global variables like 'expire_log_days';

-- 每次重启mysql服务或运行该命令时,都会生成一个新的二进制日志文件
flush logs;

 

删去错误日志:

二进制日志即binlog日志,它记录数据定义语言(DDL)和多少调节语言(DML),但不会记录select、show等不退换数据的讲话。

 

翻开mysql错误日志:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@stu18 data]#  tail -20 stu18.magedu.com.err
130813  15:30:50  InnoDB: Starting shutdown...
130813  15:30:51  InnoDB: Shutdown completed;  log sequence number 1630920
130813 15:30:51  [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
130813 15:30:52  mysqld_safe mysqld from pid file /mydata/data/stu18.magedu.com.pid ended
130813 15:30:53  mysqld_safe Starting mysqld daemon with databases from /mydata/data
130813 15:30:54  InnoDB: The InnoDB memory heap is disabled     #禁用了InnoDB memory的堆功能。
130813 15:30:54  InnoDB: Mutexes and rw_locks use GCC atomic builtins #Mutexes(互斥量)和rw_locks(行级锁)是GCC编译的是InnoDB内置的。
130813 15:30:54  InnoDB: Compressed tables use zlib 1.2.3     #默认压缩工具是zlib
130813 15:30:55  InnoDB: Initializing buffer pool, size = 128.0M    #InnoDB引擎的缓冲池(buffer pool)的值大小
130813 15:30:55  InnoDB: Completed initialization of buffer pool
130813 15:30:55  InnoDB: highest supported file format is Barracuda.
130813  15:30:57  InnoDB: Waiting for the  background threads to start
130813 15:30:58  InnoDB: 5.5.33 started; log sequence number 1630920
130813 15:30:58  [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
130813 15:30:58  [Note]   - '0.0.0.0' resolves to  '0.0.0.0';  #0.0.0.0会反解主机名,这里反解失败
130813 15:30:58  [Note] Server socket created on IP: '0.0.0.0'.
130813 15:30:58  [Note] Event Scheduler: Loaded 0 events    #事件调度器没有任何事件,因为没有装载。
130813 15:30:58  [Note] /usr/local/mysql/bin/mysqld: ready for connections. #mysql启动完成等待客户端的请求。
Version:  '5.5.33-log'  socket:  '/tmp/mysql.sock'  port: 3306  Source distribution  #创建一个本地sock用于本地连接。

在mysql数据库中,错误日志功效是默许开启的,何况,错误日志不能被幸免。

 

一、错误日志

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> use  mysql;                    #在此数据库中
Database changed
mysql> show  tables;
---------------------------
|  Tables_in_mysql           |
---------------------------
|  columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |      #这个就是查询日志的表输出位置
|  help_category             |
|  help_keyword              |
|  help_relation             |
| help_topic
………………                |
---------------------------

二、查询日志

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
mysql> showbinary logs;     #显示当前服务器使用的二进制文件及大小
------------------ -----------
| Log_name         | File_size |
------------------ -----------
| mysql-bin.000001|     13814 |
| mysql-bin.000002|       150 |
| mysql-bin.000003|       150 |
| mysql-bin.000004|       150 |
| mysql-bin.000005|       150 |
| mysql-bin.000006|       126 |
| mysql-bin.000007|       126 |
| mysql-bin.000008|       126 |
| mysql-bin.000009|       107 |
| mysql-bin.000010|       353 |
------------------ -----------
10 rows in set (0.07sec)
mysql> showmaster logs;      #显示主服务器使用的二进制文件及大小
------------------ -----------
| Log_name         | File_size |
------------------ -----------
| mysql-bin.000001|     13814 |
| mysql-bin.000002|       150 |
| mysql-bin.000003|       150 |
| mysql-bin.000004|       150 |
| mysql-bin.000005|       150 |
| mysql-bin.000006|       126 |
| mysql-bin.000007|       126 |
| mysql-bin.000008|       126 |
| mysql-bin.000009|       107 |
| mysql-bin.000010|       353 |
------------------ -----------
10 rows in set (0.02sec)
mysql> showmaster status;   #当前使用的二进制文件及所处位置
------------------ ---------- -------------- ------------------
| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB |
------------------ ---------- -------------- ------------------
| mysql-bin.000010|      353 |              |                  |
------------------ ---------- -------------- ------------------
1 row in set (0.00sec)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@stu18 data]#mysqlbinlog mysql-bin.000017        #必须在数据目录下
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET@@session.max_insert_delayed_threads=0*/;
/*!50003 SET@OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4       #事件开始处
#131009  0:25:59 server id 1  end_log_pos 107   Start: binlog v 4, server v 5.5.33-log created 131009  0:25:59 
# Warning: thisbinlog is either in use or was not closed properly.
BINLOG '
FzJUUg8BAAAAZwAAAGsAAAABAAQANS41LjMzLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAVAAEGggAAAAICAgCAA==
'/*!*/;
# at 107
#131009  0:26:36 server id 1  end_log_pos 192   Query   thread_id=12    exec_time=0 error_code=0     #131009 0:26:36年月日的简写方式;end_log_pos事件结束处;thread_id=12 哪个会话线程创建的此语句;exec_time=0 执行时长单位为秒;error_code=0 错误代码0表示没有
SET TIMESTAMP=1381249596/*!*/;      #预设信息(环境设定)
-- mysqladmin命令重新创建一个新的错误日志文件,原错误日志文件加上后缀old
mysqladmin -u root -p flush-logs

 

1、通过配备文件my.cnf中的log-slow-queries选项能够敞开慢查询日志;形式如下:

查阅二进制日志文件。

 

在mysql5.5.7事先:数据库助理馆员能够去除非常长日子以前的谬误日志,以保障mysql服务器上的硬盘空间。mysql数据库中,能够采纳mysqladmin命令开启新的一无可取日志。mysqladmin命令的语法如下:mysqladmin –u root –pflush-logs也得以行使登入mysql数据库中央银行使FLUSHLOGS语句来开启新的失实日志。

工作日志(InnoDB存款和储蓄引擎所特有的日记)可以协助提升级工程师作的频率。

 

其中TO'log_name'表示把这么些文件以前的任何文件都剔除掉,也可应用BEFORE datetime_expr钦定把哪些时间以前的二进制文件删除了。

-- 查看当前服务器使用的二进制日志文件及大小
show binary logs;

-- 查看主服务器使用的二进制日志文件及大小
show master logs;

-- 查看当前二进制日志文件的状态及所处位置
show master status;

-- 查看所有的二进制日志文件的信息
show binlog events;

-- 查看指定的二进制日志文件的信息
show binlog events in 'mysql-bin.000001';

-- 查看指定的二进制日志文件的信息,并从指定的事件位置开始
show binlog events in 'mysql-bin.000001' from 170;

-- 查看指定的二进制日志文件的信息,并从指定的事件位置开始以及事件的偏移量
show binlog events in 'mysql-bin.000001' from 170 limit 3;

 

变动错误日志地点能够动用log_error来安装方式如下:

翻开日志相关的全局变量。

 

1
2
mysql> PURGEBINARY LOGS BEFORE '13-10-19 10:26:36'#使用时间来删除二进制日志
Query OK, 0 rowsaffected (0.05 sec)

 

 

查看当前二进制文件的音信:

 

 

这么些、通过编写制定my.cnf中的log-bin选项能够展开二进制日志;格局如下:

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
SHOW BINLOG EVENTS[IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
mysql> showbinlog eventsG         #查看所有的二进制信息
***************************87. row ***************************
   Log_name: mysql-bin.000001
        Pos: 13580
 Event_type: Query
  Server_id: 1
End_log_pos: 13688
       Info: use `hellodb`; /*!40000 ALTERTABLE `toc` DISABLE KEYS */
***************************88. row ***************************
   Log_name: mysql-bin.000001
        Pos: 13688
 Event_type: Query
  Server_id: 1
End_log_pos: 13795
       Info: use `hellodb`; /*!40000 ALTERTABLE `toc` ENABLE KEYS */
***************************89. row ***************************
   Log_name: mysql-bin.000001
        Pos: 13795
 Event_type: Stop
  Server_id: 1
End_log_pos: 13814
       Info:
89 rows in set (0.00sec)
mysql> showbinlog events in 'mysql-bin.000011';    #查看指定日志的二进制信息
------------------ ----- ------------- ----------- ------------- ----------------------------------------------
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                         |
------------------ ----- ------------- ----------- ------------- ----------------------------------------------
| mysql-bin.000011|   4 | Format_desc |         1 |         107 | Server ver: 5.5.33-log, Binlogver: 4        |
| mysql-bin.000011 |107 | Query       |         1 |         190 | create database yong                         |
| mysql-bin.000011 |190 | Query       |         1 |         293 | create table yong.tb1 (idint,name char(20)) |
| mysql-bin.000011 |293 | Query       |         1 |         357 | BEGIN                                        |
| mysql-bin.000011 |357 | Query       |         1 |         452 | insert into yong.tb1values(1,'tom')         |
| mysql-bin.000011 |452 | Xid         |         1 |         479 | COMMIT /* xid=103 */                         |
------------------ ----- ------------- ----------- ------------- ----------------------------------------------
6 rows in set (0.00sec)
mysql> showbinlog events in 'mysql-bin.000011' from 190; #从指定的事件位置开始
------------------ ----- ------------ ----------- ------------- ----------------------------------------------
| Log_name         | Pos | Event_type | Server_id |End_log_pos | Info                                         |
------------------ ----- ------------ ----------- ------------- ----------------------------------------------
| mysql-bin.000011 |190 | Query      |         1 |         293 | create table yong.tb1 (idint,name char(20)) |
| mysql-bin.000011 |293 | Query      |         1 |         357 | BEGIN                                        |
| mysql-bin.000011 |357 | Query      |         1 |         452 | insert into yong.tb1values(1,'tom')         |
| mysql-bin.000011 |452 | Xid        |         1 |         479 | COMMIT /* xid=103 */                         |
------------------ ----- ------------ ----------- ------------- ----------------------------------------------
4 rows in set (0.00sec)
mysql> showbinlog events in 'mysql-bin.000011' from 190 limit 3;  #指定偏移量(不是语句,是事件)
------------------ ----- ------------ ----------- ------------- ----------------------------------------------
| Log_name         | Pos | Event_type | Server_id |End_log_pos | Info                                         |
------------------ ----- ------------ ----------- ------------- ----------------------------------------------
| mysql-bin.000011 |190 | Query      |         1 |         293 | create table yong.tb1 (idint,name char(20)) |
| mysql-bin.000011 |293 | Query      |         1 |         357 | BEGIN                                        |
| mysql-bin.000011 |357 | Query      |         1 |         452 | insert into yong.tb1values(1,'tom')         |
------------------ ----- ------------ ----------- ------------- ----------------------------------------------
3 rows in set (0.00sec)

sql语句再次创立贰个新的荒唐日志文件。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> createdatabase yong;
Query OK, 1 rowaffected (0.12 sec)
mysql> createtable yong.tb1 (id int,name char(20));
Query OK, 0 rowsaffected (0.44 sec)
mysql> insertinto yong.tb1 values(1,'tom');
Query OK, 1 rowaffected (0.14 sec)
mysql> showmaster status;
------------------ ---------- -------------- ------------------
| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB |
------------------ ---------- -------------- ------------------
| mysql-bin.000011|      479 |              |                  |
------------------ ---------- -------------- ------------------
1 row in set (0.00sec)

除去二进制日志文件。

享受提纲:

五、事务日志

 

1
2
3
4
[root@stu18 data]#  vim /etc/my.cnf
[mysqld]
slow_query_log=1
log-slow-queries [=  DIR/[filename] ]

日记文件对此别的应用程序都是丰盛重大的,大多操作都急需记录到日志,然后能够选用日志文件查错纠错等。

 

荒谬日志
在mysql数据库中,错误日志效用是暗中同意开启的。况兼,错误日志不可能被明确命令制止。私下认可景况下,错误日志存款和储蓄在mysql数据库的数据文件中。错误日志文件平日的称呼为hostname.err。个中,hostname表示服务器主机名。 错误日志音信方可和煦进行安插的,错误日志所记录的音讯是足以经过log-error和log-warnings来定义的,在那之中log-err是概念是不是启用错误日志的效应和错误日志的蕴藏地点,log-warnings是概念是或不是将警报消息也定义至错误日志中。默许景况下错误日志差不离记录以下多少个方面包车型大巴新闻:服务器运转和关闭进度中的消息(未必是错误音信,如mysql怎么着运维InnoDB的表空间文件的、怎么着初阶化本人的存款和储蓄引擎的等等)、服务器运转进程中的错误音讯、事件调整器运营一个平地风波时发出的新闻、在从服务器上运营服务器进程时产生的新闻。 上面大家来定义mysql错误日志的功能:

相似提出拉开,它对服务器质量的影响一丁点儿,可是能够记录mysql服务器上实践时间超时的询问语句。

 

1
2
3
[root@stu18 data]#  vim /etc/my.cnf
[mysqld]
Log_error=DIR/[filename]

 

 

进行剖析:日志的出口地点日常有三种方法:file(文件),table(表),none(不保留);在那之中前三个出口地方能够并且定义,none表示是翻开日志功用不过记录日志新闻。file正是通过general_log_file |/mydata/data/stu18.log 等情势定义的,而输出地方定义为表时查阅日志的内容措施为:

若是急需恒久的更动,则能够通过改造在mysql安装目录下的my.ini(Windows OS)或my.cnf(Linux OS)的布置文件。

 

三、慢查询日志

 

里头,DI科雷傲参数内定二进制文件的仓库储存路径;filename参数钦赐二级制文件的公文名,其方式为filename.number,number的格局为000001、000002等。每一遍重启mysql服务或运转mysql> flush logs;都会调换二个新的二进制日志文件,这个日记文件的number会不断地递增。除了生成上述的文书外还恐怕会扭转一个名字为filename.index的文本。那一个文件中蕴藏全数二进制日志文件的清单又叫做二进制文件的目录。

mysql的日记首要记录服务器运维和停业进度的新闻、服务器运转进程中的错误新闻、事件调整器运营一个事件时发出的音信等。

 

二进制日志会记录大量的音讯(当中饱含部分不算的新闻)。假如相当短日子不清理二进制日志,将会浪费广大的磁盘空间。然则,删除之后恐怕引致数据库崩溃时不可能进行恢复生机,所以若要删除二进制日志首先将其和数据库备份一份,在那之中也只可以删除备份前的二进制日志,新产生的日记音信不可删(能够做即时点还原)。也不可在关闭mysql服务器之后一贯删除因为这么恐怕会给数据库带来错误的。若非要删除二进制日志要求做如下操作:导出备份数据库和二进制日志文件实行压缩归档存款和储蓄。删除二进制文件的法门如下:

-- 查看在事务提交时InnoDB是否同步日志从缓冲到文件中
-- 如果为0,表示每隔一秒同步一次,并进行一次磁盘访问将日志刷新到磁盘,会造成大量的磁盘I/O,性能很差
-- 如果为1,表示只有在事务提交时才会同步,并进行一次磁盘访问将日志刷新到磁盘
-- 如果为2,表示只有在事务提交时才会同步,但不进行磁盘访问,可能会丢失整个事务
show global variables like 'innodb_flush_log_at_trx_commit';

-- 查看InnoDB事务日志组的文件个数
show global variables like 'innodb_log_files_in_group';

-- 查看InnoDB事务日志组的地址
show global variables like 'innodb_log_group_home_dir';

-- 查看是否对事务日志做镜像
show global variables like 'innodb_mirrored_log_groups';

 

到此有关二进制的文化就剖判完了,个中若有错误不足之处请建议!多谢!注意二进制日志和不当日志相当的重大关键学之!!

四、二进制日志

 

深入分析:在那之中,DI景逸SUV参数内定错误日志的路线filename参数是张冠李戴日志的称号,未有一点点名该参数时默以为主机名。重启mysql服务器就能够以知道效。

 

查看慢查询日志的定义:

 

语法方式:

 

导入此数据库的音讯:

 

1
[root@stu18 data]#mysql < a.sql

 3. 详解日志


 

率先要有大局权限;然后实行mysql>set global slow_query_log=1;

 

慢查询日志:

2. 详解配置文件


 

1
2
3
[root@stu18 ~]#my.cnf
[mysqld]
log-bin [=DIR [filename]]

 

1
2
3
4
[root@stu18 data]# mv stu18.magedu.com.err  stu18.magedu.com.err.old
 [root@stu18 data]#  mysqladmin flush-logs
[root@stu18 data]# ls
hellodb  myclass  mysql-bin.000003  mysql-bin.index           stu18.magedu.com.pid     ibdata1      mysql     mysql-bin.000004  performance_schema    ib_logfile0  mysql-bin.000001  stu18.magedu.com.err           test   ib_logfile1  mysql-bin.000002  stu18.magedu.com.err.old

 

运用RESET MASTE凯雷德语句可以去除全数的二进制日志。该语句的款型如下:

 

诚如都是通过long_query_time选项来安装这几个时间值,时间以秒为单位,能够准确到皮秒。如若查询时间超越了那一个日子值(私下认可为10秒),那个查询语句将被记录到慢查询日志中。查看服务器暗许时间值方式如下:

 

1
2
3
4
5
6
7
8
9
10
mysql> flushlogs;
Query OK, 0 rowsaffected (0.23 sec)
注意:flush logs一般只会滚动中继日志和二进制日志。
mysql> showmaster status;
------------------ ---------- -------------- ------------------
| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB |
------------------ ---------- -------------- ------------------
| mysql-bin.000011|      107 |              |                  |
------------------ ---------- -------------- ------------------
1 row in set (0.00sec)

 

时刻私下认可超越多少的称呼慢查询日志?

 

由此能够见见这种清理二进制日志文件的诀即便不行合理的,不会招致数据库的失实发生。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
mysql> SHOW  GLOBAL VARIABLES LIKE '%log%';
----------------------------------------- -----------------------------------
|  Variable_name                            | Value                              |
----------------------------------------- -----------------------------------
| back_log                                | 50                                |
|  binlog_cache_size                        | 32768                              |
|  binlog_direct_non_transactional_updates | OFF                               |
|  binlog_format                           | MIXED                             |
|  binlog_stmt_cache_size                   | 32768                              |
|  expire_logs_days                         | 0                                  |
| general_log                             | OFF                               |
|  general_log_file                         | /mydata/data/stu18.log             |
|  innodb_flush_log_at_trx_commit           | 1                                  |
|  innodb_locks_unsafe_for_binlog           | OFF                               |
|  innodb_log_buffer_size                   | 8388608                            |
|  innodb_log_file_size                     | 5242880                            |
|  innodb_log_files_in_group                | 2                                  |
|  innodb_log_group_home_dir                | ./                                 |
|  innodb_mirrored_log_groups               | 1                                  |
| log                                     |  OFF                               |
| log_bin                                 | ON                                |
|  log_bin_trust_function_creators          | OFF                                |
| log_error                               |  /mydata/data/stu18.magedu.com.err |定义错误日志
| log_output                              | FILE                              |
|  log_queries_not_using_indexes            | OFF                                |
|  log_slave_updates                        | OFF                                |
|  log_slow_queries                        | OFF                               |
|  log_warnings                             | 1               是否把警告信息写入错误日志中
|  max_binlog_cache_size                    | 18446744073709547520               |
|  max_binlog_size                          | 1073741824                         |
|  max_binlog_stmt_cache_size               | 18446744073709547520               |
|  max_relay_log_size                       | 0                                  |
| relay_log                               |                                   |
|  relay_log_index                          |                                    |
|  relay_log_info_file                      | relay-log.info                     |
|  relay_log_purge                          | ON                                 |
|  relay_log_recovery                       | OFF                                |
|  relay_log_space_limit                    | 0                                  |
|  slow_query_log                           | OFF                                |
| slow_query_log_file                     |  /mydata/data/stu18-slow.log       |
| sql_log_bin                             | ON                                |
| sql_log_off                             | OFF                               |
| sync_binlog                             | 0                                 |
|  sync_relay_log                           | 0                                  |
|  sync_relay_log_info                      | 0                                  |
----------------------------------------- -----------------------------------

 

二进制日志的概念方式为二进制格式;使用此格式能够积累越多的音讯,何况能够使写入二进制日志的频率越来越高。可是不能够平昔运用查看命令张开并查阅二进制日志。

 

1
2
3
4
5
6
7
mysql> SHOW  GLOBAL VARIABLES LIKE 'long%';
----------------- -----------
|  Variable_name   | Value     |
----------------- -----------
| long_query_time  | 10.000000 |
----------------- -----------
1 row in set (0.04  sec)

 

二进制开启状态:

 

1
2
3
4
5
6
7
8
mysql> showglobal variables like "%log_bin%";
--------------------------------- -------
| Variable_name                   | Value |
--------------------------------- -------
| log_bin                         | ON    |  #已开启
|log_bin_trust_function_creators | OFF   |
| sql_log_bin                     | ON    |
--------------------------------- -------

 

 

导出此数据库的音讯:

 

MySQL日志:重要包罗:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的根本组成都部队分。日志文件中著录着mysql数据库运维时期发生的变化;相当于说用来记录mysql数据库的客商端连接景况、SQL语句的试市场价格况和错误音讯等。当数据库遭到意外的毁损时,能够因而日记查看文件出错的原因,况且可以通过日记文件进行数据苏醒。

 

小扩张:二进制日志的记录地方:平常为上一个平地风波实行达成时间的职位,每三个日志文件自个儿也许有投机的元数据所以说对于当前版本的mysql来说二进制的启幕地方日常为107;

 

二进制日志:

正文地址

 

 

 

查看查询日志是或不是张开:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
mysql> SHOW  GLOBAL VARIABLES LIKE '%log%';
----------------------------------------- -----------------------------------
|  Variable_name                            | Value                              |
----------------------------------------- -----------------------------------
| back_log                                | 50                                |
|  binlog_cache_size                        | 32768                              |
|  binlog_direct_non_transactional_updates | OFF                               |
|  binlog_format                           | MIXED                             |
|  binlog_stmt_cache_size                   | 32768                              |
|  expire_logs_days                         | 0                                  |
| general_log                             | OFF        #定义查询日志是否开启  |                   
|  general_log_file                         | /mydata/data/stu18.log   #定义查询日志的文件地址名称                          |
|  innodb_flush_log_at_trx_commit           | 1                                  |
|  innodb_locks_unsafe_for_binlog           | OFF                                |
|  innodb_log_buffer_size                   | 8388608                            |
|  innodb_log_file_size                     | 5242880                            |
|  innodb_log_files_in_group               | 2                                 |
|  innodb_log_group_home_dir                | ./                                 |
|  innodb_mirrored_log_groups               | 1                                  |
| log                                     |  OFF          #是否开启日志  (若开启则表示开启所有的日志功能)                 |
| log_bin                                 | ON                                |
|  log_bin_trust_function_creators          | OFF                                |
| log_error                               | /mydata/data/stu18.magedu.com.err  |
| log_output                              | FILE   #日志的输出的位置          |       
|  log_queries_not_using_indexes            | OFF                                |
|  log_slave_updates                        | OFF                               |
|  log_slow_queries                         | OFF                                |
|  log_warnings                             | 1                                  |
|  max_binlog_cache_size                    | 18446744073709547520               |
|  max_binlog_size                          | 1073741824                         |
|  max_binlog_stmt_cache_size               | 18446744073709547520               |
|  max_relay_log_size                       | 0                                  |
| relay_log                               |                                   |
|  relay_log_index                          |                                    |
|  relay_log_info_file                      | relay-log.info                     |
|  relay_log_purge                         | ON                                |
|  relay_log_recovery                       | OFF                                |
|  relay_log_space_limit                    | 0                                  |
|  slow_query_log                           | OFF                                |
|  slow_query_log_file                      | /mydata/data/stu18-slow.log        |
| sql_log_bin                             | ON                                |
| sql_log_off                             | OFF                               |
| sync_binlog                             | 0                                 |
|  sync_relay_log                           | 0                                  |
|  sync_relay_log_info                      | 0                                  |
----------------------------------------- -----------------------------------
41 rows in set  (0.00 sec)

 

政工日志(InnoDB特有的日志)可以协助提升级技术员作的效用。使用工作日志,存款和储蓄引擎在修改表的数量时只需求修改其内部存款和储蓄器拷贝,再把改修改行为记录到悠久在硬盘上的业务日志中,而不用每一趟都将修改的数额作者长久到磁盘。事务日志采纳扩大的形式,由此写日记的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O必要在磁盘的多个地方活动磁头,所以接纳事务日志的点子绝对来讲要快得多。事务日志长久现在,内部存款和储蓄器中被涂改的数码在后台可以慢慢的刷回到磁盘。近日大多的仓库储存引擎都以那般完结的,大家经常称为预写式日志,修改数据需求写两次磁盘。

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> set globalslow_query_log=1;       #开启慢查询日志
Query OK, 0 rowsaffected (0.35 sec)
mysql> setsession long_query_time=0.001;     #更改时间(当前session中,退出则重置)
Query OK, 0 rowsaffected (0.00 sec)
mysql> set globallong_query_time=0.001;      #更改时间(全局中,重启服务则重置)
mysql> SHOWVARIABLES LIKE 'long%';          #查询定义时间
----------------- ----------
| Variable_name   | Value   |
----------------- ----------
| long_query_time |0.001000 |
----------------- ----------
1 row in set (0.00sec)
mysql> showglobal variables like "%slow%";  #查看慢查询日志开启状态
--------------------- -----------------------------
| Variable_name       | Value                       |
--------------------- -----------------------------
|log_slow_queries    | ON                          |
|slow_launch_time    | 2                           |
|slow_query_log      | ON                          |
|slow_query_log_file | /mydata/data/stu18-slow.log |
--------------------- -----------------------------
4 rows in set (0.03sec)

 

如若说大家向有些表的有些字段插入一个多少而以此数目为日前岁月(日期时间型);过段时间将此二进制文件应用到另一台服务器上数据就能够变动进而致使数据的分歧性所以说对于这种非明确性的数额利用默许的话语定义实际不是牢靠的;

 

3、混合格局(mixed):交替使用行和说话、由mysql服务器自动剖断。

 

1、语句(statement):暗中同意的记录格式;

  2. 详解配置文件

  1. 概述

 

测验是不是足以记下日志:

 

二进制日志中常用的定义格式:

1.概述


 

2、行(row):定义的决不数据小编而是这一行的数目是何等;

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SHOWGLOBAL VARIABLES LIKE '%log%';
----------------------------------------- -----------------------------------
| Variable_name                           | Value                             |
----------------------------------------- -----------------------------------
| innodb_flush_log_at_trx_commit          | 1        #在事务提交时innodb是否同步日志从缓冲到文件中1表示事务以提交就同步不提交每隔一秒同步一次,性能会很差造成大量的磁盘I/O;定义为2表示只有在事务提交时才会同步但是可能会丢失整个事务      |
|innodb_locks_unsafe_for_binlog          |OFF                               |
| innodb_log_buffer_size                  | 8388608                           |
|innodb_log_file_size                    |5242880                           |
| innodb_log_files_in_group               | 2      #至少有两个                |
|innodb_log_group_home_dir               |./      #定义innodb事务日志组的位置       |
|innodb_mirrored_log_groups              |1    #表示对日志组做镜像          |
每个事务日志都是大小为5兆的文件:
[root@stu18 data]#ls -lh
-rw-rw---- 1 mysqlmysql 5.0M Oct  7 23:36 ib_logfile0
-rw-rw---- 1 mysqlmysql 5.0M Aug 12 01:06 ib_logfile1

 

内部,DIOdyssey参数钦定慢查询日志的蕴藏路线;filename参数钦赐日志的文书名,生成日志文件的完毕名称叫filename-slow.log。假若不点名存款和储蓄路线,慢查询日志暗中认可存款和储蓄到mysql数据库的数据文件下,借使不点名文件名,暗许文件名称为hostname-slow.log。

 

指令行下查看二进制日志:

 

 

 

 

basedir = path 使用给定目录作为根目录(安装目录)。
character-sets-dir = path 给出存放着字符集的目录。
datadir = path 从给定目录读取数据库文件。
pid-file = filename 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统); Init-V脚本需要使用这个文件里的进程ID结束mysqld进程。
socket = filename 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(仅适用于UNIX/Linux系统; 默认设置一般是/var/lib/mysql/mysql.sock文件)。在Windows环境下,如果MySQL客户与服务器是通过命名管道进行通信 的,–sock选项给出的将是该命名管道的名字(默认设置是MySQL)。
lower_case_table_name = 1/0 新目录和数据表的名字是否只允许使用小写字母; 这个选项在Windows环境下的默认设置是1(只允许使用小写字母)。

 

mysqld程序:语言设置

character-sets-server = name 新数据库或数据表的默认字符集。为了与MySQL的早期版本保持兼容,这个字符集也可以用–default-character-set选项给出; 但这个选项已经显得有点过时了。
collation-server = name 新数据库或数据表的默认排序方式。
lanuage = name 用指定的语言显示出错信息。

 

mysqld程序:通讯、互联网、新闻安全

enable-named-pipes 允许Windows 2000/XP环境下的客户和服务器使用命名管道(named pipe)进行通信。这个命名管道的默认名字是MySQL,但可以用–socket选项来改变。
local-infile [=0] 允许/禁止使用LOAD DATA LOCAL语句来处理本地文件。
myisam-recover [=opt1, opt2, ...] 在启动时自动修复所有受损的MyISAM数据表。这个选项的可取值有4种:DEFAULT、BACKUP、QUICK和FORCE; 它们与myisamchk程序的同名选项作用相同。
old-passwords 使用MySQL 3.23和4.0版本中的老算法来加密mysql数据库里的密码(默认使用MySQL 4.1版本开始引入的新加密算法)。
port = n 为MySQL程序指定一个TCP/IP通信端口(通常是3306端口)。
safe-user-create 只有在mysql.user数据库表上拥有INSERT权限的用户才能使用GRANT命令; 这是一种双保险机制(此用户还必须具备GRANT权限才能执行GRANT命令)。
shared-memory 允许使用内存(shared memory)进行通信(仅适用于Windows)。
shared-memory-base-name = name 给共享内存块起一个名字(默认的名字是MySQL)。
skip-grant-tables 不使用mysql数据库里的信息来进行访问控制(警告:这将允许用户任何用户去修改任何数据库)。
skip-host-cache 不使用高速缓存区来存放主机名和IP地址的对应关系。
skip-name-resovle 不把IP地址解析为主机名; 与访问控制(mysql.user数据表)有关的检查全部通过IP地址行进。
skip-networking 只允许通过一个套接字文件(Unix/Linux系统)或通过命名管道(Windows系统)进行本地连接,不允许ICP/IP连接; 这提高了安全性,但阻断了来自网络的外部连接和所有的Java客户程序(Java客户即使在本地连接里也使用TCP/IP)。
user = name mysqld程序在启动后将在给定UNIX/Linux账户下执行; mysqld必须从root账户启动才能在启动后切换到另一个账户下执行; mysqld_safe脚本将默认使用–user=mysql选项来启动mysqld程序。

 

mysqld程序:内存管理、优化、查询缓存区

bulk_insert_buffer_size = n 为一次插入多条新记录的INSERT命令分配的缓存区长度(默认设置是8M)。
key_buffer_size = n 用来存放索引区块的RMA值(默认设置是8M)。
join_buffer_size = n 在参加JOIN操作的数据列没有索引时为JOIN操作分配的缓存区长度(默认设置是128K)。
max_heap_table_size = n HEAP数据表的最大长度(默认设置是16M); 超过这个长度的HEAP数据表将被存入一个临时文件而不是驻留在内存里。
max_connections = n MySQL服务器同时处理的数据库连接的最大数量(默认设置是100)。
query_cache_limit = n 允许临时存放在查询缓存区里的查询结果的最大长度(默认设置是1M)。
query_cache_size = n 查询缓存区的最大长度(默认设置是0,不开辟查询缓存区)。
query_cache_type = 0/1/2 查询缓存区的工作模式:0, 禁用查询缓存区; 1,启用查询缓存区(默认设置); 2,”按需分配”模式,只响应SELECT SQL_CACHE命令。
read_buffer_size = n 为从数据表顺序读取数据的读操作保留的缓存区的长度(默认设置是128KB); 这个选项的设置值在必要时可以用SQL命令SET SESSION read_buffer_size = n命令加以改变。
read_rnd_buffer_size = n 类似于read_buffer_size选项,但针对的是按某种特定顺序(比如使用了ORDER BY子句的查询)输出的查询结果(默认设置是256K)。
sore_buffer = n 为排序操作分配的缓存区的长度(默认设置是2M); 如果这个缓存区太小,则必须创建一个临时文件来进行排序。
table_cache = n 同时打开的数据表的数量(默认设置是64)。
tmp_table_size = n 临时HEAP数据表的最大长度(默认设置是32M); 超过这个长度的临时数据表将被转换为MyISAM数据表并存入一个临时文件。

 

mysqld程序:日志

log [= file] 把所有的连接以及所有的SQL命令记入日志(通用查询日志); 如果没有给出file参数,MySQL将在数据库目录里创建一个hostname.log文件作为这种日志文件(hostname是服务器的主机名)。
log-slow-queries [= file] 把执行用时超过long_query_time变量值的查询命令记入日志(慢查询日志); 如果没有给出file参数,MySQL将在数据库目录里创建一个hostname-slow.log文件作为这种日志文件(hostname是服务器主机 名)。
long_query_time = n 慢查询的执行用时上限(默认设置是10s)。
long_queries_not_using_indexs 把慢查询以及执行时没有使用索引的查询命令全都记入日志(其余同–log-slow-queries选项)。
log-bin [= filename] 把对数据进行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二进制格式记入日志(二进制变更日志,binary update log)。这种日志的文件名是filename.n或默认的hostname.n,其中n是一个6位数字的整数(日志文件按顺序编号)。
log-bin-index = filename 二进制日志功能的索引文件名。在默认情况下,这个索引文件与二进制日志文件的名字相同,但后缀名是.index而不是.nnnnnn。
max_binlog_size = n 二进制日志文件的最大长度(默认设置是1GB)。在前一个二进制日志文件里的信息量超过这个最大长度之前,MySQL服务器会自动提供一个新的二进制日志文件接续上。
binlog-do-db = dbname 只把给定数 据库里的变化情况记入二进制日志文件,其他数据库里的变化情况不记载。如果需要记载多个数据库里的变化情况,就必须在配置文件使用多个本选项来设置,每个数据库一行。
binlog-ignore-db = dbname 不把给定数据库里的变化情况记入二进制日志文件。
sync_binlog = n 每经过n次日志写操作就把日志文件写入硬盘一次(对日志信息进行一次同步)。n=1是最安全的做法,但效率最低。默认设置是n=0,意思是由操作系统来负责二进制日志文件的同步工作。
log-update [= file] 记载出错情况的日志文件名(出错日志)。这种日志功能无法禁用。如果没有给出file参数,MySQL会使用hostname.err作为种日志文件的名字。

 

mysqld程序:镜像(主要调节镜像服务器)

server-id = n 给服务器分配一个独一无二的ID编号; n的取值范围是1~2的32次方启用二进制日志功能。
log-bin = name 启用二进制日志功能。这种日志的文件名是filename.n或默认的hostname.n,其中的n是一个6位数字的整数(日志文件顺序编号)。
binlog-do/ignore-db = dbname 只把给定数据库里的变化情况记入二进制日志文件/不把给定的数据库里的变化记入二进制日志文件。

 

mysqld程序:镜像(从属镜像服务器)

server-id = n 给服务器分配一个唯一的ID编号
log-slave-updates 启用从属服务器上的日志功能,使这台计算机可以用来构成一个镜像链(A->B->C)。
master-host = hostname 主控服务器的主机名或IP地址。如果从属服务器上存在mater.info文件(镜像关系定义文件),它将忽略此选项。
master-user = replicusername 从属服务器用来连接主控服务器的用户名。如果从属服务器上存在mater.info文件,它将忽略此选项。
master-password = passwd 从属服务器用来连接主控服务器的密码。如果从属服务器上存在mater.info文件,它将忽略此选项。
master-port = n 从属服务器用来连接主控服务器的TCP/IP端口(默认设置是3306端口)。
master-connect-retry = n 如果与主控服务器的连接没有成功,则等待n秒(s)后再进行管理方式(默认设置是60s)。如果从属服务器存在mater.info文件,它将忽略此选项。
master-ssl-xxx = xxx 对主、从服务器之间的SSL通信进行配置。
read-only = 0/1 0: 允许从属服务器独立地执行SQL命令(默认设置); 1: 从属服务器只能执行来自主控服务器的SQL命令。
read-log-purge = 0/1 1: 把处理完的SQL命令立刻从中继日志文件里删除(默认设置); 0: 不把处理完的SQL命令立刻从中继日志文件里删除。
replicate-do-table = dbname.tablename 与–replicate-do-table选项的含义和用法相同,但数据库和数据库表名字里允许出现通配符”%” (例如: test%.%–对名字以”test”开头的所有数据库里的所以数据库表进行镜像处理)。

 

replicate-do-db = name 只对这个数据库进行镜像处理。
replicate-ignore-table = dbname.tablename 不对这个数据表进行镜像处理。
replicate-wild-ignore-table = dbn.tablen 不对这些数据表进行镜像处理。
replicate-ignore-db = dbname 不对这个数据库进行镜像处理。
replicate-rewrite-db = db1name > db2name 把主控数据库上的db1name数据库镜像处理为从属服务器上的db2name数据库。
report-host = hostname 从属服务器的主机名; 这项信息只与SHOW SLAVE HOSTS命令有关–主控服务器可以用这条命令生成一份从属服务器的名单。
slave-compressed-protocol = 1 主、从服务器使用压缩格式进行通信–如果它们都支持这么做的话。
slave-skip-errors = n1, n2, …或all 即使发生出错代码为n1、n2等的错误,镜像处理工作也继续进行(即不管发生什么错误,镜像处理工作也继续进行)。如果配置得当,从属服务器不应该在执行 SQL命令时发生错误(在主控服务器上执行出错的SQL命令不会被发送到从属服务器上做镜像处理); 如果不使用slave-skip-errors选项,从属服务器上的镜像工作就可能因为发生错误而中断,中断后需要有人工参与才能继续进行。

 

mysqld–InnoDB:基本设置、表空间文件

skip-innodb 不加载InnoDB数据表驱动程序–如果用不着InnoDB数据表,可以用这个选项节省一些内存。
innodb-file-per-table 为每一个新数据表创建一个表空间文件而不是把数据表都集中保存在中央表空间里(后者是默认设置)。该选项始见于MySQL 4.1。
innodb-open-file = n InnoDB数据表驱动程序最多可以同时打开的文件数(默认设置是300)。如果使用了innodb-file-per-table选项并且需要同时打开很多数据表的话,这个数字很可能需要加大。
innodb_data_home_dir = p InnoDB主目录,所有与InnoDB数据表有关的目录或文件路径都相对于这个路径。在默认的情况下,这个主目录就是MySQL的数据目录。
innodb_data_file_path = ts 用来容纳InnoDB为数据表的表空间: 可能涉及一个以上的文件; 每一个表空间文件的最大长度都必须以字节(B)、兆字节(MB)或千兆字节(GB)为单位给出; 表空间文件的名字必须以分号隔开; 最后一个表空间文件还可以带一个autoextend属性和一个最大长度(max:n)。例如,ibdata1:1G; ibdata2:1G:autoextend:max:2G的意思是: 表空间文件ibdata1的最大长度是1GB,ibdata2的最大长度也是1G,但允许它扩充到2GB。除文件名外,还可以用硬盘分区的设置名来定义表 空间,此时必须给表空间的最大初始长度值加上newraw关键字做后缀,给表空间的最大扩充长度值加上raw关键字做后缀(例如/dev/hdb1: 20Gnewraw或/dev/hdb1:20Graw); MySQL 4.0及更高版本的默认设置是ibdata1:10M:autoextend。
innodb_autoextend_increment = n 带有autoextend属性的表空间文件每次加大多少兆字节(默认设置是8MB)。这个属性不涉及具体的数据表文件,那些文件的增大速度相对是比较小的。
innodb_lock_wait_timeout = n 如果某个事务在等待n秒(s)后还没有获得所需要的资源,就使用ROLLBACK命令放弃这个事务。这项设置对于发现和处理未能被InnoDB数据表驱动 程序识别出来的死锁条件有着重要的意义。这个选项的默认设置是50s。
innodb_fast_shutdown 0/1 是否以最快的速度关闭InnoDB,默认设置是1,意思是不把缓存在INSERT缓存区的数据写入数据表,那些数据将在MySQL服务器下次启动时再写入 (这么做没有什么风险,因为INSERT缓存区是表空间的一个组成部分,数据不会丢失)。把这个选项设置为0反面危险,因为在计算机关闭时,InnoDB 驱动程序很可能没有足够的时间完成它的数据同步工作,操作系统也许会在它完成数据同步工作之前强行结束InnoDB,而这会导致数据不完整。

 

mysqld程序:InnoDB–日志

innodb_log_group_home_dir = p 用来存放InnoDB日志文件的目录路径(如ib_logfile0、ib_logfile1等)。在默认的情况下,InnoDB驱动程序将使用 MySQL数据目录作为自己保存日志文件的位置。
innodb_log_files_in_group = n 使用多少个日志文件(默认设置是2)。InnoDB数据表驱动程序将以轮转方式依次填写这些文件; 当所有的日志文件都写满以后,之后的日志信息将写入第一个日志文件的最大长度(默认设置是5MB)。这个长度必须以MB(兆字节)或GB(千兆字节)为单 位进行设置。
innodb_flush_log_at_trx_commit = 0/1/2 这个选项决定着什么时候把日志信息写入日志文件以及什么时候把这些文件物理地写(术语称为”同步”)到硬盘上。设置值0的意思是每隔一秒写一次日志并进行 同步,这可以减少硬盘写操作次数,但可能造成数据丢失; 设置值1(设置设置)的意思是在每执行完一条COMMIT命令就写一次日志并进行同步,这可以防止数据丢失,但硬盘写操作可能会很频繁; 设置值2是一般折衷的办法,即每执行完一条COMMIT命令写一次日志,每隔一秒进行一次同步。
innodb_flush_method = x InnoDB日志文件的同步办法(仅适用于UNIX/Linux系统)。这个选项的可取值有两种: fdatasync,用fsync()函数进行同步; O_DSYNC,用O_SYNC()函数进行同步。
innodb_log_archive = 1 启用InnoDB驱动程序的archive(档案)日志功能,把日志信息写入ib_arch_log_n文件。启用这种日志功能在InnoDB与 MySQL一起使用时没有多大意义(启用MySQL服务器的二进制日志功能就足够用了)。

 

mysqld程序–InnoDB:缓存区的安装和优化

innodb_log_buffer_pool_size = n 为InnoDB数据表及其索引而保留的RAM内存量(默认设置是8MB)。这个参数对速度有着相当大的影响,如果计算机上只运行有 MySQL/InnoDB数据库服务器,就应该把全部内存的80%用于这个用途。

 

innodb_log_buffer_size = n 事务日志文件写操作缓存区的最大长度(默认设置是1MB)。
innodb_additional_men_pool_size = n 为用于内部管理的各种数据结构分配的缓存区最大长度(默认设置是1MB)。
innodb_file_io_threads = n I/O操作(硬盘写操作)的最大线程个数(默认设置是4)。
innodb_thread_concurrency = n InnoDB驱动程序能够同时使用的最大线程个数(默认设置是8)。

 

mysqld程序:另外选项

bind-address = ipaddr MySQL服务器的IP地址。如果MySQL服务器所在的计算机有多个IP地址,这个选项将非常重要。
default-storage-engine = type 新数据表的默认数据表类型(默认设置是MyISAM)。这项设置还可以通过–default-table-type选项来设置。
default-timezone = name 为MySQL服务器设置一个地理时区(如果它与本地计算机的地理时区不一样)。
ft_min_word_len = n 全文索引的最小单词长度工。这个选项的默认设置是4,意思是在创建全文索引时不考虑那些由3个或更少的字符构建单词。
Max-allowed-packet = n 客户与服务器之间交换的数据包的最大长度,这个数字至少应该大于客户程序将要处理的最大BLOB块的长度。这个选项的默认设置是1MB。
Sql-mode = model1, mode2, … MySQL将运行在哪一种SQL模式下。这个选项的作用是让MySQL与其他的数据库系统保持最大程度的兼容。这个选项的可取值包括ansi、db2、 oracle、no_zero_date、pipes_as_concat。

 

瞩目:要是在安排文件里给出的某些选项是mysqld不能够识其他,MySQL服务器将不运营。

 

 

二进制日志也叫作退换日志,首要用于记录修改数据或有希望引起数据变动的mysql语句,並且记下了语句爆发时间、实施时间长度、操作的多少等等。所以说经过二进制日志能够查询mysql数据库中开展了什么样变化。通常大小体量上限为1G。

 

翻开慢查询日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
mysql> use mysql
mysql> selectuser,host,password from user where user="root";
------ ------------------ ----------
| user | host             | password |
------ ------------------ ----------
| root |localhost        |          |
| root |stu18.magedu.com |          |
| root |127.0.0.1        |          |
| root | ::1              |          |
------ ------------------ ----------
4 rows in set (0.08sec)       #查询时间为0.08
mysql> systemmore /mydata/data/stu18_slow.log          #查询慢查询日志记录信息
/usr/local/mysql/bin/mysqld,Version: 5.5.33-log (Source distribution). started
with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
>>>>>>>>>>>>>>>>部分已省略>>>>>>>>>>>>>>
# Time: 13100723:46:33
# User@Host:root[root] @ localhost []
# Query_time:0.108459  Lock_time: 0.000216 Rows_sent:4  Rows_examined: 6
SETtimestamp=1381160793;
selectuser,host,password from user where user="root";

 

在mysql5.5.7之后:服务器将关闭此项职能。只好选择重命名原本的错误日志文件,手动洗涤日志创设二个新的:格局如下:

  3. 详解日志

 

二进制日志定义格局:

 

1
mysql> PURGE { BINARY | MASTER } LOGS {TO 'log_name' | BEFORE datetime_expr }

 

其中,log_error能够直接定义为文件路线,也得认为ON|OFF;log_warings只好动用1|0来定义按键运维。

 

【抓实Mysql基础】MySQL在Linux系统下布置文件及日志详解上海时时乐走势图官网。删除二进制日志新闻:

 

【抓实Mysql基础】MySQL在Linux系统下布置文件及日志详解上海时时乐走势图官网。是因为不能使用cat等方法直接张开并查看二进制日志;所以必需选拔mysqlbinlog命令。可是当正在实行mysql读写操作时建议并非选择此打开正在利用的二进制日志文件;若非要张开可flush logs。mysqlbinlog命令的利用办法:

 

慢查询日志是用来记录施行时间超越钦点时期的查询语句。通过慢查询日志,能够寻找出怎么样查询语句的实施作用好低,以便实行优化。日常提出拉开,它对服务器质量的熏陶一丁点儿,不过能够记录mysql服务器上实行了十分短日子的询问语句。可以扶助大家永世品质难点的。

 

当中基于行的定义格式数据量会大一些不过足以保障数据的准确性。

 

2、通过登陆mysql服务器直接定义,格局如下:

 

  MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下;在Linux下叫my.cnf,该公文位于/etc/my.cnf。

 

 

1、删除全部的二进制日志(不可效仿):

 

翻开二进制日志:

 

浅析:首先不提出在生养条件下采用此操作;删除全部的二进制日志后,Mysql将会再次创造新的二进制日志。新二进制日志的数码从000001起头。

 

查阅职业日志的概念:

 

越来越多消息请查阅官方文书档案:

本文由上海时时乐走势图发布于上海时时乐走势图官网,转载请注明出处:【抓实Mysql基础】MySQL在Linux系统下布置文件及日

您可能还会对下面的文章感兴趣: