最近了解Innodb 日志,弄明白了两个问题。
首先Innodb log的功能,有两种log: undo log 和 redo log.
undo log实现事物的回滚(roll back transaction).
redo log用来实现灾难恢复(crash recovery).突然断电会导致Innodb表空间(Table space)中的数据没有被更新到磁盘上,通过重新执行redo log 能够重新执行这些操作来恢复数据。
redo log 还有一个很重要的功能是提升InnoDB的I/O性能. Innodb引擎把数据和索引都载入到内存中的缓冲池(buffer pool)中,如果每次修改数据和索引都需要更新到磁盘,必定会大大增加I/O请求,而且因为每次更新的位置都是随机的,磁头需要频繁定位导致效率低.所以Innodb每处理完一个请求(Transaction)后只添加一条日志log,另外有一个线程负责智能地读取日志文件并批量更新到磁盘上,实现最高效的磁盘写入.
Innodb log文件的尺寸多大合适,首先通过执行以下Query能够算出每分钟写入多少数据到日志文件:
mysql> pager grep sequence
PAGER set to 'grep sequence'
mysql> show innodb status \G; select sleep(60); show innodb status \G;
Log sequence number 178 764981234
1 row in set, 1 warning (0.01 sec)
ERROR:
No query specified
1 row in set (1 min 0.00 sec)
Log sequence number 178 777500289
1 row in set, 1 warning (0.02 sec)
ERROR:
No query specified
mysql> nopager
PAGER set to stdout
mysql> SELECT (777500289 - 764981234) / 1024 / 1024 AS MB_per_min;
+-------------+
| MB_per_min |
+-------------+
| 11.93910122 |
+-------------+
1 row in set (0.00 sec)
计算的结果是大概12M每分钟,根据Baron Schwartz的建议,Innodb日志文件能够保存一小时的数据就足够了,所以日志文件设置为720M就可以了.
英文原文:
http://www.mysqlperformanceblog.com/2008/11/21/how-to-calculate-a-good-innodb-log-file-size/
另外对于有很频繁增删改操作的数据库,通过将innodb_flush_log_at_trx_commit = 2能够大幅提高I/O性能.
分享到:
相关推荐
1.2.1.InnoDB内存结构——log buffer.md 1.2.2.InnoDB内存结构——change buffer.md 1.2.3.InnoDB内存结构——额外内存池.md 1.3.0.InnoDB磁盘结构——逻辑存储结构.md 1.3.1.InnoDB磁盘结构——表.md 1.3.2.InnoDB...
2> log-bin=mysql-bin数据库二进制日志 3> server-id = 1用于设置数据库的主从说明,主的是1,不允许id有重复号 4> innodb_data_home_dir = /usr/local/mysql/var/存放innodb表引擎表空间的地方 5> innodb_data_file...
mysql 存储引擎 innodb 日志结构 非常好用,欢迎大家下载!
Mysql可以正常启动,但innodb的表无法使用 在错误日志里你会看到如下输出: InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 现在需要做的事情就是把原来的 innodb 的ib_logfile×...
概述 日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。...5.Innodb的在线 redo 日志(innodb redo log) 6.更新日
从mysql.slow_log 获取慢查询日志很慢,该表是csv表,没有索引。 想添加索引来加速访问,而csv引擎不能添加索引(csv引擎存储是以逗号分割的文本来存储的),只能改存储引擎来添加索引了 mysql.slow_log表能改成...
InnoDB维护了一个redo log,又称为transaction log,事务日志,它包含了innodb数据的所有改动情况。当InnoDB启动的时候,它会先去检查data file和transaction log,并且会做二步操作: xtraBackup在备份的时候...
│ │ 6_MySQL全量恢复和日志增量恢复.mp4 │ │ 7_xtrabackup全量和增量备份恢复.mp4 │ │ 作业及答案.docx │ │ │ └─MySQL DBA堂命令-mha和备份恢复 │ mysql-master_05-18_10-03-09.log │ mysql-master_05...
前言 如果有人问你“数据库事务有哪些特性”?你可能会很快回答出原子性、一致性、...重做日志 redo log 分为两部分:一部分是内存中的重做日志缓冲(redo log buffer),是易丢失的;二部分是重做日志文件(redo lo
ibdata1 ib_logfile0 ib_logfile1,前者18m,后两个各5m,原来是迁移的时候从mysql5.0迁移到了5.5,而5.5关闭innodb启动不起来,于是我就开启了innodb,由于innodb会默认增加这几个数据文件和日志文件,导致变大。...
处理一下出现的日志 Plugin 'FEDERATED' is disabled. 2017-11-15 19:23:46 16c0 InnoDB: Warning: Using innodb_additional_mem_pool_size is DEPRECATED. This option may be removed in future releases, ...
近日更换服务器,要做数据库迁移,将数据库内的数据从服务器A迁移到服务器B。...结果启动失败,报出 “无法启动MySQL服务”异常,查看错误日志,发现问题描述如下:InnoDB: Error: log file ./ib_logfile
1,查看Mysqld(/var/log/mysqld.log)日志,发现以下错误:InnoDB: Error: log file /usr/local/mysql/data/ib_logfile0 is of different size 05242880 bytesInnoDB: than specified in the .cnf file 0 104857600...
理解MySQL中行锁相关的知识点,包括间隙锁是怎么回事 掌握InnoDB的内存结构和一些物理文件 理解RedoLog与UndoLog的关系 理解UndoLog的作用 掌握数据和回滚日志的逻辑存储结构 掌握原子性、一致性和持久性的实现机制 ...
# 0:如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作(执行是由mysql的master thread线程来执行的。 # 主线程中每秒会将重做日志缓冲写入磁盘的...
2016-03-03T00:02:30.483100Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files. 终端不断地重复打印上面的错误日志,从错误日志看起来似乎有...
查询日志(query log):可选地记录所有发送到MySQL服务器的SQL查询,用于调试和审计。 慢查询日志(slow query log):记录执行时间超过指定阈值的查询,帮助识别和优化性能瓶颈。 应用场景 MySQL广泛应用于...
查看mysql错误日志如下: 160920 22:41:41 mysqld_safe Starting mysqld daemon with databases from /home/MysqlData/ 2016-09-20 22:41:41 0 [Note] /Data/app/mysql5.6.25/bin/mysqld (mysqld 5.6.25-log) ...
25.MySQL 中的重要日志分为哪几个? 26.redo log 和 binlog 有什么区别? 27.慢查询日志的获取方式有哪些? 28.如何定位慢查询? 29.MySQL 中常见的读写分离方案有哪些? 30.怎样保证主备数据库无延迟? 31.什么...
5.11. MySQL日志文件 5.11.1. 错误日志 5.11.2. 通用查询日志 5.11.3. 二进制日志 5.11.4. 慢速查询日志 5.11.5. 日志文件维护 5.12. 在同一台机器上运行多个MySQL服务器 5.12.1. 在Windows下运行多个服务器 5.12.2....