精华内容
下载资源
问答
  • mysql日志

    千次阅读 2012-09-06 21:30:29
    (一)查看mysql是否启动日志 show variables like 'log_%'; 若显示"on"表示启动。 手动启动mysql的方法 【 】 (二)mysql中的日志文件 log-error (错误日志) 记录启动、运行或停止mysqld时出现的...

    (一)查看mysql是否启动日志

    show variables like 'log_%';

    若显示"on"表示启动。

    手动启动mysql的方法

    【  】


    (二)mysql中的日志文件

    • log-error (错误日志) 记录启动、运行或停止mysqld时出现的问题。
    • log_queries (查询日志)  记录建立的客户端连接和执行的语句。
    • log_slave_updates (更新日志)  记录更改数据的语句。不赞成使用该日志。
    • log-bin (二进制日志)  记录所有更改数据的语句。还用于复制。
    • log_slow_queries  (慢日志)  记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。

    查看当前的日志
    show master status;

    查看以二进制格式存储的日志
    show master logs;



    展开全文
  • MySQL日志

    千次阅读 2011-01-02 20:02:00
    Mysql 一共记录 4 种日志 1. The Error Log 2. The General Query Log 3. The Binary Log 4. The Slow Query Log 从MySQL5.1.6开始,General Query Log和Slow Query Log开始可以写到...

    Mysql 一共记录 4 种日志
    1. The Error Log
    2. The General Query Log
    3. The Binary Log
    4. The Slow Query Log
    从MySQL5.1.6开始,General Query Log和Slow Query Log开始可以写到文件或者数据库表中,并且日志的开关,保存方式的修改,都是Global级别动态修改。
    也就是说不需要重启服务器动态生效了。
    日志保存到数据库表
    root@mysql-server>SET GLOBAL log_output=TABLE;
    日志保存到文件
    root@mysql-server>SET GLOBAL log_output=FILE;
    root@mysql-server>SET GLOBAL general_log_file=’/tmp/general.log’;
    root@mysql-server>SET GLOBAL general_log=on;
    root@mysql-server>SET GLOBAL slow_query_log_file=’/tmp/slow.log’;
    root@mysql-server>SET GLOBAL slow_query_log=on;
    保存到数据表则是在mysql.general_log和mysql.slow_log 默认ENGINE为CSV
    SET @old_log_state = @@global.general_log;
    SET GLOBAL general_log = ‘OFF’;
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    可以动态修改日志保存表引擎。
    具体的一些配置用法可以参考Mysql Doc就不再累赘。(http://dev.mysql.com/doc/refman/5.1/en/log-tables.html)

    利用这个功能,脑子里就有了个数据库服务器定时监控系统的雏形。大概的功能是可以在指定的时间段内(而非实时)开启被监控数据库服务器的日志功能,获取并保存日志,出报表给DBA分析,起到抽样日志分析的作用,这样的好处是只需监控数据库的高压时间就可以找到系统的短板。

    最近在Mysql圈子里看到挺多人研究XtraBackup(开源MySQL在线热备份工具 https://launchpad.net/percona-xtrabackup)顺便在这里也啰嗦下,有兴趣的自己研究吧。XtraBackup 下载地址: http://www.percona.com/mysql/xtrabackup/0.7/

    来源:http://blog.seateng.cn/archives/2009/06/mysql-server-log.html

    展开全文
  • MySQL日志系统:redo log、binlog、undo log 区别与作用

    万次阅读 多人点赞 2019-03-13 10:21:01
    redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。 图来自极客时间的mysql实践,该图是描述的是MySQL的逻辑...

    日志系统主要有redo log(重做日志)和binlog(归档日志)。redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志(不是所有)自然有些重复(但两者记录的格式不同)。

    图来自极客时间的mysql实践,该图是描述的是MySQL的逻辑架构。

    redo log日志模块

    redo log是InnoDB存储引擎层的日志,又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和介质失败(media failure)时,redo log文件就能派上用场,如数据库掉电,InnoDB存储引擎会使用redo log恢复到掉电前的时刻,以此来保证数据的完整性。

    在一条更新语句进行执行的时候,InnoDB引擎会把更新记录写到redo log日志中,然后更新内存,此时算是语句执行完了,然后在空闲的时候或者是按照设定的更新策略将redo log中的内容更新到磁盘中,这里涉及到WALWrite Ahead logging技术,他的关键点是先写日志,再写磁盘。

    有了redo log日志,那么在数据库进行异常重启的时候,可以根据redo log日志进行恢复,也就达到了crash-safe

    redo log日志的大小是固定的,即记录满了以后就从头循环写。

    图片来自极客时间,该图展示了一组4个文件的redo log日志,checkpoint之前表示擦除完了的,即可以进行写的,擦除之前会更新到磁盘中,write pos是指写的位置,当write pos和checkpoint相遇的时候表明redo log已经满了,这个时候数据库停止进行数据库更新语句的执行,转而进行redo log日志同步到磁盘中。

    binlog日志模块

    binlog是属于MySQL Server层面的,又称为归档日志,属于逻辑日志,是以二进制的形式记录的是这个语句的原始逻辑,依靠binlog是没有crash-safe能力的

    redo log和binlog区别

    • redo log是属于innoDB层面,binlog属于MySQL Server层面的,这样在数据库用别的存储引擎时可以达到一致性的要求。
    • redo log是物理日志,记录该数据页更新的内容;binlog是逻辑日志,记录的是这个更新语句的原始逻辑
    • redo log是循环写,日志空间大小固定;binlog是追加写,是指一份写到一定大小的时候会更换下一个文件,不会覆盖。
    • binlog可以作为恢复数据使用,主从复制搭建,redo log作为异常宕机或者介质故障后的数据恢复使用。

    一条更新语句执行的顺序

    update T set c=c+1 where ID=2;

    • 执行器先找引擎取 ID=2 这一行。ID 是主键,引擎直接用树搜索找到这一行。如果 ID=2 这一行所在的数据页本来就在内存中,就直接返回给执行器;否则,需要先从磁盘读入内存,然后再返回。
    • 执行器拿到引擎给的行数据,把这个值加上 1,比如原来是 N,现在就是 N+1,得到新的一行数据,再调用引擎接口写入这行新数据。
    • 引擎将这行新数据更新到内存中,同时将这个更新操作记录到 redo log 里面,此时 redo log 处于 prepare 状态。然后告知执行器执行完成了,随时可以提交事务。
    • 执行器生成这个操作的 binlog,并把 binlog 写入磁盘。
    • 执行器调用引擎的提交事务接口,引擎把刚刚写入的 redo log 改成提交(commit)状态,更新完成。

    这个update语句的执行流程图,图中浅色框表示是在 InnoDB 内部执行的,深色框表示是在执行器中执行的。

    https://www.linuxidc.com/Linux/2018-11/155431.htm

     

    更多企业内的技术应用和使用技巧,请移步至我的公众号【程序员实用技能】

    图片

    ----------------------------------------------------

    innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作。

    undo log不是redo log的逆向过程,其实它们都算是用来恢复的日志:
    1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到最后一次提交的位置)。
    2.undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。

    https://juejin.im/entry/5ba0a254e51d450e735e4a1f

    ----------------------------------------------------

    一、重做日志(redo log)

    作用:

    确保事务的持久性。防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。

    二、回滚日志(undo log)

    作用:

    保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读

    三、二进制日志(binlog):

    作用:

    用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。 
    用于数据库的基于时间点的还原。

    https://blog.csdn.net/u012834750/article/details/79533866

    --------------------------------------------------------

    数据库数据存放的文件称为data file;日志文件称为log file;数据库数据是有缓存的,如果没有缓存,每次都写或者读物理disk,那性能就太低下了。数据库数据的缓存称为data buffer,日志(redo)缓存称为log buffer;既然数据库数据有缓存,就很难保证缓存数据(脏数据)与磁盘数据的一致性。比如某次数据库操作:

    update driver_info set driver_status = 2 where driver_id = 10001;

    更新driver_status字段的数据会存放在缓存中,等待存储引擎将driver_status刷新data_file,并返回给业务方更新成功。如果此时数据库宕机,缓存中的数据就丢失了,业务方却以为更新成功了,数据不一致,也没有持久化存储。

    上面的问题就可以通过事务的ACID特性来保证。

    BEGIN trans;

    update driver_info set driver_status = 2 where driver_id = 10001;

    COMMIT;

    这样执行后,更新要么成功,要么失败。业务方的返回和数据库data file中的数据保持一致。要保证这样的特性这就不得不说存储引擎innodb的redo和undo日志。

    redo日志、undo日志:

    存储引擎也会为redo undo日志开辟内存缓存空间,log buffer。磁盘上的日志文件称为log file,是顺序追加的,性能非常高,注:磁盘的顺序写性能比内存的写性能差不了多少。

    undo日志用于记录事务开始前的状态,用于事务失败时的回滚操作;redo日志记录事务执行后的状态,用来恢复未写入data file的已成功事务更新的数据。例如某一事务的事务序号为T1,其对数据X进行修改,设X的原值是5,修改后的值为15,那么Undo日志为<T1, X, 5>,Redo日志为<T1, X, 15>。

    梳理下事务执行的各个阶段:

    (1)写undo日志到log buffer;

    (2)执行事务,并写redo日志到log buffer;

    (3)如果innodb_flush_log_at_trx_commit=1,则将redo日志写到log file,并刷新落盘。

    (4)提交事务。

    可能有同学会问,为什么没有写data file,事务就提交了?

    在数据库的世界里,数据从来都不重要,日志才是最重要的,有了日志就有了一切。

    因为data buffer中的数据会在合适的时间 由存储引擎写入到data file,如果在写入之前,数据库宕机了,根据落盘的redo日志,完全可以将事务更改的数据恢复。好了,看出日志的重要性了吧。先持久化日志的策略叫做Write Ahead Log,即预写日志。

    分析几种异常情况:

    • innodb_flush_log_at_trx_commit=2(innodb_flush_log_at_trx_commit和sync_binlog参数详解)时,将redo日志写入logfile后,为提升事务执行的性能,存储引擎并没有调用文件系统的sync操作,将日志落盘。如果此时宕机了,那么未落盘redo日志事务的数据是无法保证一致性的。
    • undo日志同样存在未落盘的情况,可能出现无法回滚的情况。

    checkpoint:

    checkpoint是为了定期将db buffer的内容刷新到data file。当遇到内存不足、db buffer已满等情况时,需要将db buffer中的内容/部分内容(特别是脏数据)转储到data file中。在转储时,会记录checkpoint发生的”时刻“。在故障回复时候,只需要redo/undo最近的一次checkpoint之后的操作。

    https://blog.csdn.net/bluejoe2000/article/details/80349499

     

    更多企业内的技术应用和使用技巧,请移步至我的公众号【程序员实用技能】

    图片

    展开全文
  • MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面就教您修改MySQL日志文件位置的方法,供您参考。 今天需要改MySQL日志文件的位置,发现在/etc/my.cnf中怎么也改不了。 ...

    http://www.jb51.net/article/32752.htm

    MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面就教您修改MySQL日志文件位置的方法,供您参考。

    今天需要改MySQL日志文件的位置,发现在/etc/my.cnf中怎么也改不了。

    后来发现MySQL日志位是指定的:

    [root@localhost etc]# ps aux|grep mysqld
    root 11830 0.5 0.0 4524 1204 pts/0 S 03:03 0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/data/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid
    mysql 11890 3.7 0.1 40456 9076 pts/0 Sl 03:03 0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/data/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
    root 11909 0.0 0.0 3908 664 pts/0 S+ 03:03 0:00 grep mysqld

    chkconfig --list发现是chkconfig on指定的,天是

    vim /etc/init.d/mysqld得知这里的已经配置

    get_mysql_option mysqld datadir "/var/lib/mysql"
    datadir="$result"
    get_mysql_option mysqld socket "$datadir/mysql.sock"
    socketfile="$result"
    get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
    errlogfile="$result"
    get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
    mypidfile="$result"

    更改这里应该就行了

    展开全文
  • 实验环境:MySQL Community Server (GPL) 5.7.17、Ubuntu 16.04一、MySQL日志文件分类官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-logs.html常见的日志有以下几个:1、错误日志(error log); 2、...
  • 查看mysql日志

    千次阅读 2018-11-06 09:15:42
    mysql日志文件默认没有产生,需要做如下配置: sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf   把68,69行前面的#去除,然后保存并使用如下命令重启mysql服务。 sudo service mysql restart 使用如下命令...
  • 利用 mysqlbinlog 查看 mysql 日志

    千次阅读 2019-08-21 19:23:34
    这几天遇到个玄学bug,想要通过查看 mysql 日志跟踪问题,学了下如何查看mysql日志,记录一下。 本文不介绍日志内容的含义,只介绍查看日志的方法。 正文 主要用到了mysql自带的工具:mysqlbinlog mysql日志一般...
  • mysql 日志系统详解

    千次阅读 2020-02-03 14:28:21
    mysql 日志种类 1.错误日志(error log):记录mysql服务的启停时正确和错误的信息,还记录启动、停止、运行过程中的错误信息。 2.查询日志(general log):记录建立的客户端连接和执行的语句。 3.二进制日志(bin log)...
  • mysql日志详细解析

    万次阅读 2015-08-17 18:36:20
    http://www.cnblogs.com/wangkongming/p/3684950.htmlMySQL日志:主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志;日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的...
  • 如何关闭MySQL日志,删除mysql日志

    千次阅读 2014-12-30 09:46:52
    LNMP一键安装包安装的MySQL默认是开启了日志文件的, 如果数据操作比较频繁就会产生大量的日志, 在/usr/local/mysql/var/下面产生mysql-bin.0000* 类似的文件, 而且一般都在几十MB到几个GB,更甚会吃掉整个硬盘...
  • mysql日志开启

    千次阅读 2019-07-16 14:35:36
    1、查看日志是否开启: show variables like 'general_log'; -- 查看日志是否开启 2、开启日志监控: set global general_log=on; -- 开启日志功能
  • MySQL 日志管理

    千次阅读 2019-05-22 16:34:23
    文章目录MySQL所支持的日志文件操作二进制文件启动二进制文件 MySQL所支持的日志文件 每个用户都知道 , 日志文件用来记录其每天的行为 . MySQL软件所支持的日志文件 , 也用来记录该软件运行的各种信息 .例如 , 当...
  • mysql日志类型与介绍

    千次阅读 2019-05-17 19:35:12
    这里写自定义目录标题MySQL日志的分类一、错误日志二、慢查询日志三、二进制日志 MySQL日志的分类 在默认的情况下,这些日志在linux环境中是处于非激活状态。当激活日志时,所有的日志都默认配置在数据文件的目录...
  • MySQL日志表按月分区

    千次阅读 2015-08-02 11:40:50
    MySQL日志表按月自动分区
  • 【MySQL】----MySQL日志管理

    千次阅读 2017-06-12 17:38:24
    MySQL日志管理   MySQL日志类型 a 错误日志(Error Log) 日志文件名称:用--log-error[=file_name]选项来指定mysql保存错误日志文件的位置,如果没有指定file_name,mysql使用默认的错误日志名host_name.err...
  • Mysql日志抽取与解析

    万次阅读 2014-10-08 17:44:14
    Mysql日志抽取与解析正如名字所将的那样,分抽取和解析两个部分。这里Mysql日志主要是指binlog日志。二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根目录创建两个新文件XXX-bin.001和XXX-bin....
  • Syslog-ng3.5 & mysql 日志服务器

    千次阅读 2021-01-15 10:54:16
    mysql 日志服务器 最近公司要做一个日志集中收集的日志服务器,所以有了这篇攻略。 1、安装部署 CentOS本身的yum源没有syslog-ng,所以需要先安装EPEL源 wget ...
  • MySQL日志之error_log

    千次阅读 2018-05-22 10:19:52
    MySQL日志类型简介 MySQL的日志大概可以分成三种,错误日志(error_log),查询日志(query_log),二进制日志(binary_log): 查询日志(query log):一般的,查询日志可以分为两种,通用查询日志(general query log)...
  • MySQL日志文件总结

    千次阅读 2018-07-26 15:25:51
    MySQL有几个日志文件,帮助管理员了解mysqld(MySQL Server的主程序)内部发生的事情。   表1 MySQL日志文件及功能 日志文件 记入文件中的信息类型 错误日志 记录启动,运行或停止mysqld时出现的问题 ...
  • zabbix监控日志文件 MySQL日志为例

    千次阅读 2016-01-05 15:11:54
    这边我拿常见的MySQL日志做监控,大家看演示。 监控日志key 首先要了解key, log[ file ,,,,,] file:文件名,写绝对路径 regexp:要匹配内容的正则表达式,或者直接写你要检索的内容也可以,例如
  • [Mysql] Linux Mysql 日志专题

    万次阅读 2011-03-18 11:26:00
    Linux Mysql 日志专题 <br />1, 设置存放的目录: [root@Linux etc]# more /etc/my.cnf [mysqld] ###此处省略N个字 log-error=/var/log/mysql/mysql_error.log #错误日志 log=/var/...
  • Windows下开启mysql日志功能

    千次阅读 2014-10-15 19:56:21
    Windows下开启mysql日志功能 Mysql
  • mysql日志设置

    千次阅读 2015-07-09 10:22:18
    日志文件 socket文件 pid文件 mysql表结构文件 存储引擎文件 参数文件my.cnfMysql实例启动时,会先读取配置参数文件my.cnf 寻找my.cnf位置 1. 默认情况: mysql --help|grep my.cnf 2. 后台进程去找:ps –eaf|...
  • 安全应急响应工作中,一项重要任务就是要对mysql数据库的日志进行分析。工作中,我们通过对mysql日志记录的审计,发现攻击行为,进而追溯攻击源。
  • mysql日志清理

    千次阅读 2016-04-25 10:21:00
    1.mysql大量日志的位置  root@iZ28ro0swurZ:/var/log/mysql# 2.查看日志的大小  ls -lh 3.查看当前系统的大小和使用情况  df -h 4.删除mysql日志文件mysql.log  rm -rf mysql.log 5.重启...
  • 通过分析mysql日志检测sql注入

    千次阅读 2015-05-14 15:24:26
    通过分析mysql日志来检测sql注入
  • Mysql 关闭general日志、binlog日志设置失效并自动删除 Mysql数据库由于业务原因,数据量增长迅速,general日志、binlog日志也增加较多,占用大部分磁盘空间。 此链接: ...
  • mysql 日志时间 与系统时间 不一致

    千次阅读 2019-08-08 16:25:43
    问题:发现mysql 日志时间与系统时间不一致,相差8个小时 解决:mysql有一个全局变量log_timestamps默认为UTC。 可以通过set global log_timestamps=SYSTEM;临时设置为与系统一致,当系统重启后,配置就失效 可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 432,894
精华内容 173,157
关键字:

mysql日志

mysql 订阅