innodbのbuffer poolのdata pageを失わないにはどうすればいいですか?


前言
mysqlデータベースを再起動するたびに、メモリ内のデータは失われます.特にinnodbのBPのデータは、起動したばかりでコンカレント量が大きいと、発生したIOは推定できません.percona xtradbには、data pageデータを再ロードできる新しい特性があります.つまり、再起動前のdata pageデータを復元することができます.具体的には、2つのコマンドXTRA_LRU_DUMP、XTRA_LRU_RESTOREは、datadirディレクトリの下にib_を生成するために実行されます.lru_dumpファイル、具体的には例を見てみましょう.

  
  
  
  
  1. mysql> show status like 'Innodb_buffer_pool_pages_data'
  2. +-------------------------------+-------+ 
  3. | Variable_name                 | Value | 
  4. +-------------------------------+-------+ 
  5. | Innodb_buffer_pool_pages_data | 5067  | 
  6. +-------------------------------+-------+ 
  7. 1 row in set (0.00 sec) 

XTRAを使ってLRU_DUMPはpage dataのデータをバックアップし、datadirの下でib_を生成します.lru_dump、コマンド呼び出しの仕方に注意

  
  
  
  
  1. mysql> select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/; 
  2. +------------------------------+ 
  3. | result_message               | 
  4. +------------------------------+ 
  5. | XTRA_LRU_DUMP was succeeded. | 
  6. +------------------------------+ 
  7. 1 row in set (0.00 sec) 

mysql> quit Bye [root@localhost swd]#/etc/init.d/mysqld restart Shutting down MySQL....                                    [  OK  ] Starting MySQL..                                           [  OK  ] [root@localhost swd]# mysql Welcome to the MySQL monitor.  Commands end with ; or\g. Your MySQL connection id is 1 Server version: 5.1.45-XinYing-log Test Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. #データベースを再起動すると、BPのデータが失われます.

  
  
  
  
  1. mysql> show status like 'Innodb_buffer_pool_pages_data'
  2. +-------------------------------+-------+ 
  3. | Variable_name                 | Value | 
  4. +-------------------------------+-------+ 
  5. | Innodb_buffer_pool_pages_data | 33    | 
  6. +-------------------------------+-------+ 
  7. 1 row in set (0.00 sec) 

#呼び出しXTRA_LRU_RESTOREは再起動前のBPデータを復元できる

  
  
  
  
  1. mysql> select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_RESTORE*/; 
  2. +---------------------------------+ 
  3. | result_message                  | 
  4. +---------------------------------+ 
  5. | XTRA_LRU_RESTORE was succeeded. | 
  6. +---------------------------------+ 
  7. 1 row in set (0.17 sec) 

昔と同じかどうか見てみろ

  
  
  
  
  1. mysql> show status like 'Innodb_buffer_pool_pages_data'
  2. +-------------------------------+-------+ 
  3. | Variable_name                 | Value | 
  4. +-------------------------------+-------+ 
  5. | Innodb_buffer_pool_pages_data | 5067  | 
  6. +-------------------------------+-------+ 
  7. 1 row in set (0.00 sec) 

Errログには次の情報が表示されます.

091217 11:49:16 InnoDB: administration command 'XTRA_LRU_DUMP' was detected.
....
091217 11:51:44 InnoDB: administration command 'XTRA_LRU_RESTORE' was detected.
091217 11:51:45 InnoDB: reading pages based on the dumped LRU list was done. (requested: 6231, read: 6209)