zoukankan      html  css  js  c++  java
  • 在数据库繁忙时如何快速有效的关闭MySQL服务

    如果InnoDB_buffer_size参数很大,缓冲区内的脏数据太多,那么关闭MySQL的时候
    必须把脏数据刷新到磁盘,这个过程有可能是很漫长的,从而导致关闭MySQL服务的时间过长。
    可以临时设置innodb_max_dirty_pages_pct=0,然后等到脏数据大部分都刷新到磁盘后(通过查看show engine innodb status命令输出中的Modified db pages,这个值应该很小),再手动关闭数据库。
    方法1:
    mysql>set global innodb_max_dirty_pages_pct=0;
    Query OK, 0 rows affected (0.00 sec)


    运行命令mysqladmin -uroot ext -i10 |grep dirty,检查状态变量值,等到它接近0的时候关闭它,如果是生产繁忙的系统,这个值可能会一直偏大,待innodb_max_dirty_pages的值很小时,就可以
    用mysqladmin关闭MySQL了.


    # mysqladmin -uroot ext -i10 |grep dirty
    | Innodb_buffer_pool_pages_dirty                | 0                                                |
    | Innodb_buffer_pool_bytes_dirty                | 0                                                |
    | Innodb_buffer_pool_pages_dirty                | 0                                                |
    | Innodb_buffer_pool_bytes_dirty                | 0



    方法2:

    mysql>set global innodb_fast_shutdown=2;  默认为1
    Query OK, 0 rows affected (0.00 sec)

    虽然这样可以快速关闭mysql,但启动时候需要执行更多的恢复操作.


    Innodb_fast_shutdown三个值的含义:
    Innodb_fast_shutdown告诉innodb在它关闭的时候该做什么工作。有三个值可以选择:
    0表示在innodb关闭的时候,需要purge all, merge insert buffer,flush dirty pages。这是最慢的一种关闭方式,但是restart的时候也是最快的。后面将介绍purge all,merge insert buffer,flush dirty pages这三者的含义。
    1表示在innodb关闭的时候,它不需要purge all,merge insert buffer,只需要flush dirty page。
    2表示在innodb关闭的时候,它不需要purge all,merge insert buffer,也不进行flush dirty page,只将log buffer里面的日志flush到log files。因此等下进行恢复的时候它是最耗时的。

  • 相关阅读:
    Mac OS X各版本号的历史费用和升级关系
    Openlayers2中统计图的实现
    CentOS下Redisserver安装配置
    最小生成树算法
    机器学习---支持向量机(SVM)
    Android HttpURLConnection源代码分析
    Lighttpd1.4.20源代码分析 笔记 状态机之错误处理和连接关闭
    <html>
    【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
    软件开发中的11个系统思维定律
  • 原文地址:https://www.cnblogs.com/dekevin/p/10276999.html
Copyright © 2011-2022 走看看