Linux学习-MySQL日志管理(六)

日志
  • 错误日志:
  • 一般查询日志:
  • 慢查询日志:
  • 二进制日志:记录任何能够引起或可能引起数据库改变的语句【复制、即时点恢复】
  • 中继日志:从主服务器的二进制日志文件中复制而来的事件,并保存为日志文件
  • 事务日志:ACID,将随机IO转换为顺序IO,提高性能,保证事务提交后不会丢失
#binlog二进制日志
#general_log一般日志
#innodb事务日志
#slow_query_log慢查询日志
#sync_binlog是否将缓存日志同步到磁盘文件
mysql> show global variables like '%log%';
+-----------------------------------------+------------------------+
| Variable_name                           | Value                  |
+-----------------------------------------+------------------------+
| back_log                                | 80                     |
| binlog_cache_size                       | 32768                  |
| binlog_checksum                         | CRC32                  |
| binlog_direct_non_transactional_updates | OFF                    |
| binlog_format                           | STATEMENT              |
| binlog_max_flush_queue_time             | 0                      |
| binlog_order_commits                    | ON                     |
| binlog_row_image                        | FULL                   |
| binlog_rows_query_log_events            | OFF                    |
| binlog_stmt_cache_size                  | 32768                  |
| expire_logs_days                        | 0                      |
| general_log                             | OFF                    |
| general_log_file                        | /data/mail.log         |
| innodb_api_enable_binlog                | OFF                    |
| innodb_flush_log_at_timeout             | 1                      |
| innodb_flush_log_at_trx_commit          | 1                      |
| innodb_locks_unsafe_for_binlog          | OFF                    |
| innodb_log_buffer_size                  | 8388608                |
| innodb_log_file_size                    | 50331648               |
| innodb_log_files_in_group               | 2                      |
| innodb_log_group_home_dir               | ./                     |
| innodb_mirrored_log_groups              | 1                      |
| innodb_online_alter_log_max_size        | 134217728              |
| innodb_undo_logs                        | 128                    |
| log_bin                                 | OFF                    |
| log_bin_basename                        |                        |
| log_bin_index                           |                        |
| log_bin_trust_function_creators         | OFF                    |
| log_bin_use_v1_row_events               | OFF                    |
| log_error                               | /data/mail.tye.com.err |
| log_output                              | FILE                   |
| log_queries_not_using_indexes           | OFF                    |
| log_slave_updates                       | OFF                    |
| log_throttle_queries_not_using_indexes  | 0                      |
| 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_basename                      |                        |
| relay_log_index                         |                        |
| relay_log_info_file                     | relay-log.info         |
| relay_log_info_repository               | FILE                   |
| relay_log_purge                         | ON                     |
| relay_log_recovery                      | OFF                    |
| relay_log_space_limit                   | 0                      |
| slow_query_log                          | OFF                    |
| slow_query_log_file                     | /data/mail-slow.log    |
| sql_log_bin                             | ON                     |
| sql_log_off                             | OFF                    |
| sync_binlog                             | 0                      |
| sync_relay_log                          | 10000                  |
| sync_relay_log_info                     | 10000                  |
+-----------------------------------------+------------------------+
54 rows in set (0.00 sec)
错误日志
  • 服务器启动和关闭过程中的信息
  • 服务器运行过程中的错误信息
  • 事务调度器(event)运行一个事件时产生的信息
  • 在从服务器上启动从服务器进程时产生的信息
  • 错误日志位置: | log_error | /data/mail.tye.com.err | 默认存放在mysql数据目录下,名称以主机名+.err组成
  • 是否记录服务产生的警告信息【1表示记录,0表示不记录】 | log_warnings | 1 |
一般查询日志

| general_log | OFF | 是否启用查询日志(默认关闭,如开启,每次操作,记录一次日志会产生大量IO操作)
| general_log_file | /data/mail.log | 一般日志记录位置
| log_output | FILE | 定义一般查询日志和慢查询日志的保存方式,可以是TABLE,FILE,NONE,也可以是TABLE,FILE组合(使用逗号分隔),默认为TABLE,如果组合中出现NONE,要么其它设定都将失效,同时,无论是否启用日志功能,也不会记录任何相关的日志信息,作用范围为全局级别,可用于配置文件,属动态变量。

慢查询日志

| long_query_time | 10.000000 | 查询超出此变量的设定的时间都称为慢查询(单位:秒钟)
| slow_query_log | OFF | 是否记录慢查询(0或OFF表示禁用,1或者ON表示启用),日志信息的输出位置取决于log_output变量的定义,如果log_output设定为NONE,即使slow_query_log为ON,仍不会记录慢查询信息,作用范围为全局变量,可用于选项文件,属动态变量。
| slow_query_log_file | /data/mail-slow.log | 慢查询日志记录位置,可以通过–slow_query_log_file选项进行修改,作用范围全局级别,可用于选项文件,属动态变量。

二进制日志 注:不要将日志和数据库文件放入同一块硬盘
每次重新启动服务器,二进制日志会进行滚动
	----即时点恢复
	mysqlbinlog
	格式:
		基于语句:statement
		基于行:row
		混合方式:mixed
	日志事件:
		产生的时间(starttime)
		相对位置(position)
	日志文件:
		| binlog_format                           | STATEMENT              |				二进制日志
		log_bin                                 | ON                     |								是否开启二进制日志
		| log_bin_basename                        | /data/mysql-bin        |			二进制日志的基本名称(真正的名称后面加00001)
		| log_bin_index                           | /data/mysql-bin.index  |				二进制日志的索引文件
		| sql_log_bin                             | ON                     |							控制二进制日志信息是否记录进日志文件,默认为ON,表示启用此功能,用户可以在会话级别修改此变量的值,但其必须有SUPER权限,作用范围为全局和会话级别,属动态变量
		| sync_binlog                             | 0                      |							设置多久同步一次二进制日志至磁盘文件,0表示不同步,任何正数表示对二进制每多少次写操作之后同步一次,当autocommit的值为1时,每条语句的执行都会引起二进制日志同步,否则每个事务的提交引起二进制日志同步。
		| max_binlog_cache_size                   | 18446744073709547520   |
		| max_binlog_size                         | 1073741824             |
		| max_binlog_stmt_cache_size              | 18446744073709547520   |
		| expire_logs_days                        | 0                      |							二进制日志过期时间
二进制日志文件:
- 索引文件
- 日志文件

#开启二进制日志--修改mysql.配置文件/etc/my.cnf,在[mysqld]中添加
log-bin=/mydata/data/mysql-bin
事务日志
| innodb_flush_log_at_trx_commit          | 1                      |
	0:每秒同步,并执行磁盘flush操作
	1:每事务同步,并执行磁盘flush操作
	2:每事务同步,但不执行磁盘flush操作
| innodb_log_buffer_size                  | 8388608                |	内存缓存大小
| innodb_log_file_size                    | 50331648               |	日志大小
| innodb_log_files_in_group               | 2                      |		日志组中文件的数量
| innodb_log_group_home_dir               | ./                     |	日志文件的存储位置
#事务日志
[root@mail ~]# ll /data
total 176260
...
-rw-rw---- 1 mysql mysql 50331648 Jul  1 04:25 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Apr 14 07:16 ib_logfile1
...
#查看当前正在使用的二进制日志,position记录上一次日志结束的位置
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#向表中插入数据后,二进制日志的position位置发生改变
mysql> use students;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> insert into tutors(Tname,Gender,Age)values('tye','M',34);
Query OK, 1 row affected (0.20 sec)

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set 
+------------------+----------+--------------+------------------+-------------------
| mysql-bin.000001 |      408 |              |                  |                   
+------------------+----------+--------------+------------------+-------------------
1 row in set (0.00 sec)
#查看二进制日志记录的内容
mysql> show binlog events in 'mysql-bin.000001';
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------+
| Log_name         | Pos | Event_type  | Server_id | End_log_pos | Info                                                                     |
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------+
| mysql-bin.000001 |   4 | Format_desc |         1 |         120 | Server ver: 5.6.10-log, Binlog ver: 4                                    |
| mysql-bin.000001 | 120 | Query       |         1 |         207 | BEGIN                                                                    |
| mysql-bin.000001 | 207 | Intvar      |         1 |         239 | INSERT_ID=15                                                             |
| mysql-bin.000001 | 239 | Query       |         1 |         377 | use `students`; insert into tutors(Tname,Gender,Age)values('tye','M',34) |
| mysql-bin.000001 | 377 | Xid         |         1 |         408 | COMMIT /* xid=15 */                                                      |
+------------------+-----+-------------+-----------+-------------+--------------------------------------------------------------------------+
5 rows in set (0.00 sec)
#从指定位置查询二进制日志
mysql> show binlog events in 'mysql-bin.000001' from 207;
+------------------+-----+------------+-----------+-------------+--------------------------------------------------------------------------+
| Log_name         | Pos | Event_type | Server_id | End_log_pos | Info                                                                     |
+------------------+-----+------------+-----------+-------------+--------------------------------------------------------------------------+
| mysql-bin.000001 | 207 | Intvar     |         1 |         239 | INSERT_ID=15                                                             |
| mysql-bin.000001 | 239 | Query      |         1 |         377 | use `students`; insert into tutors(Tname,Gender,Age)values('tye','M',34) |
| mysql-bin.000001 | 377 | Xid        |         1 |         408 | COMMIT /* xid=15 */                                                      |
+------------------+-----+------------+-----------+-------------+--------------------------------------------------------------------------+
3 rows in set (0.00 sec)
#通过mysqlbinlog查看二进制日志
[root@mail data]# mysqlbinlog mysql-bin.000001
/*!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
#210630 19:30:31 server id 1  end_log_pos 120 CRC32 0xb0eb839b 	Start: binlog v 4, server v 5.6.10-log created 210630 19:30:31 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
11XcYA8BAAAAdAAAAHgAAAABAAQANS42LjEwLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADXVdxgEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAZuD
67A=
'/*!*/;
# at 120
#210630 19:34:38 server id 1  end_log_pos 207 CRC32 0xb42e4f72 	Query	thread_id=1	exec_time=0	error_code=0
SET TIMESTAMP=1625052878/*!*/;
SET @@session.pseudo_thread_id=1/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1073741824/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 207
# at 239
#210630 19:34:38 server id 1  end_log_pos 239 CRC32 0xcdacb444 	Intvar
SET INSERT_ID=15/*!*/;
#210630 19:34:38 server id 1  end_log_pos 377 CRC32 0x137bdf73 	Query	thread_id=1	exec_time=0	error_code=0
use `students`/*!*/;
SET TIMESTAMP=1625052878/*!*/;
insert into tutors(Tname,Gender,Age)values('tye','M',34)
/*!*/;
# at 377
#210630 19:34:38 server id 1  end_log_pos 408 CRC32 0x54668fa0 	Xid = 15
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
#从指定位置开始查看二进制日志
root@mail data]# mysqlbinlog --start-position=239 mysql-bin.000001
/*!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
#210630 19:30:31 server id 1  end_log_pos 120 CRC32 0xb0eb839b 	Start: binlog v 4, server v 5.6.10-log created 210630 19:30:31 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
11XcYA8BAAAAdAAAAHgAAAABAAQANS42LjEwLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADXVdxgEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAZuD
67A=
'/*!*/;
# at 239
#210630 19:34:38 server id 1  end_log_pos 377 CRC32 0x137bdf73 	Query	thread_id=1	exec_time=0	error_code=0
use `students`/*!*/;
SET TIMESTAMP=1625052878/*!*/;
SET @@session.pseudo_thread_id=1/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1073741824/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
insert into tutors(Tname,Gender,Age)values('tye','M',34)
/*!*/;
# at 377
#210630 19:34:38 server id 1  end_log_pos 408 CRC32 0x54668fa0 	Xid = 15
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
#通过时间查询二进制日志
[root@mail data]# mysqlbinlog --start-datetime='2021-06-30 19:34:38' mysql-bin.000001
/*!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
#210630 19:30:31 server id 1  end_log_pos 120 CRC32 0xb0eb839b 	Start: binlog v 4, server v 5.6.10-log created 210630 19:30:31 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
11XcYA8BAAAAdAAAAHgAAAABAAQANS42LjEwLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADXVdxgEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAZuD
67A=
'/*!*/;
# at 120
#210630 19:34:38 server id 1  end_log_pos 207 CRC32 0xb42e4f72 	Query	thread_id=1	exec_time=0	error_code=0
SET TIMESTAMP=1625052878/*!*/;
SET @@session.pseudo_thread_id=1/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1073741824/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 207
# at 239
#210630 19:34:38 server id 1  end_log_pos 239 CRC32 0xcdacb444 	Intvar
SET INSERT_ID=15/*!*/;
#210630 19:34:38 server id 1  end_log_pos 377 CRC32 0x137bdf73 	Query	thread_id=1	exec_time=0	error_code=0
use `students`/*!*/;
SET TIMESTAMP=1625052878/*!*/;
insert into tutors(Tname,Gender,Age)values('tye','M',34)
/*!*/;
# at 377
#210630 19:34:38 server id 1  end_log_pos 408 CRC32 0x54668fa0 	Xid = 15
COMMIT/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
#通过flush logs滚动二进制日志,从服务器会滚动中继日志,不需要重启mysqld服务器
mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 |      120 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
#删除二进制日志文件之前的文件
mysql> purge binary logs to 'mysql-bin.000002';
Query OK, 0 rows affected (0.01 sec)

#查看当前所拥有的二进制日志文件
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000002 |       120 |
+------------------+-----------+
1 row in set (0.00 sec)

事务日志

事务性存储引擎保证原子性,一致性,隔离性,持久性
innodb_flush_log_at_trx_commit
0:每秒同步,并执行磁盘flush操作
1:每次事务执行完成,执行磁盘flush操作
2:每次事务执行完成,并且每秒执行磁盘flush操作
innodb_log_file_size:事务日志文件大小
innodb_log_files_in_group :日志组中文件数量
innodb_log_group_home_dir:事务日志存放位置(数据目录下ib_logfile0,ib_logfile1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值