- 浏览: 7960270 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
测试mysqlporformanceblog提供的减少关闭innodb时间的方法
经常发现一些MySQL镜像库的InnoDB的关闭时间会特别久,mysqlperformanceblog给出了一个不错的解决方案
How to decrease InnoDB shutdown times http://www.mysqlperformanceblog.com/2009/04/15/how-to-decrease-innodb-shutdown-times/
InnoDB关闭的过程解释
MySQL官方手册介绍 影响到InnoDB关闭的参数有
innodb_fast_shutdown
如果你把这个参数设置为0,InnoDB在关闭之前做一个完全净化和一个插入缓冲合并。这些操作要花几分钟时间,在极端情况下要几个小时。
如果你设置这个参数为1,InnoDB在关闭之时跳过这些操作。 默认值为1。
如果你设置这个值为2 (在Netware无此值), InnoDB将刷新它的日志然后冷关机,仿佛MySQL崩溃一样。已提交的事务不会被丢失,但在下一次启动之时会做一个崩溃恢复。
innodb_max_dirty_pages_pct
这是一个范围从0到100的整数。默认是90。InnoDB中的主线程试着从缓冲池写页面,使得脏页(没有被写的页面)的百分比不超过这个值。如果你有SUPER权限,这个百分比可以在服务器运行时按下面来改变:
SET GLOBAL innodb_max_dirty_pages_pct = value;
100423 0:10:18 InnoDB: Starting shutdown…
100423 0:10:20 InnoDB: Shutdown completed; log sequence number 0 4000976145
100423 0:10:20 [Note] /usr/sbin/mysqld: Shutdown complete
测试环境
1.在一个镜像库节点进行测试,innodb_buffer_pool_size=1G
2.在一个线上节点进行测试,碰巧这个节点要进行机架更换,所以可以趁机测试一把
innodb_buffer_pool_size=12G,线上环境和镜像环境还是有点不一样,没法让Innodb_buffer_pool_pages_dirty的值少于1000,虽然是大于1000,但关闭起来还是比较快速的
测试过程
正常关闭的normal-shutdown.sh
#!/bin/bash
#正常关闭innodb
log=”normal-shutdown.log”
start_time=`date`
echo “start time:”$start_time > $log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx ext | grep dirty >> $log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx shutdown
end_time=`date`
echo “end time:” $end_time >> $log
normal-shutdown.log 输出的日志如下
start time:2010年 06月 18日 星期五 17:21:00 CST
| Innodb_buffer_pool_pages_dirty | 43492 |
end time: 2010年 06月 18日 星期五 17:23:10 CST
设置set global innodb_max_dirty_pages_pct =0的关闭方式
首先执行 mysql –defaults-file=db-31-2.cnf -uxxx -pxxx -e” set global innodb_max_dirty_pages_pct =0“
经过了大概3分钟后 Innodb_buffer_pool_pages_dirty的值少于1000
然后执行faster-shutdown.sh,生成faster-shutdown.log
#!/bin/bash
log=”faster-shutdown.log”
start_time=`date`
echo “faster shutdown start time:”$start_time >$log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx ext | grep dirty >> $log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx shutdown
end_time=`date`
echo “faster shutdown end time:” $end_time >>$log
faster-shutdown.log的内容
faster shutdown start time:2010年 06月 18日 星期五 17:47:08 CST
| Innodb_buffer_pool_pages_dirty | 569 |
faster shutdown end time: 2010年 06月 18日 星期五 17:47:12 CST
关闭时间比较
正常关闭 快速关闭
Innodb_buffer_pool_pages_dirty 43492 569
关闭时间 2分10秒 4秒
结论
日常维护中,可以使用set global innodb_max_dirty_pages_pct =0,让Innodb_buffer_pool_pages_dirty 的数值为一个较小的值,这样就可以减少在关闭mysql服务器中耗费在innodb的时间
最终达到减少影响用户的时间
参考资料
经常发现一些MySQL镜像库的InnoDB的关闭时间会特别久,mysqlperformanceblog给出了一个不错的解决方案
How to decrease InnoDB shutdown times http://www.mysqlperformanceblog.com/2009/04/15/how-to-decrease-innodb-shutdown-times/
InnoDB关闭的过程解释
MySQL官方手册介绍 影响到InnoDB关闭的参数有
innodb_fast_shutdown
如果你把这个参数设置为0,InnoDB在关闭之前做一个完全净化和一个插入缓冲合并。这些操作要花几分钟时间,在极端情况下要几个小时。
如果你设置这个参数为1,InnoDB在关闭之时跳过这些操作。 默认值为1。
如果你设置这个值为2 (在Netware无此值), InnoDB将刷新它的日志然后冷关机,仿佛MySQL崩溃一样。已提交的事务不会被丢失,但在下一次启动之时会做一个崩溃恢复。
innodb_max_dirty_pages_pct
这是一个范围从0到100的整数。默认是90。InnoDB中的主线程试着从缓冲池写页面,使得脏页(没有被写的页面)的百分比不超过这个值。如果你有SUPER权限,这个百分比可以在服务器运行时按下面来改变:
SET GLOBAL innodb_max_dirty_pages_pct = value;
100423 0:10:18 InnoDB: Starting shutdown…
100423 0:10:20 InnoDB: Shutdown completed; log sequence number 0 4000976145
100423 0:10:20 [Note] /usr/sbin/mysqld: Shutdown complete
测试环境
1.在一个镜像库节点进行测试,innodb_buffer_pool_size=1G
2.在一个线上节点进行测试,碰巧这个节点要进行机架更换,所以可以趁机测试一把
innodb_buffer_pool_size=12G,线上环境和镜像环境还是有点不一样,没法让Innodb_buffer_pool_pages_dirty的值少于1000,虽然是大于1000,但关闭起来还是比较快速的
测试过程
正常关闭的normal-shutdown.sh
#!/bin/bash
#正常关闭innodb
log=”normal-shutdown.log”
start_time=`date`
echo “start time:”$start_time > $log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx ext | grep dirty >> $log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx shutdown
end_time=`date`
echo “end time:” $end_time >> $log
normal-shutdown.log 输出的日志如下
start time:2010年 06月 18日 星期五 17:21:00 CST
| Innodb_buffer_pool_pages_dirty | 43492 |
end time: 2010年 06月 18日 星期五 17:23:10 CST
设置set global innodb_max_dirty_pages_pct =0的关闭方式
首先执行 mysql –defaults-file=db-31-2.cnf -uxxx -pxxx -e” set global innodb_max_dirty_pages_pct =0“
经过了大概3分钟后 Innodb_buffer_pool_pages_dirty的值少于1000
然后执行faster-shutdown.sh,生成faster-shutdown.log
#!/bin/bash
log=”faster-shutdown.log”
start_time=`date`
echo “faster shutdown start time:”$start_time >$log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx ext | grep dirty >> $log
mysqladmin –defaults-file=db-32-1.cnf -uxxx -pxxx shutdown
end_time=`date`
echo “faster shutdown end time:” $end_time >>$log
faster-shutdown.log的内容
faster shutdown start time:2010年 06月 18日 星期五 17:47:08 CST
| Innodb_buffer_pool_pages_dirty | 569 |
faster shutdown end time: 2010年 06月 18日 星期五 17:47:12 CST
关闭时间比较
正常关闭 快速关闭
Innodb_buffer_pool_pages_dirty 43492 569
关闭时间 2分10秒 4秒
结论
日常维护中,可以使用set global innodb_max_dirty_pages_pct =0,让Innodb_buffer_pool_pages_dirty 的数值为一个较小的值,这样就可以减少在关闭mysql服务器中耗费在innodb的时间
最终达到减少影响用户的时间
参考资料
发表评论
-
mybatis generator中的字段大小写生成问题
2017-10-22 19:35 11426mybatis generator插件中,如果 mysql数据 ... -
MySQL统计一个列中不同值的数量
2017-07-11 14:04 16305https://yiqiwuliao.com/post/mys ... -
mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
2017-03-02 09:44 1818权限问题,授权 给 root 所有sql 权限 mysql ... -
几个不错的MYSQL 优化TIPS
2016-11-19 12:30 826图片来自http://imysql.com/的PDF分享 [ ... -
powerdesign 逆向ORACLE的坑
2016-09-27 17:08 582要注意的是,在WIN 64中,如果要用powerdesin 来 ... -
( 转)mysql中删除两条重复记录中的一条
2015-10-19 20:19 1345| id | createTime | labId | pub ... -
mysql中sql语句=,>的时候的索引设置
2015-05-02 12:27 1320在 https://www.percona.com/blog/ ... -
mysql中profile的使用
2015-04-30 11:11 2242mysql 的 sql 性能分析器主要用途是显示 sql 执行 ... -
mysql中的sql mode
2015-04-13 11:29 1169mysql sql mode小结 1 sql mode可以 ... -
PROCEDURE ANALYSE()为mysql提高性能提供建议
2015-04-02 16:37 1493procedure analyse();语法如下 select ... -
mongodb中意外退出的问题
2015-02-11 14:32 1348mongodb启动的时候,意外退出: Unclean shut ... -
mysql 5.5中保留字查询
2014-06-05 23:16 1502mysql 5.5中保留字查询 http://www.5is ... -
(转)oracle 临时表空间的增删改查
2014-03-18 12:44 1160oracle 临时表空间的增删改查 1、查看临时表空间 (d ... -
pl-sql developer安装
2014-02-07 09:16 1146一直都是机器本机上有oracle,所以装pl sql deve ... -
oracle中的nvl,nvl2等参数
2013-12-26 11:18 23031.nul函数将一个null值转换为一个实际的值。 数据类型可 ... -
Oracle中的ROWNUM rowid 以及MySQL中实现rownum功能类似的语句
2013-12-26 11:08 2372http://gong-10140.iteye.com/blo ... -
ORACLE XE版本的限制
2013-12-07 08:11 369310g中用户数据最大为4G, 11G中最大为11G,如果超出大 ... -
oracle中监控索引是否可用
2013-11-04 07:22 1097在oracle中,可以使用如下的方法监控索引是否可用: a ... -
mysql 5.6中的时间类型的新精度介绍
2013-10-28 09:33 8429留意到mysql 5.6中,可以使用select now(6) ... -
<<oracle索引技术》读书笔记1
2013-08-25 16:23 1339expert indexing in oracle datab ...
相关推荐
- **事务处理**:InnoDB引擎在开启事务处理的情况下(如`innodb_flush_log_at_trx_commit=1`),其插入性能远超MyISAM引擎,这是因为InnoDB引擎能够利用事务日志快速恢复数据,减少了磁盘IO操作。 - **缓冲池大小**...
如果可能,最好在测试环境中先验证这种方法,避免在生产环境中造成不可逆的数据损失。 总结起来,`innodb_force_recovery`是一个在MySQL遇到严重崩溃时的应急工具,可以帮助数据库在某些情况下恢复服务,但并不能...
然而,在某些情况下,用户可能需要禁用InnoDB引擎,例如在进行特定的性能测试、排查问题或临时避免InnoDB特有的问题。 禁用InnoDB引擎的步骤如下: 1. **确定MySQL版本**: 使用`mysql -V`命令查看MySQL的版本...
本教程将详细讲解如何在PHP环境下,利用InnoDB引擎快速搭建全文搜索功能,我们将借助开源搜索引擎Xunsearch来实现这一目标。 首先,我们需要了解InnoDB引擎。InnoDB是MySQL数据库系统中的一个存储引擎,支持事务...
- **关闭唯一性检查**:如果插入的测试数据不需要满足唯一性约束,可以暂时禁用索引,提高插入速度,之后再重新启用。 - **调整系统参数**:如增加`innodb_buffer_pool_size`以缓存更多数据,减少磁盘I/O。 总之,...
本文主要探讨了在MySQL 5.0.22版本下针对MyISAM和InnoDB两种表类型的备份策略,以及各种备份工具和方法。 首先,MySQL支持多种备份工具,如`mysqldump`、`mysqlhotcopy`,以及SQL命令如`BACKUP TABLE`和`SELECT ...
1.1.20 可动态关闭innodb更新元数据的统计功能 37 1.2 安全性、稳定性的显著改变 38 1.2.1 复制功能加强 38 1.2.2 中继日志relay-log可自我修复 39 1.2.3 开启innodb严格检查模式 39 1.3 动态更改系统配置参数...
首先,Percona XtraBackup的最大优势在于它能够在不关闭MySQL服务的情况下对InnoDB存储引擎进行热备份。这极大地提高了备份的灵活性,因为它不会影响业务系统对外提供服务。此外,它支持增量备份,即只备份自上次...
本文将深入探讨MySQL的各种备份策略和恢复方法,特别是针对MyISAM和InnoDB这两种主要的存储引擎。 首先,MySQL提供了多种备份工具,其中最常用的是`mysqldump`。`mysqldump`通过生成SQL脚本来实现逻辑备份,这种...
其中,最显著的改进之一是引入了InnoDB存储引擎的插槽事务,提高了并发处理能力。此外,MySQL 8.0还优化了查询性能,特别是对于复杂的JOIN操作。 2. **JDBC(Java Database Connectivity)**:JDBC是Java编程语言中...
2. **关闭InnoDB快速关闭选项**: 如果你的MySQL实例使用InnoDB存储引擎,你应该在升级前关闭`innodb_fast_shutdown`选项。这可以确保在关闭数据库时进行完整的InnoDB数据和事务清理,避免潜在的数据不一致。 3. *...
直接复制InnoDB的数据文件和日志文件,但这种方法风险较高,因为需要在无锁状态下进行,且不适用于跨平台恢复。 6. 表维护 对于MyISAM表,可以进行检查和修复操作;对于InnoDB表,可以进行碎片整理和模糊检查点处理...
通过上述步骤的详细说明,我们可以清晰地了解到MySQL MHA KEEPALIVE的最佳部署方法,包括MHA的优点、主从复制的配置、MHA的安装配置与测试、Keepalived的扩展以及日常维护命令等内容。这些知识对于搭建高可用性的...
`mysqlhotcopy`工具是MySQL提供的一种快速、便捷的备份方法,尤其适用于MyISAM和ARCHIVE存储引擎的表。它可以直接拷贝数据文件,同时锁定表以防止数据修改,从而确保备份的一致性。 在使用`mysqlhotcopy`之前,需要...
5.6.17版本引入了更多的性能提升,包括查询优化器的改进、InnoDB存储引擎的增强,以及支持更大的表和索引。此外,它还提供更丰富的日志功能和备份选项。 3. **PHP 5.5.12**:PHP是一种服务器端脚本语言,特别适用于...
用户应根据业务需求选择合适的备份策略,并定期测试恢复过程以确保其可靠性。 八、故障切换与高可用性 MySQL的高可用性可以通过主从复制、群集、分布式数据库等方式实现。在主服务器出现故障时,可以快速切换到备用...
MySQL5.6.28_WIN_x86绿色免安装版是一个专为Windows 32位系统设计的便捷数据库管理系统,它省去了传统安装过程,让用户能够快速在本地环境中搭建MySQL服务器,非常适合程序员进行开发和测试时使用。这个版本的MySQL...
例如关闭死锁检测机制,此方法虽然简单直接,但属于治标不治本的临时方案,且可能导致正常业务死锁转为超时,问题核心并未得到解决。 5. InnoDB行锁机制分析:通过测试发现,在多线程环境下,MySQL的InnoDB存储引擎...