摘要:概述里面有很多,比如用于主从同步的,防止数据丢失的,慢查询日志等等有简称。这样的技术推迟了页面的刷新,从而提升了数据库的吞吐,有效的降低了访问时延。带来的问题是额外的写操作的开销顺序,当然很快,以及数据库启动时恢复操作所需的时间。
概述
mysql里面有很多log,比如用于主从同步的bin_log,防止数据丢失的redo_log,慢查询日志slow_log等等
redo logInnoDB有buffer pool(简称bp)。Undo Log
bp是数据库页面的缓存,对InnoDB的任何修改操作都会首先在bp的page上进行,然后这样的页面将被标记为dirty并被放到专门的flush list上,后续将由master thread或专门的刷脏线程阶段性的将这些页面写入磁盘(disk or ssd)。这样的好处是避免每次写操作都操作磁盘导致大量的随机IO,阶段性的刷脏可以将多次对页面的修改merge成一次IO操作,同时异步写入也降低了访问的时延。然而,如果在dirty page还未刷入磁盘时,server非正常关闭,这些修改操作将会丢失,如果写入操作正在进行,甚至会由于损坏数据文件导致数据库不可用。为了避免上述问题的发生,Innodb将所有对页面的修改操作写入一个专门的文件,并在数据库启动时从此文件进行恢复操作,这个文件就是redo log file。 这样的技术推迟了bp页面的刷新,从而提升了数据库的吞吐,有效的降低了访问时延。 带来的问题是额外的写redo log操作的开销(顺序IO,当然很快),以及数据库启动时恢复操作所需的时间。
Undobin-log
Log是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用UndoLog来实现多版本并发控制(简称:MVCC)。
事务的原子性(Atomicity)
事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过。
binlog有三种格式:Statement、Row以及Mixed。Statement
基于SQL语句的复制(statement-based replication,SBR),
每一条会修改数据的sql语句会记录到binlog中。优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)
基于行的复制(row-based replication,RBR),默认
不记录每条sql语句的上下文信息,仅需记录哪条数据被修改了,修改成什么样了。而且不会出现某些特定情况下的存储过程、或function、或trigger的调用和触发无法被正确复制的问题。缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
混合模式复制(mixed-based replication,MBR)。
以上两种模式的混合使用,一般的复制使用STATEMENT模式保存binlog,对于STATEMENT模式无法复制的操作使用ROW模式保存binlog,MySQL会根据执行的SQL语句选择日志保存方式。
查看binlog_format
show variables like "binlog_format"
Mysql 主节点将binlog写入本地,从节点定时请求增量binlog,主节点将binlog同步到从节点。 从节点多带带进程会将binlogslow-log
拷贝至本地 relaylog中。
从节点定时重放relay log。
慢查询就是通过设置来记录超过一定时间的SQL语句,一般通过slowlog找到影响系统性能的sql开启slow-log
在my.conf 中增加
slow_query_log = 1 // 开启slow-log long_query_time = 1 //分析slow-log
查询时间超过1s的sql会被记录
在slow-log目录下执行
more slow-query.log
Query_time: 查询耗时mysqldumpslow命令
Rows_examined: 检查了多少条记录
Rows_sent : 返回了多少行记录(结果集)
通过分析slow-log文件,可以找到最慢的sql
按Rows_examined 逆序,列出前100条
grep Rows_examined slow-query.log | sort -g -k9 -r|uniq -u |head -100
指定Rows_examined一值,查找
grep -A 1 -B 2 "Rows_examined: 24460" slow-query.log
看到每秒的慢查询统计
awk "/^#Time:/{print $3,$4,c;c=0}/^# User /{c++}" slow-query.log >/tmp/aaa.log
访问时间最长的10个sql语句
mysqldumpslow -t 10 /usr/local/mysql/log/3304/slowquery.log
访问次数最多的10个sql语句
mysqldumpslow -s c -t 10 /usr/local/mysql/log/3304/slowquery.log
访问记录集最多的10个sql
mysqldumpslow -s r -t 10 /usr/local/mysql/log/3304/slowquery.log
得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s t -t 10 -g “left join” /usr/local/mysql/log/3304/slowquery.log
详见mysqldumpslow -h
general_loggeneral_log可以记录所有执行过的sql,用于排查分析sql性能,但记录log会增加系统负担,可以暂时开启,分析完之后再关闭general_log开启general_log 查看general_log
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/49349.html
摘要:离线还原数据完成采集后,下一步就是利用来还原业务数据。整个任务的管理,在美团数据平台的框架下进行,包括任务原语的表达和调度机制等,都同其他类似。对做的第二个改造,由美团的框架所决定。 背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据。在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据(DB...
摘要:在上发布了一遍然后又在这里发布一遍哈哈以下是地址最近闲来无事,遂下载了,尝试搭建下,之前有试过搭建宝塔,等,但最后结果都不怎么好,这次再次尝试搭建下的开发环境,借鉴了很多网友的文章,历经千辛,搭建成功,遂将过程总结总结,分享出来。 在csdn上发布了一遍,然后又在这里发布一遍,哈哈,以下是csdn地址: https://blog.csdn.net/sinat_3... 最近...
摘要:在上发布了一遍然后又在这里发布一遍哈哈以下是地址最近闲来无事,遂下载了,尝试搭建下,之前有试过搭建宝塔,等,但最后结果都不怎么好,这次再次尝试搭建下的开发环境,借鉴了很多网友的文章,历经千辛,搭建成功,遂将过程总结总结,分享出来。 在csdn上发布了一遍,然后又在这里发布一遍,哈哈,以下是csdn地址: https://blog.csdn.net/sinat_3... 最近...
摘要:在上发布了一遍然后又在这里发布一遍哈哈以下是地址最近闲来无事,遂下载了,尝试搭建下,之前有试过搭建宝塔,等,但最后结果都不怎么好,这次再次尝试搭建下的开发环境,借鉴了很多网友的文章,历经千辛,搭建成功,遂将过程总结总结,分享出来。 在csdn上发布了一遍,然后又在这里发布一遍,哈哈,以下是csdn地址: https://blog.csdn.net/sinat_3... 最近...
摘要:在上发布了一遍然后又在这里发布一遍哈哈以下是地址最近闲来无事,遂下载了,尝试搭建下,之前有试过搭建宝塔,等,但最后结果都不怎么好,这次再次尝试搭建下的开发环境,借鉴了很多网友的文章,历经千辛,搭建成功,遂将过程总结总结,分享出来。 在csdn上发布了一遍,然后又在这里发布一遍,哈哈,以下是csdn地址: https://blog.csdn.net/sinat_3... 最近...
阅读 1755·2021-11-23 09:51
阅读 2278·2021-10-13 09:40
阅读 3132·2019-08-30 13:46
阅读 1004·2019-08-29 14:05
阅读 2807·2019-08-29 12:48
阅读 3518·2019-08-26 13:28
阅读 1989·2019-08-26 11:34
阅读 2138·2019-08-23 18:11