首页 > 数据库 >MySQL日志

MySQL日志

时间:2023-06-02 12:31:54浏览次数:41  
标签:slow log MySQL 查询 mysql 日志



文章目录

  • 一、理论
  • 二、错误日志 (Error Log)
  • 三、二进制日志
  • 四、事务日志(redo日志)
  • 五、慢查询日志(slow query log)


一、理论

数据库日常操作和错误信息。MySQL有不同类型的日志文件(各自存储了不同类型的日志),从日志当中可以查询到MySQL数据库的运行情况、用户的操作、错误的信息等。

MySQL日志分为4大类

  • 错误日志:记录MySQL服务的启动,运行或停止mysql服务时的问题
  • 查询日志:记录建立的客户端的连接和执行的语句
  • 二进制日志:记录所有更改数据的语句,可以用于数据的复制
  • 慢查询日志:记录所有执行的时间超过long_query_time的所有查询或不使用索引的查询

默认情况下,所有日志创建与MySQL数据目录中,通过刷新日志,可以强制MySQL关闭和重新打开日志文件,Flush logs刷新日志或者执行mysqladmin flush-logs 如果正使用MySQL复制功能,在复制服务器上可以维护更多日志文件,这种日志我们称为接替日志。启动日志功能会降低MySQL数据库的性能。

//刷新日志,在日志文件位置,可生成新的日志文件
mysql> flush logs;
Query OK, 0 rows affected (0.00 sec)

[root@mysqld01 ~]# mysqladmin flush-logs -uroot -p123.com

二、错误日志 (Error Log)

在mysql数据库中,错误日志功能是默认开启的。默认情况下,错误日志存储在mysql数据库的数据目录中。错误日志文件通常的名称为hostname.err。其中,hostname表示服务器主机名。 错误日志信息可以自己进行配置的,错误日志所记录的信息是可以通过log-error和log-warnings来定义的,其中log-error是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。

默认情况下错误日志大概记录以下几个方面的信息:

  • 服务器启动和关闭过程中的信息(未必是错误信息,如mysql如何启动InnoDB的表空间文件的、如何初始化自己的存储引擎的等等)
  • 服务器运行过程中的错误信息
  • 事件调度器运行一个事件时产生的信息
  • 在从服务器上启动服务器进程时产生的信息

MySQL有很多系统变量可以设置,系统变量设置不同,会导致系统运行状态的不同。因此mysql提供两组命令,分别查看系统设置和运行状态。

1、查看系统设置:

语法:SHOW [GLOBAL | SESSION] VARIABLES [like_or_where]  SHOW VARIABLES: shows the values ofMySQL system variables.

如:

mysql> show session variables like 'wait%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+
1 row in set (0.00 sec)

2、运行状态:

语法:SHOW [GLOBAL | SESSION] STATUS [like_or_where]  SHOW STATUS: provides server statusinformation.

如:

mysql> show session status like 'uptime';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 147   |
+---------------+-------+
1 row in set (0.00 sec)

修改系统配置

方法1:配置文件设置my.cnf 如:binlog_cache_size = 1M
方法2:set global binlog_cache_size = 1048576

mysql> set global binlog_cache_size = 1048576;
Query OK, 0 rows affected (0.00 sec)

查看mysql的版本

[root@mysqld01 ~]# mysql -V
mysql  Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using  EditLine wrap

或者

mysql> status;
--------------
mysql  Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using  EditLine wrapper

Connection id:		2
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.32 Source distribution
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/usr/local/mysql/mysql.sock
Uptime:			11 min 5 sec

Threads: 1  Questions: 14  Slow queries: 0  Opens: 110  Flush tables: 1  Open tables: 103  Queries per second avg: 0.021
--------------

或者

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.32    |
+-----------+
1 row in set (0.00 sec)

一般而言,日志级别的定义没有会话变量都只是在全局级别下进行定义 错误日志的状态:

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.00 sec)

其中 log_error定义为错误日志文件路径 log_error_verbosity:

Verbosity Value

Message Types Logged

1

Errors only

2

Errors and warnings

3

Errors, warnings, and notes (default)

为了方便维护需要,有时候会希望将错误日志中的内容做备份并重新开始记录,这时候就可以利用MySQL 的FLUSH LOGS 命令来告诉MySQL 备份旧日志文件并生成新的日志文件。

备份文件名以“.old”结尾。 删除错误日志: 在mysql5.5.7之前:数据库管理员可以删除很长时间之前的错误日志,以保证mysql服务器上的硬盘空间。mysql数据库中,可以使用mysqladmin命令开启新的错误日志。mysqladmin命令的语法如下:mysqladmin –uroot –p flush-logs也可以登录mysql数据库中使用FLUSH LOGS语句来开启新的错误日志。

在mysql5.5.7之后:服务器将关闭此项功能。只能使用重命名原来的错误日志文件,手动冲洗日志创建一个新的:方式如下:

[root@mysqld01 data]# pwd
/usr/local/mysql/data
[root@mysqld01 data]# mv mysqld.err old.mysqld.err
[root@mysqld01 data]# mysqladmin -uroot -p flush-logs
Enter password:

三、二进制日志

主要记录MySQL数据库的变化,二进制日志以一种有效的格式,并且是事务安全的方式包含更新日志中可用的信息。二进制日志包含了所有更新了数据或者已经潜在更新了数据。二进制日志还包含关于每个更新数据库的语句的执行时间,它不包含没有修改任何数据的语句。使用二进制日志的主要目的是最大可能地恢复数据库。

启动二进制日志
默认情况下二进制日志是关闭的 编辑配置文件My.ini 或my.cnf

[root@mysqld01 data]# cat /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
pid-file = /usr/local/mysql/data/mysql.pid

log-bin = /usr/local/mysql/data/log-bin  //二进制日志
expire_logs_days = 10    //清除日志的天数
max_binlog_size = 100M   //单个日志文件的大小限制,超出会新建一个默认1G

[root@mysqld01 ~]# systemctl restart mysqld.service

查询日志的设置

mysql> show variables like 'log_bin%';
+---------------------------------+-------------------------------------+
| Variable_name                   | Value                               |
+---------------------------------+-------------------------------------+
| log_bin                         | ON                                  |
| log_bin_basename                | /usr/local/mysql/data/log-bin       |
| log_bin_index                   | /usr/local/mysql/data/log-bin.index |
| log_bin_trust_function_creators | OFF                                 |
| log_bin_use_v1_row_events       | OFF                                 |
+---------------------------------+-------------------------------------+
5 rows in set (0.00 sec)

查看二进制日志
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 |
+----------------+-----------+
| log-bin.000001 |       154 |
+----------------+-----------+
1 row in set (0.00 sec)

查看二进制日志的内容

[root@mysqld01 data]# mysqlbinlog log-bin.000001 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#210101 18:40:25 server id 1  end_log_pos 123 CRC32 0x25d13f92 	Start: binlog v 4, server v 5.7.32-log created 210101 18:40:25 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
GfzuXw8BAAAAdwAAAHsAAAABAAQANS43LjMyLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAZ/O5fEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AZI/0SU=
'/*!*/;
........省略

删除二进制文件
MySQL的二进制文件可以配置自动删除,同时MySQL提供了手动删除二进制文件的方法:RESET MASTER 删除所有的二进制日志文件;PURGE MASTER LOGS只删除部分二进制日志文件。 Resetmaster; 删除所有二进制日志 Purge master logs to ‘二进制名’ 删除单个二进制日志之前的

mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| log-bin.000001 |       199 |
| log-bin.000002 |       199 |
| log-bin.000003 |       199 |
| log-bin.000004 |       199 |
| log-bin.000005 |       199 |
| log-bin.000006 |       199 |
| log-bin.000007 |       199 |
| log-bin.000008 |       199 |
| log-bin.000009 |       154 |
+----------------+-----------+
9 rows in set (0.00 sec)

mysql> purge master logs to "log-bin.000003";   //删除log-bin.000003之前的
Query OK, 0 rows affected (0.00 sec)

mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| log-bin.000003 |       199 |
| log-bin.000004 |       199 |
| log-bin.000005 |       199 |
| log-bin.000006 |       199 |
| log-bin.000007 |       199 |
| log-bin.000008 |       199 |
| log-bin.000009 |       154 |
+----------------+-----------+
7 rows in set (0.00 sec)

//删除指定日期之前的日志

mysql> purge binary logs before '2021-01-01 19:00:33';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> show binary logs;
+----------------+-----------+
| Log_name       | File_size |
+----------------+-----------+
| log-bin.000009 |       154 |
+----------------+-----------+
1 row in set (0.00 sec)

还原
如果MySQL服务器启用了二进制日志,使用二进制日志还原数据库 使用最后一次备份还原,或指定一个时间恢复数据 Mysqlbinlog [option]日志文件名filename mysql –uuser -ppass [option]里面的选项 --startdate开始的时间–stop-position结束的位置

[root@localhost mysql]# mysqlbinlog --start-date='2018-02-10 17:27:48'
/usr/local/mysql/data/mysql-bin.000012 | mysql -uroot -p123.com

暂时停止二进制日志的功能
如果MySQL的配置文件已经启动了二进制日志,MySQL会一直记录二进制日志,修改配置文件,可以停止二进制日志,但是需要重启MySQL数据库。MySQL提供了暂时停止二进制日志的功能,通过SET SQL_LOG_BIN语句可以使MySQL暂时停止二进制。

mysql> set sql_log_bin =1;
Query OK, 0 rows affected (0.00 sec)

四、事务日志(redo日志)

事务日志(InnoDB特有的日志)可以帮助提高事务的效率。使用事务日志,存储引擎在修改表的数据时只需要修改其内存拷贝,再把修改行为记录到持久在硬盘上的事务日志中,而不用每次都将修改的数据本身持久到磁盘。事务日志采用追加的方式,因此写日志的操作是磁盘上一小块区域内的顺序I/O,而不像随机I/O需要在磁盘的多个地方移动磁头,所以采用事务日志的方式相对来说要快得多。事务日志持久以后,内存中被修改的数据在后台可以慢慢的刷回到磁盘。目前大多数的存储引擎都是这样实现的。 如果数据的修改已经记录到事务日志并持久化,但数据本身还没有写回磁盘,此时系统崩溃,存储引擎在重启时能够自动恢复这部分修改的数据。具有的恢复方式则视存储引擎而定。

查看事务日志的定义:

mysql> show global variables like '%innodb_flush_log_at%';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_timeout    | 1     |
| innodb_flush_log_at_trx_commit | 1     |
+--------------------------------+-------+
2 rows in set (0.00 sec)
mysql> show global variables like 'innodb_log_file%';
+---------------------------+----------+
| Variable_name             | Value    |
+---------------------------+----------+
| innodb_log_file_size      | 50331648 |   #日志文件大小
| innodb_log_files_in_group | 2        |   # DB中设置几组事务日志,默认是2
+---------------------------+----------+ 
2 rows in set (0.00 sec)

mysql> show global variables like 'innodb_log_group%';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| innodb_log_group_home_dir | ./    |   ./ #定义innodb事务日志组的位置,位置设置默认为MySQL的datadir
+---------------------------+-------+
1 row in set (0.00 sec)

innodb_flush_log_at_trx_commit解释:

在事务提交时innodb是否同步日志从缓冲区到文件中,当这个值为1(默认值)之时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新,性能会很差造成大量的磁盘I/O但这种方式最安全;如果设为

2.每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。每次事务提交的时候将数据写入事务日志,而这里的写入仅是调用了文件系统的写入操作,而文件系统是有 缓存的,所以这个写入并不能保证数据已经写入到物理磁盘。

设置为0.日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作。

MySQL日志_mysql

注:刷写的概念
刷写其实是两个操作,刷(flush)和写(write),区分这两个概念是很重要的。在大多数的操作系统中,把Innodb的log buffer(内存)写入日志(调用系统调用write),只是简单的把数据移到操作系统缓存中,操作系统缓存同样指的是内存。并没有实际的持久化数据。所以,通常设为0和2的时候,在崩溃或断电的时候会丢失最后一秒的数据,因为这个时候数据只是存在于操作系统缓存。之所以说“通常”,可能会有丢失不只1秒的数据的情况,比如说执行flush操作的时候阻塞了。

总结:
设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能.

每个事务日志都是大小为50兆的文件(不同版本的mysql有差异): 在mysql中默认以ib_logfile0,ib_logfile1名称存在。

五、慢查询日志(slow query log)

顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query。 慢查询日志采用的是简单的文本格式,可以通过各种文本编辑器查看其中的内容。其中 记录了语句执行的时刻,执行所消耗的时间,执行用户,连接主机等相关信息。

慢查询日志的作用: 慢查询日志是用来记录执行时间超过指定时间的查
询语句。通过慢查询日志,可以查找出哪些查询语句的执行效率很低,以便进行优化。一般建议开启,它对服务器性能的影响微乎其微,但是可以记录mysql服务器上执行了很长时间的查询语句。可以帮助我们定位性能问题的。MySQL 还提供了专门用来分析满查询日志的工具程序mysqldumpslow,用来帮助数据库管理人员解决可能存在的性能问题。

//查看慢查询日志的定义:

mysql> show global variables like '%slow_query_log%';
+---------------------+-----------------------------------------+
| Variable_name       | Value                                   |
+---------------------+-----------------------------------------+
| slow_query_log      | OFF                                     |
| slow_query_log_file | /usr/local/mysql/data/mysqld01-slow.log |
+---------------------+-----------------------------------------+
2 rows in set (0.00 sec)

mysql> show variables like '%long%';
+----------------------------------------------------------+-----------+
| Variable_name                                            | Value     |
+----------------------------------------------------------+-----------+
| long_query_time                                          | 10.000000 |
| performance_schema_events_stages_history_long_size       | 10000     |
| performance_schema_events_statements_history_long_size   | 10000     |
| performance_schema_events_transactions_history_long_size | 10000     |
| performance_schema_events_waits_history_long_size        | 10000     |
+----------------------------------------------------------+-----------+
5 rows in set (0.00 sec)

//启动和设置慢查询日志
方法1:通过配置文件my.cnf开启慢查询日志

在不同的mysql版本中,开启慢查询日志参数不太一样,不过都可以通过 show variables like “%slow%” 和show variables like "%long%"查看出来。

mysql> show global variables like '%slow%';
+---------------------------+-----------------------------------------+
| Variable_name             | Value                                   |
+---------------------------+-----------------------------------------+
| log_slow_admin_statements | OFF                                     |
| log_slow_slave_statements | OFF                                     |
| slow_launch_time          | 2                                       |
| slow_query_log            | ON                                      |
| slow_query_log_file       | /usr/local/mysql/data/mysqld01-slow.log |
+---------------------------+-----------------------------------------+
5 rows in set (0.01 sec)

其中:
slow_query_log: off关闭状态 on开启状态
slow_query_log_file : 慢查询日志存放地点
long_query_time: 选项来设置一个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中, 设置为0的话表示记录所有的查询。
slow_launch_time 表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加 。

注:如果不指定存储路径,慢查询日志默认存储到mysql数据库的数据文件下,如果不指定文件名,默认文件名为hostname-slow.log 修改my.cnf
文件:

[root@mysqld01 data]# cat /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
pid-file = /usr/local/mysql/data/mysql.pid

slow_query_log = 1
slow_query_log_file=/usr/local/mysql/data/mysql-slow.log
long_query_time=1
slow_launch_time=1

[root@mysqld01 data]# systemctl restart mysqld

重启mysqld服务 再次查询慢查询日志定义

方法2:通过登录mysql服务器直接定义

mysql> set global slow_query_log =1; #开启慢查询日志
Query OK, 0 rows affected (0.00 sec)

mysql> set session long_query_time=0.0001; #更改时间(当前session中,退出则重置)
Query OK, 0 rows affected (0.00 sec)

mysql> set global long_query_time=0.0001;   #更改时间(全局中,重启服务则重置)
Query OK, 0 rows affected (0.00 sec)

mysql> show global variables like '%slow%';
+---------------------------+--------------------------------------+
| Variable_name             | Value                                |
+---------------------------+--------------------------------------+
| log_slow_admin_statements | OFF                                  |
| log_slow_slave_statements | OFF                                  |
| slow_launch_time          | 1                                    |
| slow_query_log            | ON                                   |
| slow_query_log_file       | /usr/local/mysql/data/mysql-slow.log |
+---------------------------+--------------------------------------+
5 rows in set (0.00 sec)

//查看慢查询日志

mysql>  select user,host from user where user="root";
[root@mysqld01 data]# pwd
/usr/local/mysql/data
[root@mysqld01 data]# cat mysql-slow.log 
.....
# Time: 2021-01-05T10:24:48.278026Z
# User@Host: root[root] @ localhost []  Id:     2
# Query_time: 0.000206  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1609842288;
;
# Time: 2021-01-05T10:24:48.278304Z
# User@Host: root[root] @ localhost []  Id:     2
# Query_time: 0.000047  Lock_time: 0.000000 Rows_sent: 0  Rows_examined: 0
SET timestamp=1609842288;
......
第一行表示记录日志时的时间。其格式是 YYYY-MM-DD HH:MM:SS。
 注意:这个是服务器时间.
 MySql 用户、服务器以及主机名第三行表示总的查询时间、锁定时间、"发送"或者返回的行数
 Query_time: 0.000304 表示用了0.000304秒
 Lock_time: 0.000128 表示锁了0.000128秒
 Rows_sent: 4 表示返回4行
 Rows_examined: 4 表示一共查了4行
 SET timestamp=UNIXTIME; 这是查询实际发生的时间 何将其变成一个有用的时间,将 Unix 时间转成一个可读的时间,可以使用 date –d@日志中的时间戳以看到查询进行的同时记录了该日志 ,但是对于一台超负载的服务器常常并非如此。因此记住:SET timestamp= value 才是实际的查询的执行时间。
[root@mysqld01 ~]# date -d '@1609842372'
Tue Jan  5 18:26:12 CST 2021

//慢查询分析mysqldumpslow

可以通过打开log文件查看得知哪些SQL执行效率低下。从日志中,可以发现查询时间超过long_query_time时间的query为慢查询,而小于long_query_time时间的没有出现在此日志中。 如果慢查询日志中记录内容很多,可以使用mysqldumpslow工具(MySQL客户端安装自带)来对慢查询日志进行分类汇总。mysqldumpslow对日志文件进行了分类汇总,显示汇总后摘要结果 进入log的存放目录,运行。

[root@mysqld01 data]# mysqldumpslow mysql-slow.log
注: mysqldumpslow -s c -t 10 /database/mysql/slow-query.log 这会输出记录次数最多的10条SQL语句,其中: -s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒序; -t, 是top n的意思,即为返回前面多少条的数据; -g, 后边可以写一个正则匹配模式,大小写不敏感的; 例如: /path/mysqldumpslow -s r -t 10
 /database/mysql/slow-log 得到返回记录集最多的10个查询。
 /path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log 得到按照时间排序的前10条里面含有左连接的查询语句。


标签:slow,log,MySQL,查询,mysql,日志
From: https://blog.51cto.com/u_14304225/6401639

相关文章

  • 使用 mysql-replication python监听mysql binlog 实时同步数据
    使用mysql-replicationpython监听mysqlbinlog实时同步数据文章目录使用mysql-replicationpython监听mysqlbinlog实时同步数据前言一、环境二、安装与配置1.首先安装mysql-replication2.参数3.配置数据库4.读取binlog日志总结前言数据库的基础信息需要频繁访问,需要存入red......
  • Mysql / MariaDB 操作 《 json 》 字段
    Mysql/MariaDB操作《json》字段Mysql/MariaDB操作《json》字段提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录Mysql/MariaDB操作《json》字段前言环境一、数据库结构二、使用方法1.查找json_value字段中a字段等于1三、常用方法总......
  • MySQL 数据库巡检,DBA应该怎么做?
    一套正常运行的系统是一个复杂的系统工程,牵涉到主机、操作系统、网络、数据库、中间件、底层存储,还有系统的核心:应用。任何层面的故障都可能造成系统的不可用。今天聊一聊数据库层面的巡检问题。数据库巡检的目的:保障数据库的正常运行,保证数据的安全性,完整性、可靠性。这篇文章......
  • CentOS 下 MySQL 服务搭建
    1.卸载旧MySQL查看rpm包rpm-qa|grepmysql如果存在,使用如下命令卸载rpm-e查找是否存在mysql相关目录find/-namemysql卸载系统自带mariadb[root@localhost~]#rpm-qa|grepmariadbmariadb-libs-5.5.68-1.el7.x86_64mariadb-libs-5.5.64-1.el7.x86_64[root@localh......
  • 工作记录:Skywalking 对Java服务进行日志分析指标收集
    版本号:8.9.0目标:通过日志分析生成日志对应级别指标,skywalking页面展示指标采集情况,并配置指标规则告警到钉钉分析前提:skywalking已收集到对应服务的日志,日志列表可查询到服务日志1.日志分析指标配置Application配置修改config/application.yamllog-analyzer:selector:$......
  • 存储引擎的概念及作用,玩转MySQL
    前言从今天开始,就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。全文大约【1567】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带......
  • Mysql:优化数据库结构
    冷热拆分表本同一张表的数据,有些字段用得多,有些用些用得少。在数据量大的情况下,可以将热数据单独一张,冷数据单独一张。典型的是用户基础信息表和用户详细信息表增加冗余字段学生表关联课程表,需要展示课程的简介和名称。可以考虑把这两个字段冗余到学生表里增加非空约束在业务......
  • MySQL之视图,索引,存储过程,触发器--实操
    一.视图什么是视图?视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含系列带有名称的列和行数据。行和列数据来自定义视图的查询所引用的表,并且在引用视图时动态生成。简单的来说视图是由select结果组成的表。视图的出现其实优化了MySQL对用户权限的管理,我们在以......
  • Mysql训练营笔记
    Mysql架构与内部模块演示环境:MySQL5.7存储引擎:InnoDB一、一条查询SQL是如何执行的?  程序或者工具要操作数据库,第一步跟数据库建立连接。1、通信协议首先,MySQL必须要运行一个服务,监听默认的端口(3306)。通信协议MySQL支持多种通信协议。第一个就是TCP/IP协议,编......
  • 日志脱敏之后,无法根据信息快速定位怎么办?
    日志脱敏之殇小明同学在一家金融公司上班,为了满足安全监管要求,最近天天忙着做日志脱敏。无意间看到了一篇文章金融用户敏感数据如何优雅地实现脱敏?感觉写的不错,用起来也很方便。不过日志脱敏之后,新的问题就诞生了:日志脱敏之后,很多问题无法定位。比如身份证号日志中看到的是3*......