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ファイル、具体的には例を見てみましょう.
XTRAを使ってLRU_DUMPはpage dataのデータをバックアップし、datadirの下でib_を生成します.lru_dump、コマンド呼び出しの仕方に注意
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のデータが失われます.
#呼び出しXTRA_LRU_RESTOREは再起動前のBPデータを復元できる
昔と同じかどうか見てみろ
Errログには次の情報が表示されます.
mysqlデータベースを再起動するたびに、メモリ内のデータは失われます.特にinnodbのBPのデータは、起動したばかりでコンカレント量が大きいと、発生したIOは推定できません.percona xtradbには、data pageデータを再ロードできる新しい特性があります.つまり、再起動前のdata pageデータを復元することができます.具体的には、2つのコマンドXTRA_LRU_DUMP、XTRA_LRU_RESTOREは、datadirディレクトリの下にib_を生成するために実行されます.lru_dumpファイル、具体的には例を見てみましょう.
- mysql> show status like 'Innodb_buffer_pool_pages_data';
- +-------------------------------+-------+
- | Variable_name | Value |
- +-------------------------------+-------+
- | Innodb_buffer_pool_pages_data | 5067 |
- +-------------------------------+-------+
- 1 row in set (0.00 sec)
XTRAを使ってLRU_DUMPはpage dataのデータをバックアップし、datadirの下でib_を生成します.lru_dump、コマンド呼び出しの仕方に注意
- mysql> select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_DUMP*/;
- +------------------------------+
- | result_message |
- +------------------------------+
- | XTRA_LRU_DUMP was succeeded. |
- +------------------------------+
- 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のデータが失われます.
- mysql> show status like 'Innodb_buffer_pool_pages_data';
- +-------------------------------+-------+
- | Variable_name | Value |
- +-------------------------------+-------+
- | Innodb_buffer_pool_pages_data | 33 |
- +-------------------------------+-------+
- 1 row in set (0.00 sec)
#呼び出しXTRA_LRU_RESTOREは再起動前のBPデータを復元できる
- mysql> select * from information_schema.XTRADB_ADMIN_COMMAND /*!XTRA_LRU_RESTORE*/;
- +---------------------------------+
- | result_message |
- +---------------------------------+
- | XTRA_LRU_RESTORE was succeeded. |
- +---------------------------------+
- 1 row in set (0.17 sec)
昔と同じかどうか見てみろ
- mysql> show status like 'Innodb_buffer_pool_pages_data';
- +-------------------------------+-------+
- | Variable_name | Value |
- +-------------------------------+-------+
- | Innodb_buffer_pool_pages_data | 5067 |
- +-------------------------------+-------+
- 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)