网站用什么系统好,数据百度做网站好用吗,成都芯片设计公司,建立网站目录结构的意义一.日志
1.日志和备份的必要性
日志刷新
2.mysql的日志类型
#xff08;1#xff09;错误日志
查看当前错误日志和是否记录警告设置
#xff08;2#xff09;通用查询日志
查看通用查询日志的设置
#xff08;3#xff09;二进制日志
查看二进制文件的设置…一.日志
1.日志和备份的必要性
日志刷新
2.mysql的日志类型
1错误日志
查看当前错误日志和是否记录警告设置
2通用查询日志
查看通用查询日志的设置
3二进制日志
查看二进制文件的设置查看最大大小也可以在my.cnf中通过max_binlog_sizexx指定
查看二进制日志文件以及当前正使用哪个文件
读取二进制日志mysqlbinlog 查看文件具体内容
清空二进制日志文件删除二进制日志文件 恢复二进制日志
4慢日志
查看慢日志位置和状态
临时开启慢日志永久开启同理修改my.cnf文件 一.日志
1.日志和备份的必要性
在数据库保存数据时有时候会因为误删除数据库意外断电或程序意外终止由于病毒造成的数据库损坏或丢失文件系统损坏后系统进行自检操作升级数据库时命令语句不严格设备故障自然灾害等不可避免会出现数据丢失或者被破坏这样情况下我们必须保证数据的安全性和完整性就需要使用日志来查看或者恢复数据了。
默认情况下所有日志创建于mysqld数据目录中。通过刷新日志mysql下执行flush logs或者命令行执行mysqladmin flush-logsmysqladmin refresh你可以强制 mysqld来关闭和重新打开日志文件或者在某些情况下切换到一个新的日志,如果你正使用MySQL复制功能从复制服务器将维护更多日志文件被称为接替日志。
日志刷新
[rootlocalhost mysql]# ll
-rw-r----- 1 mysql mysql 1782 Jul 23 20:33 binlog.000001
-rw-r----- 1 mysql mysql 593 Jul 24 10:01 binlog.000002mysql8.0 [SLB]flush logs;
Query OK, 0 rows affected (0.03 sec)
[rootlocalhost mysql]# ll
-rw-r----- 1 mysql mysql 1782 Jul 23 20:33 binlog.000001
-rw-r----- 1 mysql mysql 637 Jul 24 10:08 binlog.000002
-rw-r----- 1 mysql mysql 157 Jul 24 10:08 binlog.000003[rootlocalhost mysql]# mysqladmin flush-logs -uroot -p
Enter password: [rootlocalhost mysql]# ll
-rw-r----- 1 mysql mysql 1782 Jul 23 20:33 binlog.000001
-rw-r----- 1 mysql mysql 637 Jul 24 10:08 binlog.000002
-rw-r----- 1 mysql mysql 201 Jul 24 10:11 binlog.000003
-rw-r----- 1 mysql mysql 157 Jul 24 10:11 binlog.0000042.mysql的日志类型
1错误日志
错误日志主要记录服务器启动和关闭过程中的信息、服务器运行过程中的错误信息、事件调度器运行一个时间时产生的信息、在从服务器上启动从服务器进程时产生的信息。
上表参考位置中如果没有给定名称和路径mysqld使用错误日志名host_name.err并在数据目录中写入日志文件。如果日志文件不存在mysql启动或者执行flush logs时会创建新的日志文件。
查看当前错误日志和是否记录警告设置
mysql8.0 [SLB]show global variables like %log_error%;
--------------------------------------------------------------------
| Variable_name | Value |
--------------------------------------------------------------------
| binlog_error_action | ABORT_SERVER |
| log_error | /var/log/mysqld.log |
| log_error_services | log_filter_internal; log_sink_internal |
| log_error_suppression_list | |
| log_error_verbosity | 2 |
--------------------------------------------------------------------
5 rows in set (0.00 sec)mysql8.0 [SLB]show global variables like %log_warnings%;
Empty set (0.01 sec)2通用查询日志
记录建立的客户端连接和执行的语句默认关闭
mysql服务器默认情况下并没有开启通用查询日志。如果需要通用查询日志可通过修改配置文件来开启
启动开关general_log{ON|OFF}
日志文件变量general_log_file[/PATH/TO/file]
全局日志开关log{ON|OFF} 该开关打开后所有日志都会被启用
记录类型log_output{TABLE|FILE|NONE}FILE表示将日志存入文件默认值是FILETABLE表示将日志存入数据库这样日志信息就会被写入到mysql.slow_log表中。mysql数据库支持同时两种日志存储方式配置的时候以逗号隔开。
因此要启用通用查询日志需要至少配置general_logONlog_output{TABLE|FILE}。而general_log_file如果没有指定默认名是host_name.log。
查看通用查询日志的设置
mysql8.0 [SLB]show global variables like %general%;
------------------------------------------------
| Variable_name | Value |
------------------------------------------------
| general_log | OFF |
| general_log_file | /var/lib/mysql/localhost.log |
------------------------------------------------
2 rows in set (0.01 sec)可以通过mysql临时设置开启
mysql8.0 [SLB]set global general_logon;
Query OK, 0 rows affected (0.01 sec)mysql8.0 [SLB]show global variables like %general%;
------------------------------------------------
| Variable_name | Value |
------------------------------------------------
| general_log | ON |
| general_log_file | /var/lib/mysql/localhost.log |
------------------------------------------------
2 rows in set (0.04 sec)永久开启需要更改my.cnf文件添加内容
general_logON
general_log_file路径和名称
3二进制日志
二进制日志包含关于每个更新数据库的语句的执行时间信息。 它不包含不会修改任何数据的语句例如selectshow等。
二进制日志的主要目的是在数据库存在故障时恢复时能够最大可能地更新数据库即时点恢复因为二进制日志包含备份后进行的所有更新。二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。
执行后数据非常大此时基于记录来保存数据是一些即时的比如时间等需要基于行就保存记录准确的值两种方式可能一起搭配使用
查看二进制文件的设置查看最大大小也可以在my.cnf中通过max_binlog_sizexx指定
在my.cnf中使用log-bin [ file_name]来开启二进制日志使用skip-log-bin1来关闭二进制日志
mysql8.0 [SLB]show variables like %log_bin%;
--------------------------------------------------------------
| Variable_name | Value |
--------------------------------------------------------------
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/binlog |
| log_bin_index | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
--------------------------------------------------------------
6 rows in set (0.01 sec)mysql8.0 [SLB]show variables like max_binlog_size;
-----------------------------
| Variable_name | Value |
-----------------------------
| max_binlog_size | 1073741824 |
-----------------------------
1 row in set (0.00 sec)查看二进制日志文件以及当前正使用哪个文件
mysql8.0 [SLB]show binary logs;
-------------------------------------
| Log_name | File_size | Encrypted |
-------------------------------------
| binlog.000001 | 1782 | No |
| binlog.000002 | 637 | No |
| binlog.000003 | 201 | No |
| binlog.000004 | 180 | No |
| binlog.000005 | 778 | No |
| binlog.000006 | 157 | No |
-------------------------------------
6 rows in set (0.00 sec)mysql8.0 [SLB]show master status;
----------------------------------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
----------------------------------------------------------------------------
| binlog.000006 | 157 | | | |
----------------------------------------------------------------------------
1 row in set (0.00 sec)读取二进制日志mysqlbinlog 查看文件具体内容
mysql8.0 [SLB]show binlog events in binlog.000006;
-----------------------------------------------------------------------------------------------
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
-----------------------------------------------------------------------------------------------
| binlog.000006 | 4 | Format_desc | 1 | 126 | Server ver: 8.0.34, Binlog ver: 4 |
| binlog.000006 | 126 | Previous_gtids | 1 | 157 | |
-----------------------------------------------------------------------------------------------
2 rows in set (0.00 sec)mysql8.0 [SLB]show binlog events in binlog.000002 from 4; ---指定从片段4开始查看
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| binlog.000002 | 4 | Format_desc | 1 | 126 | Server ver: 8.0.34, Binlog ver: 4 |
| binlog.000002 | 126 | Previous_gtids | 1 | 157 | |
| binlog.000002 | 157 | Anonymous_Gtid | 1 | 234 | SET SESSION.GTID_NEXT ANONYMOUS |
| binlog.000002 | 234 | Query | 1 | 339 | create database SLB /* xid18 */ |
| binlog.000002 | 339 | Anonymous_Gtid | 1 | 418 | SET SESSION.GTID_NEXT ANONYMOUS |
| binlog.000002 | 418 | Query | 1 | 593 | use SLB; create table t1 ( id int primary key, name varchar(10) not null, dpart char(20) not null) /* xid261 */ |
| binlog.000002 | 593 | Rotate | 1 | 637 | binlog.000003;pos4 |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7 rows in set (0.00 sec)/*
Log_name表示当前事件所在的binlog文件名称
Pos当前事件的开始位置每个事件都占用固定的字节大小
Event_type在event_type列中在当前binlog v4版本中每个binlog文件总是以Format Description Event作为开始以Rotate Event结束作为结束。Format_desc也就是我们所说的Format Description Event是binlog文件的第一个事件Previous_gtids该事件完整名称为PREVIOUS_GTIDS_LOG_EVENT是在之前的binlog文件中已经执行过的GTID。需要我们开启GTID选项这个事件才会有值。RotateRotate Event是每个binlog文件的结束事件
Server_id表示产生这个事件的mysql server_id通过设置my.cnf中的server-id选项进行配置。
End_log_position表示下一个事件的开始位置。
Info表示1当前事件的描述信息。
*/[rootlocalhost mysql]# mysqlbinlog binlog.000006
清空二进制日志文件删除二进制日志文件
mysql8.0 [SLB] reset master; ---master表示当前使用的
mysql8.0 [SLB] purge binary/master logs to 日志; ---删除此日志之前的所有日志文件
mysql8.0 [SLB] purge binary/master logs before date; ---删除某个时间之前的所有日志文件 恢复二进制日志
在数据库出现意外丢失数据时使用mysqlbinlog工具从指定的时间点开始比如最后一次备份直到如今或者是到另外一个指定的时间点的日志中恢复数据。
创建数据库创建表查看当前使用的日志文件和信息
mysql8.0 [(none)]create database SLB1;
Query OK, 1 row affected (0.02 sec)mysql8.0 [(none)]use SLB1;
Database changed
mysql8.0 [SLB1]create table t1 (- id int primary key,- name char(20));
Query OK, 0 rows affected (0.04 sec)mysql8.0 [SLB1]show master status;
----------------------------------------------------------------------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
----------------------------------------------------------------------------
| binlog.000002 | 741 | | | |
----------------------------------------------------------------------------
1 row in set (0.00 sec)mysql8.0 [SLB1]show binlog events in binlog.000002\G;
*************************** 1. row ***************************Log_name: binlog.000002Pos: 4Event_type: Format_descServer_id: 1
End_log_pos: 126Info: Server ver: 8.0.34, Binlog ver: 4
*************************** 2. row ***************************Log_name: binlog.000002Pos: 126Event_type: Previous_gtidsServer_id: 1
End_log_pos: 157Info:
*************************** 3. row ***************************Log_name: binlog.000002Pos: 157Event_type: Anonymous_GtidServer_id: 1
End_log_pos: 234Info: SET SESSION.GTID_NEXT ANONYMOUS
*************************** 4. row ***************************Log_name: binlog.000002Pos: 234Event_type: QueryServer_id: 1
End_log_pos: 339Info: create database SLB /* xid18 */
*************************** 5. row ***************************Log_name: binlog.000002Pos: 339Event_type: Anonymous_GtidServer_id: 1
End_log_pos: 416Info: SET SESSION.GTID_NEXT ANONYMOUS
*************************** 6. row ***************************Log_name: binlog.000002Pos: 416Event_type: QueryServer_id: 1
End_log_pos: 524Info: create database SLB1 /* xid257 */
*************************** 7. row ***************************Log_name: binlog.000002Pos: 524Event_type: Anonymous_GtidServer_id: 1
End_log_pos: 601Info: SET SESSION.GTID_NEXT ANONYMOUS
*************************** 8. row ***************************Log_name: binlog.000002Pos: 601Event_type: QueryServer_id: 1
End_log_pos: 741Info: use SLB1; create table t1 (
id int primary key,
name char(20)) /* xid262 */
8 rows in set (0.00 sec)删除表和数据并刷新日志
mysql8.0 [SLB1]drop table t1;
Query OK, 0 rows affected (0.03 sec)mysql8.0 [SLB1]drop database SLB1;
Query OK, 0 rows affected (0.02 sec)mysql8.0 [(none)]flush logs;
Query OK, 0 rows affected (0.03 sec)mysql8.0 [(none)]show databases;
--------------------
| Database |
--------------------
| SLB |
| information_schema |
| mysql |
| performance_schema |
| sys |
--------------------
5 rows in set (0.00 sec)我当前使用的是binlog.000002就去二进制文件中查看binlog.000002的内容
mysql8.0 [SLB1]show variables like %log_bin%; ---就去/var/lib/mysql下查找
--------------------------------------------------------------
| Variable_name | Value |
--------------------------------------------------------------
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/binlog |
| log_bin_index | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
--------------------------------------------------------------
6 rows in set (0.00 sec)[rootlocalhost mysql]# pwd
/var/lib/mysql
[rootlocalhost mysql]# ll | grep binlog.000002
-rw-r----- 1 mysql mysql 1170 Jul 24 12:57 binlog.000002
[rootlocalhost mysql]# mysqlbinlog binlog.000002找到我们删除表或库的那个时间根据以下命令来恢复
[rootlocalhost mysql]# mysqlbinlog --stop-datetime23-07-24 12:56:45 binlog.000002 | mysql -uroot -p查看
mysql8.0 [(none)]show databases;
--------------------
| Database |
--------------------
| SLB |
| SLB1 |
| information_schema |
| mysql |
| performance_schema |
| sys |
--------------------
6 rows in set (0.00 sec)
Database changed
mysql8.0 [SLB1]show tables;
----------------
| Tables_in_SLB1 |
----------------
| t1 |
----------------
1 row in set (0.01 sec)4慢日志
记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询默认关闭
mysql8.0 [SLB]show variables like %query_time%; ---查询超过默认的10s可成为慢查询
----------------------------
| Variable_name | Value |
----------------------------
| long_query_time | 10.000000 |
----------------------------
1 row in set (0.05 sec)MySQL如果启用了 slow_query_logON 选项就会记录执行时间超过long_query_time的查询初使表锁定的时间不算作执行时间。my.cnf记录文件为slow_query_log_file[file_name]如果没有给出file_name值 默认为主机名后缀为-slow.log。如果给出了文件名但不是绝对路径名文件则写入数据目录。
查看慢日志位置和状态 mysql8.0 [SLB]show variables like %query_log%;
-----------------------------------------------------------------
| Variable_name | Value |
-----------------------------------------------------------------
| binlog_rows_query_log_events | OFF |
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
-----------------------------------------------------------------
3 rows in set (0.00 sec)mysql8.0 [SLB]show variables like slow_query_log;
-----------------------
| Variable_name | Value |
-----------------------
| slow_query_log | OFF |
-----------------------
1 row in set (0.00 sec)临时开启慢日志永久开启同理修改my.cnf文件
mysql8.0 [SLB]set global slow_query_logON;
Query OK, 0 rows affected (0.01 sec)mysql8.0 [SLB]show variables like slow_query_log;
-----------------------
| Variable_name | Value |
-----------------------
| slow_query_log | ON |
-----------------------
1 row in set (0.00 sec)