主にファイルサイズと処理時間を比べたいだけなので、MySQLは起動しておれどトラフィックはなし。tpcc-mysqlのWH= 100をロードしただけ。
$ du -sh /data/mysql 14G /data/mysql
データファイル意外と小さかった。。RESET MASTERしたのでバイナリーログは当然含まず。
tarボールストリーム圧縮なし
$ time innobackupex /data/mysql --stream=tar | ssh mysql@backup-server "cat - > /data/tmp/xtrabackup.tar" .. real 4m53.213s user 4m13.456s sys 0m37.721s $ ls -lh xtrabackup* -rw-rw-r-- 1 mysql mysql 8.5G May 19 16:35 xtrabackup.tar $ mkdir xtrabackup $ time tar ixf xtrabackup.tar -C xtrabackup real 0m16.243s user 0m0.163s sys 0m16.073s $ time innobackupex --apply-log xtrabackup .. real 0m45.953s user 0m0.297s sys 0m5.908s
tarボールgzip圧縮
$ time innobackupex /data/mysql --stream=tar | gzip -c | ssh mysql@backup-server "cat - > /data/tmp/xtrabackup.tar.gz" .. real 13m2.701s user 15m19.741s sys 0m28.345s $ ls -lh xtrabackup* -rw-rw-r-- 1 mysql mysql 4.8G May 19 16:58 xtrabackup.tar.gz $ mkdir xtrabackup $ time tar ixf xtrabackup.tar.gz -C xtrabackup real 1m37.648s user 1m31.823s sys 0m21.962s $ time innobackupex --apply-log xtrabackup .. real 0m44.944s user 0m0.277s sys 0m6.055s
tarボールpbzip2圧縮(8並列)
$ time innobackupex /data/mysql --stream=tar | pbzip2 -p8 -c | ssh backup-server "cat - > /data/tmp/xtrabackup.tar.bz2" .. real 3m11.137s user 27m21.804s sys 0m30.629s $ ls -lh xtrabackup* -rw-rw-r-- 1 mysql mysql 4.3G May 19 17:09 xtrabackup.tar.bz2 $ mkdir xtrabackup $ time pbzip2 -p8 -dc xtrabackup.tar.bz2 | tar ix -C xtrabackup tar: Read 2560 bytes from - real 1m24.567s user 11m18.711s sys 0m30.188s $ time innobackupex --apply-log xtrabackup .. real 0m43.918s user 0m0.291s sys 0m6.073s
xbstream圧縮なし(1並列)
$ time innobackupex /data/mysql --stream=xbstream | ssh backup-server "cat - > /data/tmp/xtrabackup.xb" .. real 5m17.412s user 4m36.084s sys 0m38.236s $ ll -h xtrabackup.* -rw-rw-r-- 1 mysql mysql 8.5G May 19 17:54 xtrabackup.xb $ mkdir xtrabackup $ time xbstream -x -C xtrabackup < xtrabackup.xb real 1m32.016s user 0m18.126s sys 0m27.725s $ time innobackupex --apply-log xtrabackup .. real 0m47.103s user 0m0.297s sys 0m6.376sxbstream圧縮あり(1並列)
$ time innobackupex /data/mysql --stream=xbstream --compress | ssh backup-server "cat - > /data/tmp/xtrabackup.xb" .. real 5m44.481s user 4m59.169s sys 0m29.153s $ ll -h xtrabackup.* -rw-rw-r-- 1 mysql mysql 6.7G May 19 18:13 xtrabackup.xb $ mkdir xtrabackup $ time xbstream -x -C xtrabackup < xtrabackup.xb real 1m11.434s user 0m14.041s sys 0m21.624s $ time innobackupex --decompress xtrabackup/ .. real 1m54.178s user 1m31.540s sys 0m24.585s $ time innobackupex --apply-log xtrabackup .. real 0m45.782s user 0m0.263s sys 0m5.995sxbstream圧縮あり(8並列)
$ time innobackupex /data/mysql --stream=xbstream --compress --compress-thread=8 --parallel=8 | ssh backup-server "cat - > /data/tmp/xtrabackup.xb" .. real 3m40.315s user 5m0.383s sys 0m26.421s $ ll -h xtrabackup.* $ time xbstream -x -C xtrabackup < xtrabackup.xb real 1m12.859s user 0m13.734s sys 0m20.157s $ time innobackupex --decompress --parallel=8 xtrabackup/ .. real 2m16.178s user 1m30.866s sys 0m24.585s $ time innobackupex --apply-log xtrabackup .. real 0m45.722s user 0m0.289s sys 0m5.997sdecompress、多重化したらむしろ遅くなっててしょぼん。 tarボール無圧縮、--compact
$ time innobackupex /data/mysql --stream=tar --compact | ssh mysql@backup-server "cat - > /data/tmp/xtrabackup.tar" .. real 4m50.256s user 4m5.120s sys 0m38.300s $ ll -h xtrabackup.* -rw-rw-r-- 1 mysql mysql 8.5G May 19 18:53 xtrabackup.tar $ time tar ixf xtrabackup.tar -C xtrabackup real 0m14.358s user 0m0.209s sys 0m13.879s $ time innobackupex --apply-log xtrabackup .. real 3m54.054s user 0m24.002s sys 0m41.084s--stream=tarでは--parallelが効かないので、ごりごりやって良いなら--stream=xbstreamでいきたいところ。 容量面でcompactが全然効いた気配がないのに、--apply-logではちゃんとExpandingになって時間がかかってなんだかなぁ。 --rebuild-threads=8とかすれば多少速くなるのかも知れないけどそこまで試すアレなし。 ところでこの--compact(セカンダリーインデックスのそぎ落とし)が効かないのって、 tpcc_loadかましたあとにALTER TABLEでインデックスつけてるのがいけないような気がしてきた。
mysql> SHOW CREATE TABLE stock\G *************************** 1. row *************************** Table: stock Create Table: CREATE TABLE `stock` ( `s_i_id` int(11) NOT NULL, `s_w_id` smallint(6) NOT NULL, `s_quantity` smallint(6) DEFAULT NULL, `s_dist_01` char(24) DEFAULT NULL, `s_dist_02` char(24) DEFAULT NULL, `s_dist_03` char(24) DEFAULT NULL, `s_dist_04` char(24) DEFAULT NULL, `s_dist_05` char(24) DEFAULT NULL, `s_dist_06` char(24) DEFAULT NULL, `s_dist_07` char(24) DEFAULT NULL, `s_dist_08` char(24) DEFAULT NULL, `s_dist_09` char(24) DEFAULT NULL, `s_dist_10` char(24) DEFAULT NULL, `s_ytd` decimal(8,0) DEFAULT NULL, `s_order_cnt` smallint(6) DEFAULT NULL, `s_remote_cnt` smallint(6) DEFAULT NULL, `s_data` varchar(50) DEFAULT NULL, PRIMARY KEY (`s_w_id`,`s_i_id`), KEY `fkey_stock_2` (`s_i_id`), CONSTRAINT `fkey_stock_1` FOREIGN KEY (`s_w_id`) REFERENCES `warehouse` (`w_id`), CONSTRAINT `fkey_stock_2` FOREIGN KEY (`s_i_id`) REFERENCES `item` (`i_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec) mysql> SHOW TABLE STATUS LIKE 'stock'\G *************************** 1. row *************************** Name: stock Engine: InnoDB Version: 10 Row_format: Compact Rows: 9793316 Avg_row_length: 354 Data_length: 3469737984 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: NULL Create_time: 2014-05-19 15:51:37 Update_time: NULL Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec) $ mysql-5.7.4-m14-linux-glibc2.5-x86_64/bin/innochecksum -S /data/tmp/mysql/tpcc/stock.ibd File::/data/tmp/mysql/tpcc/stock.ibd ================PAGE TYPE SUMMARY============== #PAGE_COUNT PAGE_TYPE =============================================== 224349 Index page 0 Undo log page 1 Inode page 0 Insert buffer free list page 1158 Freshly allocated page 14 Insert buffer bitmap 0 System page 0 Transaction system page 1 File Space Header 13 Extent descriptor page 0 BLOB page 0 Compressed BLOB page 0 Other type of page =============================================== Additional information: Undo page type: 0 insert, 0 update, 0 other Undo page state: 0 active, 0 cached, 0 to_free, 0 to_purge, 0 prepared, 0 other
なぜかindex_lengthに計上されない謎。このあたりなのかなぁ?
【2014/05/20 15:59】 計上されないのはたぶん関係ない ⇒ 日々の覚書: InnoDBオンラインALTER TABLEではIndex_lengthが更新されない
5.7.4のinnochecksumでも、セカンダリーインデックスなのかクラスターインデックス(=データページ)なのかは分けられないのかー。
取り敢えずマシンパワーがあるのあらxbstream+ pbzip2, ほそぼそやるならxbstream+ compressでいいかな。
0 件のコメント :
コメントを投稿