`

(转)测试快速关闭innodb的方法

 
阅读更多
测试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的时间
最终达到减少影响用户的时间
参考资料
分享到:
评论

相关推荐

    MyISAM引擎与InnoDB引擎性能的对比.doc

    - **事务处理**:InnoDB引擎在开启事务处理的情况下(如`innodb_flush_log_at_trx_commit=1`),其插入性能远超MyISAM引擎,这是因为InnoDB引擎能够利用事务日志快速恢复数据,减少了磁盘IO操作。 - **缓冲池大小**...

    使用innodb_force_recovery解决MySQL崩溃无法重启问题

    如果可能,最好在测试环境中先验证这种方法,避免在生产环境中造成不可逆的数据损失。 总结起来,`innodb_force_recovery`是一个在MySQL遇到严重崩溃时的应急工具,可以帮助数据库在某些情况下恢复服务,但并不能...

    MySQL禁用InnoDB引擎的方法

    然而,在某些情况下,用户可能需要禁用InnoDB引擎,例如在进行特定的性能测试、排查问题或临时避免InnoDB特有的问题。 禁用InnoDB引擎的步骤如下: 1. **确定MySQL版本**: 使用`mysql -V`命令查看MySQL的版本...

    PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】

    本教程将详细讲解如何在PHP环境下,利用InnoDB引擎快速搭建全文搜索功能,我们将借助开源搜索引擎Xunsearch来实现这一目标。 首先,我们需要了解InnoDB引擎。InnoDB是MySQL数据库系统中的一个存储引擎,支持事务...

    mysql中迅速插入百万条测试数据的方法

    - **关闭唯一性检查**:如果插入的测试数据不需要满足唯一性约束,可以暂时禁用索引,提高插入速度,之后再重新启用。 - **调整系统参数**:如增加`innodb_buffer_pool_size`以缓存更多数据,减少磁盘I/O。 总之,...

    MySQL 备份和恢复

    本文主要探讨了在MySQL 5.0.22版本下针对MyISAM和InnoDB两种表类型的备份策略,以及各种备份工具和方法。 首先,MySQL支持多种备份工具,如`mysqldump`、`mysqlhotcopy`,以及SQL命令如`BACKUP TABLE`和`SELECT ...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    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 动态更改系统配置参数...

    MySQL DBA percona-xtrabackup备份文档

    首先,Percona XtraBackup的最大优势在于它能够在不关闭MySQL服务的情况下对InnoDB存储引擎进行热备份。这极大地提高了备份的灵活性,因为它不会影响业务系统对外提供服务。此外,它支持增量备份,即只备份自上次...

    MySQL备份与恢复(PDF版)借鉴.pdf

    本文将深入探讨MySQL的各种备份策略和恢复方法,特别是针对MyISAM和InnoDB这两种主要的存储引擎。 首先,MySQL提供了多种备份工具,其中最常用的是`mysqldump`。`mysqldump`通过生成SQL脚本来实现逻辑备份,这种...

    mysql8.0架包并且带java连接的源代码

    其中,最显著的改进之一是引入了InnoDB存储引擎的插槽事务,提高了并发处理能力。此外,MySQL 8.0还优化了查询性能,特别是对于复杂的JOIN操作。 2. **JDBC(Java Database Connectivity)**:JDBC是Java编程语言中...

    Mysql小版本升级指南

    2. **关闭InnoDB快速关闭选项**: 如果你的MySQL实例使用InnoDB存储引擎,你应该在升级前关闭`innodb_fast_shutdown`选项。这可以确保在关闭数据库时进行完整的InnoDB数据和事务清理,避免潜在的数据不一致。 3. *...

    MySQL备份与恢复(PDF版).pdf

    直接复制InnoDB的数据文件和日志文件,但这种方法风险较高,因为需要在无锁状态下进行,且不适用于跨平台恢复。 6. 表维护 对于MyISAM表,可以进行检查和修复操作;对于InnoDB表,可以进行碎片整理和模糊检查点处理...

    MySQL MHA KEEPALIVE最佳部署指南

    通过上述步骤的详细说明,我们可以清晰地了解到MySQL MHA KEEPALIVE的最佳部署方法,包括MHA的优点、主从复制的配置、MHA的安装配置与测试、Keepalived的扩展以及日常维护命令等内容。这些知识对于搭建高可用性的...

    mysql的自动备份与恢复(mysqlhotcopy).pdf

    `mysqlhotcopy`工具是MySQL提供的一种快速、便捷的备份方法,尤其适用于MyISAM和ARCHIVE存储引擎的表。它可以直接拷贝数据文件,同时锁定表以防止数据修改,从而确保备份的一致性。 在使用`mysqlhotcopy`之前,需要...

    wampserver2.5-x86

    5.6.17版本引入了更多的性能提升,包括查询优化器的改进、InnoDB存储引擎的增强,以及支持更大的表和索引。此外,它还提供更丰富的日志功能和备份选项。 3. **PHP 5.5.12**:PHP是一种服务器端脚本语言,特别适用于...

    10 数据库恢复技术_MYSQL_

    用户应根据业务需求选择合适的备份策略,并定期测试恢复过程以确保其可靠性。 八、故障切换与高可用性 MySQL的高可用性可以通过主从复制、群集、分布式数据库等方式实现。在主服务器出现故障时,可以快速切换到备用...

    MySQL5.6.28_WIN_x86绿色免安装版

    MySQL5.6.28_WIN_x86绿色免安装版是一个专为Windows 32位系统设计的便捷数据库管理系统,它省去了传统安装过程,让用户能够快速在本地环境中搭建MySQL服务器,非常适合程序员进行开发和测试时使用。这个版本的MySQL...

    2013年中国数据库大会-28-秒杀场景下MySQL的低效--原因和改进

    例如关闭死锁检测机制,此方法虽然简单直接,但属于治标不治本的临时方案,且可能导致正常业务死锁转为超时,问题核心并未得到解决。 5. InnoDB行锁机制分析:通过测试发现,在多线程环境下,MySQL的InnoDB存储引擎...

Global site tag (gtag.js) - Google Analytics