ログ貼ってたら長くなったので、バッファプールサイズを小さくするのは別エントリーへ。
理屈的には、
- バッファプールを大きくするとき
* innodb_buffer_pool_chunk_size ごとに新しいページを確保しながらゴニョゴニョやる
* この処理中は *バッファプールへの全てのアクセスがブロックされるよ*
- バッファプールを小さくするとき
* innodb_buffer_pool_chunk_size ごとにページを追い出しながらゴニョゴニョやる
らしい。
http://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-online-resize.html
しかしバッファプール大きくする時の動作はInnoDBのトラフィック全滅ですか使えNEEEE とか、「オンラインでバッファプールサイズを変えようと思うこと自体負けてる」とか思ってたんですが、やってみると意外と楽しかった。
ブロックされっぷりだけ判ればいいので、mysqladmin exでInnodb_rows_insertedだけ差分表示。
# mysqladmin -r -i 2 ex | grep Innodb_rows_inserted | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 12296 | -- ここからtpcc_start | Innodb_rows_inserted | 19250 | | Innodb_rows_inserted | 13717 | | Innodb_rows_inserted | 5033 | | Innodb_rows_inserted | 4990 | | Innodb_rows_inserted | 5757 | | Innodb_rows_inserted | 5301 | | Innodb_rows_inserted | 4355 | | Innodb_rows_inserted | 4835 | | Innodb_rows_inserted | 4909 | | Innodb_rows_inserted | 5161 | | Innodb_rows_inserted | 5331 | | Innodb_rows_inserted | 4907 | | Innodb_rows_inserted | 5384 | | Innodb_rows_inserted | 5047 | | Innodb_rows_inserted | 5437 | | Innodb_rows_inserted | 4922 | | Innodb_rows_inserted | 5010 | | Innodb_rows_inserted | 4827 | | Innodb_rows_inserted | 5208 | | Innodb_rows_inserted | 5543 | | Innodb_rows_inserted | 4362 | | Innodb_rows_inserted | 5460 | | Innodb_rows_inserted | 4819 | | Innodb_rows_inserted | 4555 | | Innodb_rows_inserted | 4696 | | Innodb_rows_inserted | 5047 | | Innodb_rows_inserted | 5492 | | Innodb_rows_inserted | 511 | -- SET GLOBALがここらへん | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 0 | | Innodb_rows_inserted | 3740 | | Innodb_rows_inserted | 20354 | -- ここらへんでCompleted resizing buffer pool | Innodb_rows_inserted | 20937 | | Innodb_rows_inserted | 21281 | | Innodb_rows_inserted | 21474 | | Innodb_rows_inserted | 21752 | | Innodb_rows_inserted | 19685 | | Innodb_rows_inserted | 21784 | | Innodb_rows_inserted | 22009 | | Innodb_rows_inserted | 22107 | | Innodb_rows_inserted | 21842 | ..
実際に叩いたのは↓。
mysql> SELECT @@innodb_buffer_pool_size; +---------------------------+ | @@innodb_buffer_pool_size | +---------------------------+ | 4294967296 | +---------------------------+ 1 row in set (0.00 sec) mysql> SET GLOBAL innodb_buffer_pool_size= 80 * 1024 * 1024 * 1024; Query OK, 0 rows affected (0.00 sec) mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2014-09-18 07:21:02 | +---------------------+ 1 row in set (0.00 sec) mysql> SHOW GLOBAL STATUS LIKE 'innodb_buffer_pool_resize%'; +----------------------------------+----------------------------------------------------+ | Variable_name | Value | +----------------------------------+----------------------------------------------------+ | Innodb_buffer_pool_resize_status | Completed resizing buffer pool at 140918 7:21:11. | +----------------------------------+----------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT @@innodb_buffer_pool_size; +---------------------------+ | @@innodb_buffer_pool_size | +---------------------------+ | 85899345920 | +---------------------------+ 1 row in set (0.00 sec)
ログの具合が悪いのか何なのか、エラーログにresize startedとresize completedを吐いてくれなかったので代用。
80GBの拡張でおおよそ10秒ちょいのブロック。。
これなら、オフラインにしてサイズ変えて起動してinnodb_buffer_pool_load_at_startupするのに比べて無茶苦茶早く済む。
ちょっとマジですかイケそうじゃないですか。
おまけにdstat。
# dstat -taml 5 ----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ------memory-usage----- ---load-avg--- date/time |usr sys idl wai hiq siq| read writ| recv send| in out | int csw | used buff cach free| 1m 5m 15m 18-09 07:19:07| 0 0 100 0 0 0| 0 0 |1038B 7824B| 0 0 | 87 103 |2615M 142M 66.0G 51.1G| 0 1.49 5.27 18-09 07:19:12| 0 0 100 0 0 0| 0 0 |1260B 10k| 0 0 | 94 109 |2615M 142M 66.0G 51.1G| 0 1.46 5.24 18-09 07:19:17| 0 0 100 0 0 0|1797k 0 | 492B 1935B| 0 0 | 381 238 |2619M 145M 66.0G 51.1G| 0 1.44 5.21 ### mysqldの起動がこのへん 18-09 07:19:22| 0 0 100 0 0 0| 0 18k|1176B 1831B| 0 0 | 160 235 |2619M 145M 66.0G 51.1G| 0 1.42 5.19 18-09 07:19:27| 0 0 100 0 0 0| 19k 13k| 306B 397B| 0 0 | 75 85 |2619M 145M 66.0G 51.1G| 0 1.39 5.16 18-09 07:19:32| 0 0 100 0 0 0| 0 19k| 246B 1557B| 0 0 | 80 84 |2616M 145M 66.0G 51.1G| 0 1.37 5.13 ### このへんでtpcc_start 18-09 07:19:37| 0 1 99 0 0 0| 592k 34k| 474B 987B| 0 0 |1031 845 |3231M 145M 66.0G 50.5G| 0 1.35 5.10 18-09 07:19:42| 1 0 99 0 0 0| 474k 11M| 330B 3324B| 0 0 | 651 731 |3507M 145M 66.0G 50.2G| 0 1.32 5.08 18-09 07:19:47| 0 0 100 0 0 0| 582k 13M| 174B 1327B| 0 0 | 906 1099 |3532M 145M 66.0G 50.2G| 0 1.30 5.05 18-09 07:19:52| 0 0 100 0 0 0| 627k 13M| 204B 965B| 0 0 | 911 1119 |3558M 145M 66.0G 50.2G| 0 1.28 5.02 18-09 07:19:57| 0 0 100 0 0 0| 646k 13M| 246B 498B| 0 0 | 862 1097 |3581M 145M 66.0G 50.2G| 0 1.26 4.99 18-09 07:20:02| 0 0 100 0 0 0| 525k 13M|1332B 687B| 0 0 | 968 1198 |3604M 145M 66.0G 50.1G| 0 1.24 4.97 ### ここらへんでSET GLBOAL 18-09 07:20:07| 43 11 44 2 1 0| 78M 26M| 240B 1512B| 0 0 | 63k 187k|6545M 145M 66.3G 47.0G|1.12 1.45 5.02 18-09 07:20:12| 30 7 55 7 1 0| 60M 227M| 36B 121B| 0 0 | 94k 181k|7662M 145M 66.4G 45.8G|1.19 1.46 5.00 ### ここらへんでCompleted resizing buffer pool 18-09 07:20:17| 15 4 71 9 1 0| 36M 276M| 24B 81B| 0 0 | 101k 140k|7662M 145M 66.6G 45.7G|1.42 1.50 4.99 18-09 07:20:22| 11 3 77 9 1 0| 27M 230M| 198B 208B| 0 0 | 83k 112k|7664M 145M 66.6G 45.6G|1.79 1.58 5.00 ..
おもしろーい :)
0 件のコメント :
コメントを投稿