목차
一、日志文件类型" >一、日志文件类型
2、慢速查询日志(slow_query_log)" >2、慢速查询日志(slow_query_log)
3、二进制日志(log_bin)" >3、二进制日志(log_bin)
1)二进制文件介绍" >1)二进制文件介绍
2)二进制文件的功能" >2)二进制文件的功能
3)二进制文件的存储路径" >3)二进制文件的存储路径
데이터 베이스 MySQL 튜토리얼 MySqlStudy之--MySql日志管理

MySqlStudy之--MySql日志管理

Jun 07, 2016 pm 02:55 PM
mysql 통나무 관리하다

MySql Study之--MySql日志管理 一、日志文件类型 MySQL有几个不同的日志文件,可以帮助你找出 mysqld 内部发生的事情: 日志文件 日志文件信息内容 错误日志 记录启动、运行或停止mysqld时出现的问题。(log_err) 查询日志 记录建立的客户端连接和执行的语句

MySql Study之--MySql日志管理

 

一、日志文件类型

MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情:

日志文件

日志文件信息内容

错误日志

记录启动、运行或停止mysqld时出现的问题。(log_err)

查询日志

记录建立的客户端连接和执行的语句。

更新日志

记录更改数据的语句,不赞成使用该日志。

二进制日志

记录所有更改数据的语句。还用于复制。(bin_log)

慢日志

记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。(slow_query_log)


二、查询日志存放位置

mysql> show variables like '%log%';  
+-----------------------------------------+-----------------------------+  
| Variable_name                           | Value                       |  
+-----------------------------------------+-----------------------------+  
| back_log                                | 50                          |  
| binlog_cache_size                       | 32768                       |  
| binlog_checksum                         | NONE                        |  
| binlog_direct_non_transactional_updates | OFF                         |  
| binlog_format                           | STATEMENT                   |  
| 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                        | /var/lib/mysql/rh6.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                           |  
| innodb_undo_logs                        | 128                         |  
| log_bin                                 | OFF                         |  
| log_bin_basename                        |                             |  
| log_bin_index                           |                             |  
| log_bin_trust_function_creators         | OFF                         |  
| log_error                               | /var/log/mysqld.log         |  
| log_output                              | FILE                        |  
| log_queries_not_using_indexes           | OFF                         |  
| log_slave_updates                       | 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_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                     | /var/lib/mysql/rh6-slow.log |  
| sql_log_bin                             | ON                          |  
| sql_log_off                             | OFF                         |  
| sync_binlog                             | 0                           |  
| sync_relay_log                          | 0                           |  
| sync_relay_log_info                     | 0                           |  
+-----------------------------------------+-----------------------------+  
47 rows in set (0.02 sec)  
mysql> show variables like '%log%';
+-----------------------------------------+-----------------------------+
| Variable_name                           | Value                       |
+-----------------------------------------+-----------------------------+
| back_log                                | 50                          |
| binlog_cache_size                       | 32768                       |
| binlog_checksum                         | NONE                        |
| binlog_direct_non_transactional_updates | OFF                         |
| binlog_format                           | STATEMENT                   |
| 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                        | /var/lib/mysql/rh6.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                           |
| innodb_undo_logs                        | 128                         |
| log_bin                                 | OFF                         |
| log_bin_basename                        |                             |
| log_bin_index                           |                             |
| log_bin_trust_function_creators         | OFF                         |
| log_error                               | /var/log/mysqld.log         |
| log_output                              | FILE                        |
| log_queries_not_using_indexes           | OFF                         |
| log_slave_updates                       | 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_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                     | /var/lib/mysql/rh6-slow.log |
| sql_log_bin                             | ON                          |
| sql_log_off                             | OFF                         |
| sync_binlog                             | 0                           |
| sync_relay_log                          | 0                           |
| sync_relay_log_info                     | 0                           |
+-----------------------------------------+-----------------------------+
47 rows in set (0.02 sec)
로그인 후 복사

1、错误日志(log_err指定了错误日志的位置)

错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。

如果mysqld莫名其妙地死掉并且mysqld_safe需要重新启动它,mysqld_safe在错误日志中写入一条restarted mysqld消息。如果mysqld注意到需要自动检查或着修复一个表,则错误日志中写入一条消息。

在一些操作系统中,如果mysqld服务终止,错误日志包含堆栈跟踪信息。跟踪信息可以用来确定mysqld终止的地方。

可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。如果没有给定file_name值,mysqld使用错误日志名host_name.err 并在数据目录中写入日志文件。如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出--log-error选项,则不会重新命名)。

如果不指定--log-error,或者(在Windows中)如果你使用--console选项,错误被写入标准错误输出stderr。通常标准输出为你的终端。

[root@rh6 ~]# more /var/log/mysqld.log</strong>   
150402 10:26:07 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql  
150402 10:26:08 InnoDB: The InnoDB memory heap is disabled  
150402 10:26:08 InnoDB: Mutexes and rw_locks use GCC atomic builtins  
150402 10:26:08 InnoDB: Compressed tables use zlib 1.2.3  
150402 10:26:08 InnoDB: Using Linux native AIO  
150402 10:26:08 InnoDB: CPU does not support crc32 instructions  
150402 10:26:08 InnoDB: Initializing buffer pool, size = 128.0M  
150402 10:26:08 InnoDB: Completed initialization of buffer pool  
150402 10:26:08 InnoDB: highest supported file format is Barracuda.  
InnoDB: The log sequence number in ibdata files does not match  
InnoDB: the log sequence number in the ib_logfiles!  
150402 10:26:08  InnoDB: Database was not shut down normally!  
InnoDB: Starting crash recovery.  
InnoDB: Reading tablespace information from the .ibd files...  
InnoDB: Restoring possible half-written data pages from the doublewrite  
InnoDB: buffer...  
150402 10:26:10 InnoDB: 128 rollback segment(s) are active.  
150402 10:26:10 InnoDB: Waiting for the background threads to start  
150402 10:26:11 InnoDB: 1.2.4 started; log sequence number 1602901  
150402 10:26:11 [Note] Recovering after a crash using mysql-bin  
150402 10:26:11 [Note] Starting crash recovery...  
150402 10:26:11 [Note] Crash recovery finished.  
150402 10:26:11 [Note] Event Scheduler: Loaded 0 events  
150402 10:26:11 [Note] /usr/local/mysql/bin/mysqld: ready for connections.  
Version: '5.6.4-m7-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution  
<strong>[root@rh6 ~]# more /var/log/mysqld.log</strong> 
150402 10:26:07 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
150402 10:26:08 InnoDB: The InnoDB memory heap is disabled
150402 10:26:08 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150402 10:26:08 InnoDB: Compressed tables use zlib 1.2.3
150402 10:26:08 InnoDB: Using Linux native AIO
150402 10:26:08 InnoDB: CPU does not support crc32 instructions
150402 10:26:08 InnoDB: Initializing buffer pool, size = 128.0M
150402 10:26:08 InnoDB: Completed initialization of buffer pool
150402 10:26:08 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
150402 10:26:08  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
150402 10:26:10 InnoDB: 128 rollback segment(s) are active.
150402 10:26:10 InnoDB: Waiting for the background threads to start
150402 10:26:11 InnoDB: 1.2.4 started; log sequence number 1602901
150402 10:26:11 [Note] Recovering after a crash using mysql-bin
150402 10:26:11 [Note] Starting crash recovery...
150402 10:26:11 [Note] Crash recovery finished.
150402 10:26:11 [Note] Event Scheduler: Loaded 0 events
150402 10:26:11 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: '5.6.4-m7-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution
로그인 후 복사

2、慢速查询日志(slow_query_log)

    用--log-slow-queries[=file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件。获得初使表锁定的时间不算作执行时间。
로그인 후 복사
    如果没有给出file_name值, 默认未主机名,后缀为-slow.log。如果给出了文件名,但不是绝对路径名,文件则写入数据目录。
로그인 후 복사
语句执行完并且所有锁释放后记入慢查询日志。记录顺序可以与执行顺序不相同。
로그인 후 복사
慢查询日志可以用来找到执行时间长的查询,可以用于优化。但是,检查又长又慢的查询日志会很困难。要想容易些,你可以使用mysqldumpslow命令获得日志中显示的查询摘要来处理慢查询日志。
로그인 후 복사
    在MySQL 5.1的慢查询日志中,不使用索引的慢查询同使用索引的查询一样记录。要想防止不使用索引的慢查询记入慢查询日志,使用--log-short-format选项。
로그인 후 복사
    在MySQL 5.1中,通过--log-slow-admin-statements服务器选项,你可以请求将慢管理语句,例如OPTIMIZE TABLE、ANALYZE TABLE和 ALTER TABLE写入慢查询日志。
로그인 후 복사
用查询缓存处理的查询不加到慢查询日志中,因为表有零行或一行而不能从索引中受益的查询也不写入慢查询日志。
로그인 후 복사
  1. 默认情况下MySql没有开启慢查询日志,开启慢查询日志:

mysql> set global slow_query_log=on;  
Query OK, 0 rows affected (0.33 sec)  
  
mysql> show variables like '%slow_%';  
+---------------------+-----------------------------+  
| Variable_name       | Value                       |  
+---------------------+-----------------------------+  
| slow_launch_time    | 2                           |  
| slow_query_log      | ON                          |  
| slow_query_log_file | /var/lib/mysql/rh6-slow.log |  
+---------------------+-----------------------------+  
3 rows in set (0.02 sec)  
<pre class="html" name="code">mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.33 sec)
mysql> show variables like '%slow_%';
+---------------------+-----------------------------+
| Variable_name       | Value                       |
+---------------------+-----------------------------+
| slow_launch_time    | 2                           |
| slow_query_log      | ON                          |
| slow_query_log_file | /var/lib/mysql/rh6-slow.log |
+---------------------+-----------------------------+
3 rows in set (0.02 sec)
로그인 후 복사

查看慢查询日志:

[root@rh6 mysql]# cat /var/lib/mysql/rh6-slow.log  
/usr/local/mysql/bin/mysqld, Version: 5.6.4-m7 (Source distribution). started with:  
Tcp port: 3306  Unix socket: /tmp/mysql.sock  
Time                 Id Command    Argument  

[root@rh6 mysql]# cat /var/lib/mysql/rh6-slow.log
/usr/local/mysql/bin/mysqld, Version: 5.6.4-m7 (Source distribution). started with:
Tcp port: 3306  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument
로그인 후 복사

3、二进制日志(log_bin)

1)二进制文件介绍

二进制日志以一种更有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息。

二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。

备注:二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用。

2)二进制文件的功能

二进制日志还包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。如果你想要记录所有语句(例如,为了识别有问题的查询),你应使用一般查询日志。

二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。

二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

运行服务器时若启用二进制日志则性能大约慢1%。但是,二进制日志的好处,即用于恢复并允许设置复制超过了这个小小的性能损失。

3)二进制文件的存储路径

当用--log-bin[=file_name]选项启动时,mysqld写入包含所有更新数据的SQL命令的日志文件。如果未给出file_name值, 默认名为-bin后面所跟的主机名。如果给出了文件名,但没有包含路径,则文件被写入数据目录。建议指定一个文件名.

如果你在日志名中提供了扩展名(例如,--log-bin=file_name.extension),则扩展名被悄悄除掉并忽略。

mysqld在每个二进制日志名后面添加一个数字扩展名。每次你启动服务器或刷新日志时该数字则增加。如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志。如果你正使用大的事务,二进制日志还会超过max_binlog_size:事务全写入一个二进制日志中,绝对不要写入不同的二进制日志中。

为了能够知道还使用了哪个不同的二进制日志文件,mysqld还创建一个二进制日志索引文件,包含所有使用的二进制日志文件的文件名。默认情况下与二进制日志文件的文件名相同,扩展名为'.index'。你可以用--log-bin-index[=file_name]选项更改二进制日志索引文件的文件名。当mysqld在运行时,不应手动编辑该文件;如果这样做将会使mysqld变得混乱。

开启二进制日志: 
[root@rh6 mysql]# cat /etc/my.cnf  
[mysqld]  
datadir=/var/lib/mysql  
socket=/tmp/mysql.sock  
#socket=/var/lib/mysql/mysql.sock  
user=mysql  
# Disabling symbolic-links is recommended to prevent assorted security risks  
symbolic-links=0  
  
log-bin=mysql-bin  
binlog_format=mixed  
  
[mysqld_safe]  
log-error=/var/log/mysqld.log  
pid-file=/var/run/mysqld/mysqld.pid  
<strong>开启二进制日志:</strong>
[root@rh6 mysql]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/tmp/mysql.sock
#socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-bin=mysql-bin
binlog_format=mixed
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
로그인 후 복사


开启二进制日志后:

mysql> show variables like '%log_bin%';  
+---------------------------------+--------------------------------+  
| Variable_name                   | Value                          |  
+---------------------------------+--------------------------------+  
| log_bin                         | ON                             |  
| log_bin_basename                | /var/lib/mysql/mysql-bin       |  
| log_bin_index                   | /var/lib/mysql/mysql-bin.index |  
| log_bin_trust_function_creators | OFF                            |  
| sql_log_bin                     | ON                             |  
+---------------------------------+--------------------------------+  
5 rows in set (0.00 sec)  
mysql> show variables like '%log_bin%';
+---------------------------------+--------------------------------+
| Variable_name                   | Value                          |
+---------------------------------+--------------------------------+
| log_bin                         | ON                             |
| log_bin_basename                | /var/lib/mysql/mysql-bin       |
| log_bin_index                   | /var/lib/mysql/mysql-bin.index |
| log_bin_trust_function_creators | OFF                            |
| sql_log_bin                     | ON                             |
+---------------------------------+--------------------------------+
5 rows in set (0.00 sec)
로그인 후 복사
[root@rh6 ~]# ls -l /var/lib/mysql/  
total 28704  
-rw-rw---- 1 mysql mysql       56 Jan 28 17:25 auto.cnf  
-rw-rw---- 1 mysql mysql 18874368 Apr  2 10:26 ibdata1  
-rw-rw---- 1 mysql mysql  5242880 Apr  2 10:26 ib_logfile0  
-rw-rw---- 1 mysql mysql  5242880 Jan 28 17:21 ib_logfile1  
drwx------ 2 mysql root      4096 Jan 28 17:21 mysql  
-rw-rw---- 1 mysql mysql      114 Apr  2 10:26 mysql-bin.000001  
-rw-rw---- 1 mysql mysql      114 Apr  2 10:26 mysql-bin.000002  
-rw-rw---- 1 mysql mysql       38 Apr  2 10:26 mysql-bin.index  
drwx------ 2 mysql mysql     4096 Jan 28 17:21 performance_schema  
-rw-rw---- 1 mysql mysql      173 Mar 31 11:05 rh6-slow.log  
drwx------ 2 mysql root      4096 Jan 28 17:21 test
로그인 후 복사

查看二进制文件内容:

mysql-bin.index 是二进制文件的索引,一般不能更改

[root@rh6 mysql]# cat mysql-bin.index
./mysql-bin.000001
./mysql-bin.000002
로그인 후 복사

通过mysqlbinlog工具读取二进制文件内容:

[root@rh6 mysql]# mysqlbinlog mysql-bin.000002  
/*!40019 SET @@session.max_insert_delayed_threads=0*/;  
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;  
DELIMITER /*!*/;  
# at 4  
#150402 10:26:11 server id 1  end_log_pos 114   Start: binlog v 4, server v 5.6.4-m7-log created 150402 10:26:11 at startup  
# Warning: this binlog is either in use or was not closed properly.  
ROLLBACK/*!*/;  
BINLOG '  
w6gcVQ8BAAAAbgAAAHIAAAABAAQANS42LjQtbTctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  
AAAAAAAAAAAAAAAAAADDqBxVEzgNAAgAEgAEBAQEEgAAVgAEGggAAAAICAgCAAAAAJLUw68=  
'/*!*/;  
DELIMITER ;  
# End of log file  
ROLLBACK /* added by mysqlbinlog */;  
/*!50003 SET <a target=_blank href="mailto:COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;">COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;  
</a></strong>  
<strong>[root@rh6 mysql]# mysqlbinlog mysql-bin.000002
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#150402 10:26:11 server id 1  end_log_pos 114   Start: binlog v 4, server v 5.6.4-m7-log created 150402 10:26:11 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
w6gcVQ8BAAAAbgAAAHIAAAABAAQANS42LjQtbTctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADDqBxVEzgNAAgAEgAEBAQEEgAAVgAEGggAAAAICAgCAAAAAJLUw68=
'/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET <a target=_blank href="mailto:COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;">COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
</a></strong>
[html] view plaincopyprint?
<strong>[root@rh6 mysql]# mysqlbinlog mysql-bin.000001  
/*!40019 SET @@session.max_insert_delayed_threads=0*/;  
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;  
DELIMITER /*!*/;  
# at 4  
#150331 11:11:39 server id 1  end_log_pos 114   Start: binlog v 4, server v 5.6.4-m7-log created 150331 11:11:39 at startup  
ROLLBACK/*!*/;  
BINLOG '  
axAaVQ8BAAAAbgAAAHIAAAAAAAQANS42LjQtbTctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA  
AAAAAAAAAAAAAAAAAABrEBpVEzgNAAgAEgAEBAQEEgAAVgAEGggAAAAICAgCAAAAALen85c=  
'/*!*/;  
DELIMITER ;  
# End of log file  
ROLLBACK /* added by mysqlbinlog */;  
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;  
[root@rh6 mysql]# </strong>  
<strong>[root@rh6 mysql]# mysqlbinlog mysql-bin.000001
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#150331 11:11:39 server id 1  end_log_pos 114   Start: binlog v 4, server v 5.6.4-m7-log created 150331 11:11:39 at startup
ROLLBACK/*!*/;
BINLOG '
axAaVQ8BAAAAbgAAAHIAAAAAAAQANS42LjQtbTctbG9nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABrEBpVEzgNAAgAEgAEBAQEEgAAVgAEGggAAAAICAgCAAAAALen85c=
'/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
로그인 후 복사

如果每天都会生成大量的二进制日志,这些日志长时间不清理的话,将会对磁盘空间带来很大的浪费,所以定期清理日志是DBA维护mysql的一个重要工作

1)reset master

在上面查看日志存放的文件夹中,二进制日志命名的格式是以mysql-bin.*,*代表日志的序号,序号是递增的,其中还有mysql-bin.index是日志的索引文件,记录了日志的最大序号

mysql> reset master;
Query OK, 0 rows affected (0.08 sec)

[root@rh6 mysql]# ls -l
total 28700
-rw-rw---- 1 mysql mysql       56 Jan 28 17:25 auto.cnf
-rw-rw---- 1 mysql mysql 18874368 Apr  2 10:26 ibdata1
-rw-rw---- 1 mysql mysql  5242880 Apr  2 10:26 ib_logfile0
-rw-rw---- 1 mysql mysql  5242880 Jan 28 17:21 ib_logfile1
drwx------ 2 mysql root      4096 Jan 28 17:21 mysql
-rw-rw---- 1 mysql mysql      114 Apr  2 11:20 mysql-bin.000001
-rw-rw---- 1 mysql mysql       19 Apr  2 11:20 mysql-bin.index
drwx------ 2 mysql mysql     4096 Jan 28 17:21 performance_schema
-rw-rw---- 1 mysql mysql      173 Mar 31 11:05 rh6-slow.log
drwx------ 2 mysql root      4096 Jan 28 17:21 test</span>
로그인 후 복사

--可以看到日志又重新从000001开始


2)PURGE MASTER LOGS TO & PURGE MASTER LOGS BEFORE
      执行PURGE MASTER LOGS TO 'mysql-bin.******'命令,是将'******'编号之前的所有日志进行删除
     执行PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh:mm:ss'命令,是将在'yyyy-mm-dd hh:mm:ss'时间之前的所有日志进行删除

3)EXPIRE_LOGS_DAYS
    此参数是设置日志的过期天数,过期的日志将会被自动删除,这有利于减少我们管理日志的工作量,需要修改my.cnf

    expire_logs_days=3

这里我们设定保存日志为3天,3天之后过期的日志将被自动删除


通过二进制日志恢复数据

   bin-log是记录着mysql所有事件的操作,当mysql发生灾难性错误时,可以通过bin-log做完整恢复,基于时间点的恢复,和基于位置的恢复

完整恢复:

   假定我们每天凌晨2点都会使用mysqldump备份数据库,但在第二天早上9点由于数据库出现了故障,数据无法访问,需要恢复数据,先使用昨天凌晨备份的文件进行恢复到凌晨2点的状态,在使用mysqlbinlog恢复自mysqldump备份以来的binlog
    mysql localhost mysql-bin.000001 | mysql -uroot -p
这样数据库就可以完全的恢复到崩溃前的完全状态

基于时间点的恢复:

  由于误操作,比如说删除了一张表,这时使用上面讲的完全恢复是没有用的,因为日志里面还存在误操作的语句,,我们需要的是恢复到误操作前的状态,然后跳过误操作的语句,再恢复后面操作的语句,假定我们删除了一张表的误操作发生在10:00这个时间点,我们可以使用下面的语句用备份和binlog将数据恢复到故障前

基于位置恢复:

  由于上面提到的,使用基于时间点的恢复可能出现,在一个时间点里面可能存在误操作和其他正确的操作,所以我们需要一种更为精确的恢复方式

主从复制
   mysql的复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器上,然后在从服务器上对这些日志做重新执行的操作,从而使得从服务器和主服务器保持数据的同步


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL : 세계에서 가장 인기있는 데이터베이스 소개 MySQL : 세계에서 가장 인기있는 데이터베이스 소개 Apr 12, 2025 am 12:18 AM

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 주로 데이터를 신속하고 안정적으로 저장하고 검색하는 데 사용됩니다. 작업 원칙에는 클라이언트 요청, 쿼리 해상도, 쿼리 실행 및 반환 결과가 포함됩니다. 사용의 예로는 테이블 작성, 데이터 삽입 및 쿼리 및 조인 작업과 같은 고급 기능이 포함됩니다. 일반적인 오류에는 SQL 구문, 데이터 유형 및 권한이 포함되며 최적화 제안에는 인덱스 사용, 최적화 된 쿼리 및 테이블 분할이 포함됩니다.

phpmyadmin을 여는 방법 phpmyadmin을 여는 방법 Apr 10, 2025 pm 10:51 PM

다음 단계를 통해 phpmyadmin을 열 수 있습니다. 1. 웹 사이트 제어판에 로그인; 2. phpmyadmin 아이콘을 찾고 클릭하십시오. 3. MySQL 자격 증명을 입력하십시오. 4. "로그인"을 클릭하십시오.

MySQL의 장소 : 데이터베이스 및 프로그래밍 MySQL의 장소 : 데이터베이스 및 프로그래밍 Apr 13, 2025 am 12:18 AM

데이터베이스 및 프로그래밍에서 MySQL의 위치는 매우 중요합니다. 다양한 응용 프로그램 시나리오에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) MySQL은 웹, 모바일 및 엔터프라이즈 레벨 시스템을 지원하는 효율적인 데이터 저장, 조직 및 검색 기능을 제공합니다. 2) 클라이언트 서버 아키텍처를 사용하고 여러 스토리지 엔진 및 인덱스 최적화를 지원합니다. 3) 기본 사용에는 테이블 작성 및 데이터 삽입이 포함되며 고급 사용에는 다중 테이블 조인 및 복잡한 쿼리가 포함됩니다. 4) SQL 구문 오류 및 성능 문제와 같은 자주 묻는 질문은 설명 명령 및 느린 쿼리 로그를 통해 디버깅 할 수 있습니다. 5) 성능 최적화 방법에는 인덱스의 합리적인 사용, 최적화 된 쿼리 및 캐시 사용이 포함됩니다. 모범 사례에는 거래 사용 및 준비된 체계가 포함됩니다

MySQL을 사용하는 이유는 무엇입니까? 혜택과 장점 MySQL을 사용하는 이유는 무엇입니까? 혜택과 장점 Apr 12, 2025 am 12:17 AM

MySQL은 성능, 신뢰성, 사용 편의성 및 커뮤니티 지원을 위해 선택됩니다. 1.MYSQL은 효율적인 데이터 저장 및 검색 기능을 제공하여 여러 데이터 유형 및 고급 쿼리 작업을 지원합니다. 2. 고객-서버 아키텍처 및 다중 스토리지 엔진을 채택하여 트랜잭션 및 쿼리 최적화를 지원합니다. 3. 사용하기 쉽고 다양한 운영 체제 및 프로그래밍 언어를 지원합니다. 4. 강력한 지역 사회 지원을 받고 풍부한 자원과 솔루션을 제공합니다.

Apache의 데이터베이스에 연결하는 방법 Apache의 데이터베이스에 연결하는 방법 Apr 13, 2025 pm 01:03 PM

Apache는 데이터베이스에 연결하여 다음 단계가 필요합니다. 데이터베이스 드라이버 설치. 연결 풀을 만들려면 Web.xml 파일을 구성하십시오. JDBC 데이터 소스를 작성하고 연결 설정을 지정하십시오. JDBC API를 사용하여 Connections, 명세서 작성, 매개 변수 바인딩, 쿼리 또는 업데이트 실행 및 처리를 포함하여 Java 코드의 데이터베이스에 액세스하십시오.

Docker의 MySQL을 시작하는 방법 Docker의 MySQL을 시작하는 방법 Apr 15, 2025 pm 12:09 PM

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.

MySQL의 역할 : 웹 응용 프로그램의 데이터베이스 MySQL의 역할 : 웹 응용 프로그램의 데이터베이스 Apr 17, 2025 am 12:23 AM

웹 응용 프로그램에서 MySQL의 주요 역할은 데이터를 저장하고 관리하는 것입니다. 1. MySQL은 사용자 정보, 제품 카탈로그, 트랜잭션 레코드 및 기타 데이터를 효율적으로 처리합니다. 2. SQL 쿼리를 통해 개발자는 데이터베이스에서 정보를 추출하여 동적 컨텐츠를 생성 할 수 있습니다. 3.mysql은 클라이언트-서버 모델을 기반으로 작동하여 허용 가능한 쿼리 속도를 보장합니다.

CentOS7에 MySQL을 설치하는 방법 7 CentOS7에 MySQL을 설치하는 방법 7 Apr 14, 2025 pm 08:30 PM

MySQL을 우아하게 설치하는 열쇠는 공식 MySQL 저장소를 추가하는 것입니다. 특정 단계는 다음과 같습니다. 피싱 공격을 방지하기 위해 MySQL 공식 GPG 키를 다운로드하십시오. MySQL 리포지토리 파일 추가 : rpm -uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm yum repository cache : yum 업데이트 설치 mysql : yum 설치 mysql-server startup startup mysql 서비스 : systemctl start mysqlctl start mysqlctl.

See all articles