Not the answer you need?
Register and ask your own question!

Can't get Percona 5.6 to go into "waiting for server activity" state

SQLGuySQLGuy ContributorCurrent User Role Beginner
For years we've been successfully taking LVM snapshots (actually SAN snapshots) on our MySQL 5.1 slave using the following scripted method:
  1. stop slave;
  2. set global innodb_max_dirty_pages_pct = 0;
  3. flush tables with read lock;
  4. (wait for the server to go into "waiting for server activity" mode as seen in the "show engine innodb status" output)
  5. LVM/SAN snapshot taken here
  6. unlock tables;
  7. set global innodb_max_dirty_pages_pct = 90; (by default this is 90 in MySQL 5.1, but 75 in MySQL 5.6)
  8. start slave;

We got the directions above from Andrew Atkinson's post at the bottom of this article: http://dev.mysql.com/doc/refman/5.6/en/lock-tables.html

So... We are now upgrading to 5.6 but we have the following problem: Step 4 above never happens. It only goes to the generic "sleeping" state. I have never been able to quiesce the 5.6 server enough to see the "waiting for server activity" state. Is that still a valid state in Percona 5.6? I googled for an hour and could not find any solid info on that.

Can we safely change Step 4 to look for the global status of "innodb_buffer_pool_pages_dirty" to go down to 0 instead?

Comments

  • SQLGuySQLGuy Contributor Current User Role Beginner
    No responses? Is anyone here quiescing 5.6 to do LVM or SAN based snapshots on a "live" system? If so, how do you "quiesce" mysql 5.6?
  • miguelangelnietomiguelangelnieto Member Inactive User Role Beginner
    This is what I understand from the source code... When master thread has no tasks to do, it enters the "sleeping" mode. On that mode it waits one second and then checks again if there is something to do. Then, go back to "sleeping". I guess from that code that you won't see "waiting for server activity". Checking innodb_buffer_pool_pages_dirty but you really need to do some restore tests to check if everything is correct.

    /*********************************************************************//**
    Puts master thread to sleep. At this point we are using polling to
    service various activities. Master thread sleeps for one second before
    checking the state of the server again */
    static
    void
    srv_master_sleep(void)
    /*==================*/
    {
    srv_main_thread_op_info = "sleeping";
    os_thread_sleep(1000000);
    srv_main_thread_op_info = "";
    }
Sign In or Register to comment.

MySQL, InnoDB, MariaDB and MongoDB are trademarks of their respective owners.
Copyright ©2005 - 2020 Percona LLC. All rights reserved.