普通网站服务器微信公众号开发是否需要建立网站
news/
2025/9/22 20:52:13/
文章来源:
普通网站服务器,微信公众号开发是否需要建立网站,外贸网站建设销售常用语,html怎么做网站后台这片博文我们会详细说明MySQL本身的日志#xff0c;不包含重做日志和undo日志#xff08;这两个日志是innodb存储引擎的日志#xff09;。 MySQL本身的日志有以下几种#xff08;MySQL5.7版本#xff09;#xff1a; 错误日志慢查询日志通用日志二进制日志错误日志 默认情… 这片博文我们会详细说明MySQL本身的日志不包含重做日志和undo日志这两个日志是innodb存储引擎的日志。 MySQL本身的日志有以下几种MySQL5.7版本 错误日志慢查询日志通用日志二进制日志错误日志 默认情况下错误日志是无法被禁止错误日志的位置及日志名使用log_error参数指定若是没有指定则默认错误日志名为hostname.err(错误日志是以.err为后缀的)。yum安装的MySQL错误日志默认路径是在/var/log/mysqld.log下的 在MySQL的官方文档中还介绍了可以把MySQL的错误日志写入到系统日志中但是如果这样的话查看会不太方便不再细说给出官方链接 https://dev.mysql.com/doc/refman/5.7/en/error-log-syslog.html log_error_verbosity系统变量控制服务器记录错误日志的详细性以便将错误警告和注释信息写入错误日志。其有三个取值1仅限错误2:错误和警告3错误警告和注释默认数值是3。如果该值大于2则服务器将记录中止的连接以及新连接尝试的拒绝访问错误。 log_timestamps:系统变量控制写入错误日志以及常规查询日志和慢速查询日志文件的消息中时间戳的时区。允许的值为UTC默认值和系统本地系统时区。 刷新错误日志和重命名 如果使用flush error logs、flush logs或mysqladmin flush-logs刷新日志服务器将关闭并重新打开它正在写入的任何错误日志文件。要重命名错误日志文件请在刷新之前手动执行此操作。刷新日志然后打开一个具有原始文件名的新文件。 [rootmgt01 mysql]# ll -h mgt01.err #当前错误日志
-rw-r----- 1 mysql mysql 2.1M Jan 5 15:05 mgt01.err
[rootmgt01 mysql]# mv mgt01.err mgt01.bak #更改当前错误日志的名字
[rootmgt01 mysql]# mysqladmin flush-logs #执行刷新日志操作就会重新打开一个以原错误日志名命名的新文件。
[rootmgt01 mysql]# ll -h mgt01.err mgt01.bak
-rw-r----- 1 mysql mysql 2.1M Jan 5 15:06 mgt01.bak
-rw-r----- 1 mysql mysql 489 Jan 5 15:09 mgt01.err 慢查询日志 慢查询日志由执行时间超过long_query_time指定的秒数的SQL语句组成并且要求至少检查min_examined_row_limit行。慢速查询日志可用于查找执行时间较长的查询因此是优化的候选查询。 开启慢查询日志可以把sql语句执行时间较长的语句写入慢查询日志中以便查看。 慢查询日志的参数 在MySQL默认情况下禁用慢查询日志。若开启慢查询日志可以使用slow_query_log参数把其设置为1或on。 使用slow_query_log_file指定慢查询日志的文件格式文件名文件位置。默认文件在数据库目录下面的文件名为host-name-slow.log。 long_query_time: 设置慢查询日志的时间限制默认值是10s最小值是0.该值可以指定为微妙的分辨率。MySQL5.7版本 默认情况下不记录管理语句也不记录不使用索引进行查找的语句。 要在慢查询日志中记录管理语句则启用log_slow_admin_statements系统变量。管理语句包含ALTER TABLE ANALYZE TABLE CHECK TABLE CREATE INDEX DROP INDEX OPTIMIZE TABLE和 REPAIR TABLE。 要在慢查询日志的语句中包含不使用索引进行查询的语句则使用log_queries_not_using_indexes系统变量。即使启用了该变量服务器也不会记录由于表少于两行而不使用索引的查询开启这个参数后慢查询日志会比较快的增长因此引入了log_throttle_queries_not_using_indexes参数这个参数设定每分钟记录到日志的未使用索引的语句数目超过这个数目后只记录语句数量和花费的总时间。 log_slow_slave_statements记录从库上的慢查询语句。 log_output: 参数指定慢查询日志输出到文件或者记录在数据库的表中。 一个实例如下 slow_query_logON
long_query_time3
slow_query_log_file #不指定默认是在当前数据库目录下面以当前主机名命名的hostname-slow.log语句。
log_outputFILE
log_queries_not_using_indexes mysql select sleep(5);
----------
| sleep(5) |
----------
| 0 |
----------
1 row in set (5.00 sec)[rootmgt01 mysql]# mysqldumpslow mgt01-slow.log #查看慢查询日志Reading mysql slow query log from mgt01-slow.log
Count: 1 Time5.00s (5s) Lock0.00s (0s) Rows1.0 (1), root[root]localhostselect sleep(N) Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]Parse and summarize the MySQL slow query log. Options are--verbose verbose--debug debug--help write this text to standard output-v verbose-d debug-s ORDER what to sort by (al, at, ar, c, l, r, t), at is defaultal: average lock timear: average rows sentat: average query timec: countl: lock timer: rows sentt: query time -r reverse the sort order (largest last instead of first)-t NUM just show the top n queries-a dont abstract all numbers to N and strings to S-n NUM abstract numbers with at least n digits within names-g PATTERN grep: only consider stmts that include this string-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),default is *, i.e. match all-i NAME name of server instance (if using mysql.server startup script)-l dont subtract lock time from total time mysqldumpslow的选项 上面的实例时把慢查询日志写入了文件下面修改log_output值为table把慢查询日志写入到表中。 log_outputTABLE#然后再mysql数据库下面生成slow_log表。
mysql desc slow_log;
------------------------------------------------------------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
------------------------------------------------------------------------------------------------------
| start_time | timestamp(6) | NO | | CURRENT_TIMESTAMP(6) | on update CURRENT_TIMESTAMP(6) |
| user_host | mediumtext | NO | | NULL | |
| query_time | time(6) | NO | | NULL | |
| lock_time | time(6) | NO | | NULL | |
| rows_sent | int(11) | NO | | NULL | |
| rows_examined | int(11) | NO | | NULL | |
| db | varchar(512) | NO | | NULL | |
| last_insert_id | int(11) | NO | | NULL | |
| insert_id | int(11) | NO | | NULL | |
| server_id | int(10) unsigned | NO | | NULL | |
| sql_text | mediumblob | NO | | NULL | |
| thread_id | bigint(21) unsigned | NO | | NULL | |
------------------------------------------------------------------------------------------------------
12 rows in set (0.00 sec)mysql 在查看慢查询日志的时候除了使用自带的mysqldumpslow工具外还可以使用percona的pt-query-digest工具。 常规查询日志 The general query log is a general record of what mysqld is doing. The server writes information to this log when clients connect or disconnect,and it logs each SQL statement received from clients. The general query log can be very useful when you suspect an error in a client and want to know exactly what the client sent to mysqld.
#常规查询日志是mysqld所做工作的常规记录。当客户端连接或断开连接时服务器将信息写入此日志并记录从客户端接收的每个SQL语句。当您怀疑客户机中存在错误并想确切知道客户#机发送给mysqld的内容时常规查询日志非常有用。 常规查询日志记录的内容比较详细并且会记录执行的每条语句因此常用于审计的时候使用。开启常规查询语句对数据库的性能会有一定的影响。默认是关闭的。 general_log: 用于开启常规查询日志当为0时关闭常规查询日志。 general_log_file: 用于指定常规查询日志的文件名文件位置。默认文件名为hostname.log. log_output: 指定日志输出到文件或者表中。和上面的一样。 mysql set global general_logON; #开启常规查询日志常规查询日志可以动态修改
Query OK, 0 rows affected (0.01 sec)
mysql show variables like log_output; #设置常规查询日志输出到表中----------------------| Variable_name | Value |----------------------| log_output | TABLE |----------------------1 row in set (0.01 sec)
mysql use mysql; #会在mysql下面生成general_log表。
Database changed
mysql select * from general_log; 可以关闭当前会话的常规查询日志如下 mysql set sql_log_offON;
Query OK, 0 rows affected (0.01 sec) 二进制日志 二进制日志包含描述数据库更改如表创建操作或表数据更改的“事件”。二进制日志主要有两个功能 复制。不再说明可以查看 https://www.cnblogs.com/wxzhe/p/10051114.html基于备份文件做基于时间点恢复。https://www.cnblogs.com/wxzhe/p/10033983.html 文章的末尾有使用二进制日志进行恢复对于select语句和show语句因为不修改数据库中的数据因此不会记录到二进制日志中若是想要记录这种不修改数据的语句可以使用常规查询日志。 与二进制日志有关的参数 log-bin #MySQL默认不起用二进制日志这个参数指定二进制的位置文件名。默认是以主机名命名的强烈不推荐使用。使用主机名命名的二进制日志在迁移到别的主机时会报错。 #二进制文件名以filename.number的形式存在number的格式是从00001开始的6位数依次递增。还会生成一个filename.index文件这个文件存储所有二进制日志文件名的清单。log_bin_index #指定上面提到的二进制日志索引文件名。这个文件不需要手动编辑可以直接默认即可max_binlog_size 设置二进制的最大大小超出这个值时二进制日志会自动轮换下一个。默认是。binlog_cache_szie: 在事务没有提交的时候使用的缓冲大小基于会话的如果缓存大于这个数值则会使用临时文件。可以使用show global status来查看使用临时文件的次数。 默认是32KB。mysql show global status like binlog_cache_%;------------------------------| Variable_name | Value |------------------------------| Binlog_cache_disk_use | 0 | #使用临时文件的次数| Binlog_cache_use | 0 | #缓冲使用的次数。------------------------------2 rows in set (0.02 sec)mysqlmax_binlog_cache_size 默认为4GB也是最大值可用于限制用于缓存多语句事务的总大小。如果事务大于这个字节数它将失败并回滚。最小值为4096。binlog_error_action如果服务器无法写入二进制日志、刷新二进制日志文件或将二进制日志同步到磁盘则复制主服务器上的二进制日志可能会不一致复制从服务器可能会失去与 主服务器的同步。binlog_error_action系统变量控制在二进制日志遇到此类错误时采取的操作。 默认设置是abort_server: ABORT_SERVER使服务器暂停二进制日志记录并关闭。此时您可以识别并更正错误原因。重新启动时恢复将按意外服务器暂停的情况继续进行. ignore_error:提供与旧版本MySQL向后兼容。使用此设置服务器继续正在进行的事务并记录错误然后暂停二进制日志记录但继续执行更新。要恢复二进制日志记录必须重启服务器。binlog_format指定二进制日志的格式有三种选择 STATEMENT 基于语句把数据库执行的每条语句记录下来。 ROW 基于行的主服务器把事件写入二进制日志以指示各个表行的影响方式。线上标配一般是RCROW. mixed 混合日志记录对于混合日志记录。默认情况下使用基于语句的日志记录但在某些情况下日志记录模式会自动切换到基于行的记录。使用混合记录时 服务器会在以下条件时使用基于行的记录。https://dev.mysql.com/doc/refman/5.7/en/binary-log-mixed.htmlbinlog-row-event-max-size 在使用基于行的格式时二进制日志文件中记录的是事件这个参数表示事件的最大大小。这个value必须是256的倍数默认是8192.expire_logs_days 表示二进制的保留时间超过这个时间的二进制会被自动删除。单位是天数值类型为整型。 MySQL提供一个sync_binlog参数来控制数据库的binlog刷到磁盘上去。默认sync_binlog0表示MySQL不控制binlog的刷新由文件系统自己控制它的缓存的刷新。这时候的性能是最好的但是风险也是最大的。因为一旦系统Crash在binlog_cache中的所有binlog信息都会被丢失。如果sync_binlog0表示每sync_binlog次事务提交MySQL调用文件系统的刷新操作将缓存刷下去。最安全的就是sync_binlog1了表示每次事务提交MySQL都会把binlog刷下去是最安全但是性能损耗最大的设置。这样的话在数据库所在的主机操作系统损坏或者突然掉电的情况下系统才有可能丢失1个事务的数据。但是binlog虽然是顺序IO但是设置sync_binlog1多个事务同时提交同样很大的影响MySQL和IO性能。虽然可以通过group commit的补丁缓解但是刷新的频率过高对IO的影响也非常大。对于高并发事务的系统来说“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。所以很多MySQL DBA设置的sync_binlog并不是最安全的1而是100或者是0。这样牺牲一定的一致性可以获得更高的并发和性能。 sync_binlog参数设置 上面说明了与二进制有关的一些参数下面我们来说明二进制的一些管理以及二进制内容的格式。 首先开启二进制日志如下 log-bin/data/mysql/test-bin
binlog_formatROW 然后查看二进制日志文件 [rootmgt02 mysql]# ll test-bin.*
-rw-r----- 1 mysql mysql 154 Dec 9 21:56 test-bin.000001 #二进制日志文件
-rw-r----- 1 mysql mysql 28 Dec 9 21:56 test-bin.index #二进制日志索引文件
[rootmgt02 mysql]# cat test-bin.index #目前索引文件中只有一个当前的日志文件/data/mysql/test-bin.000001[rootmgt02 mysql]# mysqlbinlog test-bin.000001 #查看二进制日志文件可以使用mysqlbinlog命令因为这里不是介绍这个命令就不说明这个命令的具体用法/*!50530 SET SESSION.PSEUDO_SLAVE_MODE1*/;/*!50003 SET OLD_COMPLETION_TYPECOMPLETION_TYPE,COMPLETION_TYPE0*/;DELIMITER /*!*/;# at 4#181209 21:56:11 server id 15 end_log_pos 123 CRC32 0x1a2a822b Start: binlog v 4, server v 5.7.23-log created 181209 21:56:11 at startup# Warning: this binlog is either in use or was not closed properly.ROLLBACK/*!*/;BINLOG x4NXA8PAAAAdwAAAHsAAAABAAQANS43LjIzLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD7Hg1cEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQAASuCKho/*!*/;# at 123#181209 21:56:11 server id 15 end_log_pos 154 CRC32 0x44f5bfa4 Previous-GTIDs# [empty]SET SESSION.GTID_NEXT AUTOMATIC /* added by mysqlbinlog */ /*!*/;DELIMITER ;# End of log file/*!50003 SET COMPLETION_TYPEOLD_COMPLETION_TYPE*/;/*!50530 SET SESSION.PSEUDO_SLAVE_MODE0*/; 二进制日志的结构和内容 前面我们提到过二进制中存储的是事件那么这些事件该如何查看呢 mysql show binlog events; #查看当前活跃的二进制日志中的事件。
-----------------------------------------------------------------------------------------------------
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
-----------------------------------------------------------------------------------------------------
| test-bin.000001 | 4 | Format_desc | 15 | 123 | Server ver: 5.7.23-log, Binlog ver: 4 |
| test-bin.000001 | 123 | Previous_gtids | 15 | 154 | |
-----------------------------------------------------------------------------------------------------
2 rows in set (0.00 sec)#Log_name 表示的是当前查看的二进制日志的名字注意若想查看指定的二进制日志文件大小则在后面加上in binlog-filename即可#Pos: 表示当前事件在二进制日志中的位置点与后面的End_log_pos对应。#Event_type表示事件类型上面的两个分别表示格式描述事件和前面的表示的gtid号。#Server_id: 表示的是当前服务器的server_id.#info: 表示事件信息的可读文本。 前面说过二进制日志并不是一个单独的文件而是由一系列易于管理的文件组成的二进制日志包括一组存储实际内容的二进制日志文件和一个用来跟踪二进制日志文件存储位置的二进制日志索引文件。 有一个二进制日志文件是活动二进制日志文件即当前正在被写入的文件。 每个二进制日志文件都是以格式描述事件开始以日志轮换事件结束。格式描述事件包括产生该文件的服务器版本号服务器以及二进制日志信息等。日志轮换事件包含下一个二进制日志文件的名称告知二进制日志继续写入哪个文件。 每个二进制日志文件中有多个二进制日志事件各个事件之间相互独立。同时也是构成二进制日志的基本单位。格式描述符事件还有一个标记标记二进制日志文件是否正常关闭如果正在写入二进制日志文件则设置该标记如果文件关闭则清除标记。若服务器非正常关机则二进制日志不是以日志轮换事件结束。 二进制日志文件管理 在主从结构中 reset master 删除了所有二进制日志文件并清空了二进制日志索引文件。 reset slave 删除了复制用的所有文件重新开始使用之前需要先stop slave 在服务器上若想删除二进制日志可以执行如下命令 purge binary logs to binlog-filename: 删除给定文件之前的所有文件 purge binary logs before “datetime”删除给定时间之前的所有文件。 转载于:https://www.cnblogs.com/wxzhe/p/10225475.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910334.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!