MySQL日志详解
发布时间:2023-02-16 13:17:29 所属栏目:MySql 来源:互联网
导读:MySQL日志记录了MysqL数据库日常操作和错误信息。MysqL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MysqL数据库的运行情况、用户的操作、错误的信息等。 MysqL的日志分为以下四大类: 错误日志:记录MysqL服务的启动,运行或停
MySQL日志记录了MysqL数据库日常操作和错误信息。MysqL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MysqL数据库的运行情况、用户的操作、错误的信息等。 MysqL的日志分为以下四大类: 错误日志:记录MysqL服务的启动,运行或停止MysqL服务时出现的问题; 查询日志:记录建立的客户端的连接和执行的语句; 二进制日志:记录所有更改数据的语句,可以用于数据的复制; 慢查询日志:记录所有执行的时间超过long_query_time的所有查询或不使用索引的查询。 默认情况下,所有日志创建于MysqL数据目录中,通过刷新日志,可以强制MysqL关闭和重新打开日志文件,Flush logs刷新日志或者执行MysqLadmin flush-logs 如果正使用MysqL复制功能,在复制服务器上可以维护更多日志文件,这种日志我们称为接替日志。启动日志功能会降低MysqL数据库的性能。 1)查看系统设置 <!--查看全局的系统状态--> MysqL> show global variablesG MysqL> show global variables like '%log%'; <!--查看当前会话的系统状态--> MysqL> show session variablesG MysqL> show session variables like '%log%'; 若要修改上面查看出来的参数,可以在MysqL的主配置文件中的MysqLd字段中写入即可,如:binlog_cache_size = 1M。又或者可以在MysqL数据库中进行临时修改:set global binlog_cache_size = 1048576,这种临时修改在MysqL重启后就会失效。 2)查看运行状态 <!--查看全局的运行状态--> MysqL> show global statusG <!--查看当前会话的运行状态--> MysqL> show session status; <!--查看MysqL的版本--> [root@MysqL ~]# MysqL -V MysqL> status; MysqL> select version(); 1、错误日志 在MysqL数据库中,错误日志功能是默认开启的。默认情况下,错误日志存储在MysqL数据库的数据目录中。错误日志文件通常的名称为hostname.err。其中,hostname表示服务器主机名。 错误日志信息可以自己进行配置的,错误日志所记录的信息是可以通过log-error和log-warnings来定义的,其中log-error是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。默认情况下错误日志大概记录以下几个方面的信息:服务器启动和关闭过程中的信息(未必是错误信息,如MysqL如何启动InnoDB的表空间文件的、如何初始化自己的存储引擎的等等)、服务器运行过程中的错误信息、事件调度器运行一个事件时产生的信息、在从服务器上启动服务器进程时产生的信息,MysqL有很多系统变量可以设置,系统变量设置不同,会导致系统运行状态的不同。因此MysqL提供两组命令,分别查看系统设置和运行状态。 一般而言,日志级别的定义没有会话变量都只是在全局级别下定义错误日志的状态: MysqL> show global variables like '%log_error%'; +---------------------+----------------------------------+ | Variable_name | Value | +---------------------+----------------------------------+ | binlog_error_action | ABORT_SERVER | | log_error | /usr/local/MysqL/data/MysqLd.err | | log_error_verbosity | 3 | +---------------------+----------------------------------+ 3 rows in set (0.01 sec) 其中 log_error定义为错误日志文件路径 ,log_error_verbosity值得含义如下: Verbosity Message 1 Error only 2 Error and warnings 3 Errors, warnings,and notes(default) 错误日志的存放路径在my.cnf的主配置文件中指定,如下: MySQL日志详解 为了方便维护需要,有时候会希望将错误日志中的内容做备份并重新开始记录,这时候就可以利用MysqL 的FLUSH LOGS 命令来告诉MysqL 备份旧日志文件并生成新的日志文件。备份文件名以“.old”结尾。 删除错误日志 在MysqL5.5.7之前:数据库管理员可以删除很长时间之前的错误日志,以保证MysqL服务器上的硬盘空间。MysqL数据库中,可以使用MysqLadmin命令开启新的错误日志。MysqLadmin命令的语法如下:MysqLadmin –u root –p flush-logs也可以登录MysqL数据库中使用FLUSH LOGS语句来开启新的错误日志。 在MysqL5.5.7之后:服务器将关闭此项功能。只能使用重命名原来的错误日志文件,手动冲洗日志创建一个新的,方式如下: [root@MysqL ~]# cd /usr/local/MysqL/data/ [root@MysqL data]# mv MysqLd.err{,.old} [root@MysqL data]# MysqLadmin -uroot -p flush-logs Enter password: 2、二进制日志 二进制日志主要记录MysqL数据库的变化,二进制日志以一种有效的格式,并且是事务安全的方式包含更新日志中可用的信息。二进制日志包含了所有更新了数据或者已经潜在更新了数据。还包含关于每个更新数据库的语句的执行时间,它不包含没有修改任何数据的语句。使用二进制日志的主要目的是最大可能地恢复数据库。 1)启动二进制日志(默认情况下二进制日志是关闭的) [root@MysqL data]# vim /etc/my.cnf #编辑主配置文件 [MysqLd] basedir=/usr/local/MysqL datadir=/usr/local/MysqL/data port=3306 server_id=1 socket=/usr/local/MysqL/MysqL.sock log-error=/usr/local/MysqL/data/MysqLd.err log-bin=/usr/local/MysqL/data/binary_log #指定二进制日志的路径及名称 expire_logs_days=10 #清除日志的天数 max_binlog_size=100M #单个日志文件的大小限制,超出会新建一个日志文件 [root@MysqL data]# systemctl restart MysqLd #重启MysqL使配置生效 [root@MysqL data]# ll | grep binary #会在指定的路径下生成以下两个文件 -rw-r----- 1 MysqL MysqL 154 12月 30 20:59 binary_log.000001 -rw-r----- 1 MysqL MysqL 40 12月 30 20:59 binary_log.index 登录到数据库中也可以查看到,如下: MySQL日志详解 2)查看二进制日志 MysqL二进制日志存储了所有的变更信息,MysqL二进制日志经常使用。当MysqL创建二进制日志文件时,首先创建一个以’filename’为名称,以’.index’为后缀的文件;在创建一个以’filename’为名称,以’.000001’为后缀的文件。当MysqL服务重启一次,以’.000001’为后缀的文件会增加一个,并且后缀名加1 递增。如果日志长度超过max_binlog_size的上限,也会创建一个新的日志。 Show binary logs;可以查看当前的二进制日志文件个数及其文件名。二进制日志并不能直接查看,如果想要查看日志内容, 可以通过MysqLbinlog命令查看: MysqL> show binary logs; +-------------------+-----------+ | Log_name | File_size | +-------------------+-----------+ | binary_log.000001 | 154 | +-------------------+-----------+ 1 row in set (0.00 sec) 也可以退出MysqL在命令行使用MysqLbinlog命令查看: [root@MysqL data]# MysqLbinlog binary_log.000001 3)删除二进制日志 MysqL的二进制文件可以配置自动删除,同时MysqL提供了手动删除二进制文件的方法: RESET MASTER:删除所有的二进制日志文件; PURGE MASTER LOGS:只删除部分二进制日志文件; Reset master:删除所有二进制日志 ; Purge master logs to ‘二进制名’ :删除单个二进制日志之前的。 MysqL> purge master logs to "binary_log.000003"; <!--删除...03之前的二进制日志文件--> (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |